if/else [RESOLVIDO]

1. if/else [RESOLVIDO]

william jussim
jussim

(usa Ubuntu)

Enviado em 10/07/2011 - 17:23h

pessoal estou começando a ter aulas de algoritimo.
estava vendo um exercicio simples de cadastro de clientes, era para saber se fosse pessoa fisica ai pediria cpf e se fosse pessoa juridica cnpj e inscrição estadual se tivesse.

montei o codigo e rodou legal, ma na hora de printar na tela o cpf e o cnpj vem com o numero 2293472 qual seria o erro e a solução?

muito obrigado pela ajuda para ajudar uso o compilador DEV-C e o meu código esta abaixo:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

main ()
{
char nome[80];
int cad_pess;
int cpf[11];
int cnpj[14];
char ie2;
int ie;

printf ("\n\n\t\t\t\tCadastro de Cliente");

printf ("\n\n\t\tDigite seu nome: ");
scanf ("%s",&nome);

printf ("\n\n\tDigite 1 para CPF ou 2 para CNPJ: ");
scanf ("%i",&cad_pess);

if (cad_pess<2)
{
printf ("\n\n\t Digite seu CPF: ");
scanf ("%i",&cpf);
printf ("\n\n\t%s,\n\n\tCPF Numero: %i",nome,cpf);
}

else
{
printf ("\n\n\tDigite o CNPJ da empresa: ");
scanf ("%i",&cnpj);

printf ("\n\n\tDigite '3' se voce possuir inscrição estadual ou '4' se for insento: ");
scanf ("%s",&ie2);

if (ie2<4)
{
printf ("\n\n\tDigite o numero de sua IE: ");
scanf ("%i",&ie);



printf ("\n\n\tEmpresa: %s, CNPJ Nº: %i, IE Nº: %i",nome,cnpj,ie);
printf ("\n\n\tCadastro realizado com sucesso");

}

else
{
printf ("\n\n\tEmpresa: %s, CNPJ Numero: %i",nome,cnpj);
printf ("\n\n\tCadastro realizado com sucesso");
}
}

getch ();
}







  


2. MELHOR RESPOSTA

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 21:26h

Aqui ficou assim (testei todas as opções e está ok agora):

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
main ()
{
char nome[80];
int cad_pess;
char cpf[12];
char cnpj[15];
int ie2;
char ie[15];
system ("color 1f");
printf ("\n\n\t\t\t\tCadastro de Cliente");
printf ("\n\n\t\tDigite seu nome: ");
scanf ("%s",&nome);
printf ("\n\n\tDigite 1 para CPF ou 2 para CNPJ: ");
scanf ("%i",&cad_pess);
if (cad_pess==1)
{
printf ("\n\n\t Digite seu CPF: ");
scanf ("%s",&cpf);
printf ("\n\n\t%s,\n\n\tCPF Numero: %s",nome,cpf);
}
else
{
printf ("\n\n\tDigite o CNPJ da empresa: ");
scanf ("%s",&cnpj);
printf ("\n\n\tDigite '3' se voce possuir inscrição estadual ou '4' se for insento: ");
scanf ("%i",&ie2);
if (ie2==3)
{
printf ("\n\n\tDigite o numero de sua IE: ");
scanf ("%s",&ie);
printf ("\n\n\tEmpresa: %s, CNPJ Nº: %s, IE Nº: %s",nome,cnpj,ie);
printf ("\n\n\tCadastro realizado com sucesso");
}
else
{
printf ("\n\n\tEmpresa: %s, CNPJ Numero: %s",nome,cnpj);
printf ("\n\n\tCadastro realizado com sucesso");
}
}
getch ();
}

Nesse tópico ( http://vivaolinux.com.br/topico/C-C++/Uso-da-funcao-system-()-no-GNU-Linux ), tem um programa de cadastro tbm, se quiser pegá-lo e modificá-lo fique à vontade :)

3. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 17:58h

na declaração de variáveis:

char nome[80];
int cad_pess;
int cpf=11;
int cnpj=14;
char ie2;
int ie;

Assim é posto valores nas variáveis, isso não é preciso:

char nome[80], ie2;
int cpf, cnpj, ie;

Depois:

printf ("\n\n\tDigite '3' se voce possuir inscrição estadual ou '4' se for insento: ");
scanf ("%s",&ie2);

if (ie2=='3')

ie2 está como char, é necessário então as aspas simples. Outra vc tinha posto:

if (ie2<4)

mas havia duas opções e elas eram menores que tres, o programa não faria o que vc pede:

printf ("\n\n\tDigite '3' se voce possuir inscrição estadual ou '4' se for insento: ");

Tbm não é necessário as bibliotecas string e stdlib




4. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 18:11h

#include <stdio.h>
#include <conio.h>
main ()
{
char nome[80], ie2;
int cad_pess, cpf, cnpj, ie;
printf ("\n\n\t\t\t\tCadastro de Cliente");
printf ("\n\n\t\tDigite seu nome: ");
scanf ("%s",&nome);
printf ("\n\n\tDigite 1 para CPF ou 2 para CNPJ: ");
scanf ("%i",&cad_pess);
if (cad_pess==1)
{
printf ("\n\n\t Digite seu CPF: ");
scanf ("%i",&cpf);
printf ("\n\n\t%s,\n\n\tCPF Numero: %i",nome,cpf);
}else{
printf ("\n\n\tDigite o CNPJ da empresa: ");
scanf ("%i",&cnpj);
printf ("\n\n\tDigite '3' se voce possuir inscricao estadual ou '4' se for insento: ");
scanf ("%s",&ie2);
if (ie2=='3')
{
printf ("\n\n\tDigite o numero de sua IE: ");
scanf ("%i",&ie);
printf ("\n\n\tEmpresa: %s, CNPJ N: %i, IE N: %i",nome,cnpj,ie);
printf ("\n\n\tCadastro realizado com sucesso");
}else{
printf ("\n\n\tEmpresa: %s, CNPJ Numero: %i",nome,cnpj);
printf ("\n\n\tCadastro realizado com sucesso");
}
}
getch ();
}


Espero ter ajudado!


5. Re: if/else [RESOLVIDO]

william jussim
jussim

(usa Ubuntu)

Enviado em 10/07/2011 - 18:21h

pessoal agradeço muito aos dois pela ajuda mas o problema continua
o código continua fazendo a mesma função e dando o mesmo erro.
ele me dá uma numeração totalmente diferente da armazenada


6. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 18:31h

Vc compilou o programa, o que eu postei ai em cima?

Aqui ele tá rodando normal..

====================

aos dois?!?


7. Re: if/else [RESOLVIDO]

william jussim
jussim

(usa Ubuntu)

Enviado em 10/07/2011 - 18:43h

sim, usei ele e deu a mesma coisa que o meu dava.
o programa roda normalmente apenas os numeros do CPF E CNPJ que dão numeração errada

========================================

os dois estão dando o mesmo erro (os tres incluindo o meu)


8. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 19:20h

bom.. dá erro mesmo, mas quando vc coloca números maiores que tem mais de 11 algarismos, to vendo aqui o que pode ser..

==============
Pode ser em c++, não?


9. Re: if/else [RESOLVIDO]

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 10/07/2011 - 19:33h

Deve ser isso mesmo Jose. O CPF/CNPJ de teste do jussim deve tá dando overflow no int assim o resultado não sai corretamente na tela.

Eu acharia melhor ler o CPF/CNPJ em uma string para não ter esse problema...

t+


10. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 19:35h

O problema está com o scanf ele deve ler %i

=================================================================
Agora parece que resolvi:

#include <stdio.h>
#include <conio.h>
main ()
{
char nome[80], ie2, cpf[12], cnpj[15];
int cad_pess, ie;
printf ("\n\n\t\t\t\tCadastro de Cliente");
printf ("\n\n\t\tDigite seu nome: ");
scanf ("%s",&nome);
printf ("\n\n\tDigite 1 para CPF ou 2 para CNPJ: ");
scanf ("%i",&cad_pess);
if (cad_pess==1)
{
printf ("\n\n\t Digite seu CPF: ");
scanf ("%s",&cpf);
printf ("\n\n\t%s,\n\n\tCPF Numero: %s",nome,cpf);
}else{
printf ("\n\n\tDigite o CNPJ da empresa: ");
scanf ("%s",&cnpj);
printf ("\n\n\tDigite '3' se voce possuir inscricao estadual ou '4' se for insento: ");
scanf ("%s",&ie2);
if (ie2=='3')
{
printf ("\n\n\tDigite o numero de sua IE: ");
scanf ("%i",&ie);
printf ("\n\n\tEmpresa: %s, CNPJ N: %s, IE N: %i",nome,cnpj,ie);
printf ("\n\n\tCadastro realizado com sucesso");
}else{
printf ("\n\n\tEmpresa: %s, CNPJ Numero: %s",nome,cnpj);
printf ("\n\n\tCadastro realizado com sucesso");
}
}
getch ();
}


11. Re: if/else [RESOLVIDO]

william jussim
jussim

(usa Ubuntu)

Enviado em 10/07/2011 - 19:44h

coloquei como string porém deu erro um poco anes de finalizar


12. Re: if/else [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 10/07/2011 - 19:47h

coloquei cpf e cnpj como char e no scanf %s, por ser uma cadeia de caracteres

vlw daemonio!



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts