Ir ao conteúdo
  • Cadastre-se

C Informações não estão sendo exibidas


Nerociffer

Posts recomendados

Galerinha do bem, estou montando um programa para um trabalho de escola, mas estou tendo dificuldades, depois realizar o cadastro, não consigo exibi-lo na parte parte do caso 4 (case 4) que apenas exibiria os dados, simplesmente não aparece, alguém sabe me dizer porque ?

segue o código:

#include<stdio.h>
#include<stdlib.h>
#include <locale.h>


void imprimeCabecalho()
{ 
    printf("--------------------------------------------------------------------\n");system("color 0a");
    printf("-------------------------Legal Rent a Car---------------------------\n");system("color 0a");
    printf("--------------------------------------------------------------------\n\n");system("color 0a");
    return;
}
    

int menu()
{
    int opcao;
    do{
       printf("Bem vindo \n");
       printf("1-Carros disponiveis \n");
       printf("2-Cadastro do cliente  \n");
       printf("3-Devolução do veiculo \n");
       printf("4-Alterar dados\n");
       printf("5-Cadastrar veiculo\n");
       printf("6-Sair do sistema \n");
       printf("Opção: ");
       scanf("%i", &opcao);
    }while(opcao<=0 || opcao >6);
    return opcao;
}

struct cadastrocli
    {
            char nome[50];
            char rg[20];
            char cpf[20];
            char endereco[50];
            char cnh[20];
            char telefone[20];
    };

struct cadastroCarro
    {
            char nomedoveiculo[50];
            char placa[20];
            char cor[20];
    };

int main()
{
    setlocale(LC_ALL,"portuguese");
    int resultado;
    int controle;
    
    int opcao = menu();
    system("color FC");
    imprimeCabecalho();
    
    struct cadastrocli cadastro;
    struct cadastroCarro car;

    switch(opcao)
    {
        case 1:
            printf("\n ---------Exibindo informações Do Carro----------\n\n");
            printf("Nome Do carro.....:%s \n", car.nomedoveiculo);
            printf("Placa.......:%s \n", car.placa);
            printf("Cor......:%s \n", car.cor);
            system("pause");
            system("cls");
            opcao=menu();
            break;
        case 2:
            system("cls");
            getchar();
            printf("\n-----------------CADASTRO---------------- \n\n");
            printf("Nome do cliente:\n");
            fflush(stdin);
            gets(cadastro.nome);
            
            printf("RG do cliente:\n");
            fflush(stdin);
            gets(cadastro.rg);
            
            printf("CPF do cliente: \n");
            fflush(stdin);
            gets(cadastro.cpf);
            
            printf("Endereço do cliente: \n");
            fflush(stdin);
            gets(cadastro.endereco);
            
            printf("CNH do cliente: \n");
            fflush(stdin);
            gets(cadastro.cnh);
            
            printf("Telefone:  \n");
            fflush(stdin);
            gets(cadastro.telefone);
            system("cls");
            
            printf("\n ---------Exibindo informações ----------\n\n");
            printf("Nome.....:%s \n", cadastro.nome);
            printf("RG.......:%s \n", cadastro.rg);
            printf("CPF......:%s \n", cadastro.cpf);
            printf("Endereço.:%s \n", cadastro.endereco);
            printf("CNH......:%s \n", cadastro.cnh);
            printf("Contato:.:%s \n", cadastro.telefone);
            opcao=menu();
        case 3:

            break;
        case 4:    //
            printf("Exibindo informações:\n");
            printf("Nome.....:%s \n", cadastro.nome);
            printf("RG.......:%s \n", cadastro.rg);
            printf("CPF......:%s \n", cadastro.cpf);
            printf("Endereço.:%s \n", cadastro.endereco);
            printf("CNH......:%s \n", cadastro.cnh);
            printf("Contato:.:%s \n", cadastro.telefone);
            break;
            opcao=menu();
        case 5:
        system("cls");
            getchar();
            printf("\n-----------------CADASTRO---------------- \n\n");
            printf("Nome do carro:\n");
            gets(car.nomedoveiculo);
            
            printf("Placa do Carro:\n");
            fflush(stdin);
            gets(car.placa);
            
            printf("Cor: \n");
            gets(car.cor);
            
            printf("\n ---------Exibindo informações Do Carro----------\n\n");
            printf("Nome Do carro.....:%s \n", car.nomedoveiculo);
            printf("Placa.......:%s \n", car.placa);
            printf("Cor......:%s \n", car.cor);
            system ("pause");
            system("cls");        
            opcao=menu();
            
            
        default:
            opcao=menu();
            break;
    }
    return 0;
}    

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Nerociffer não tenho muito o que comentar no seu código, pelo menos da forma como foi postado, veja:


 

case 4:
...
1 - printf("Contato:.:%s \n", cadastro.telefone);
2 - break;
3 - opcao=menu();

 

Na 2 e 3 estão trocadas.

 

 

Agora peço que poste o código usando o símbolo <>, assim posso dar uma resposta melhor. Já que alguns dados somem quando você simplesmente joga o código no texto.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Desculpe, é a primeira vez q faço perguntas aqui sobre isso.

#include<stdio.h>
#include<stdlib.h>
#include <locale.h>


void imprimeCabecalho()
{ 
	printf("--------------------------------------------------------------------\n");system("color 0a");
	printf("-------------------------Legal Rent a Car---------------------------\n");system("color 0a");
	printf("--------------------------------------------------------------------\n\n");system("color 0a");
	return;
}

int nomevet()
{
	char nome[100][50];
	int i=1;
	int quant;
	
	printf("quantos nomes deseja usar:\n");
	scanf("%d",&quant);
	
	for(i=0;i<quant;i++)
	{
		printf("digite o nome");
		scanf("%s",&nome[i]);
	}
	
	for(i=0;i<quant;i++)
	{
		printf("nome %s",nome[i]);
	}
	return nome[100][50];
}
	

int menu()
{
    int opcao;
    do{
       printf("Bem vindo \n");
       printf("1-Carros disponiveis \n");
       printf("2-Cadastro do cliente  \n");
       printf("3-Devolução do veiculo \n");
       printf("4-Alterar dados\n");
       printf("5-Cadastrar veiculo\n");
       printf("6-Sair do sistema \n");
       printf("Opção: ");
       scanf("%i", &opcao);
    }while(opcao<=0 || opcao >6);
	return opcao;
}

struct cadastrocli
	{
			char nome[50];
			char rg[20];
			char cpf[20];
			char endereco[50];
			char cnh[20];
			char telefone[20];
	};

struct cadastroCarro
	{
			char nomedoveiculo[50];
			char placa[20];
			char cor[20];
	};



int main()
{//puxar cadastro para,associar o carro ao usuario,adicionar mais informações,condições especiais s/n
	setlocale(LC_ALL,"portuguese");
	int resultado;
	int controle;
	char nome[100][50];
	int j=1;
	int quant;
	int nomevet;
	
	int opcao = menu();
	system("color FC");
	imprimeCabecalho();
	
	struct cadastrocli cadastro;
	struct cadastroCarro car;

	switch(opcao)
	{
		case 1:
			printf("\n ---------Exibindo informações Do Carro----------\n\n");
			printf("Nome Do carro.....:%s \n", car.nomedoveiculo);
			printf("Placa.......:%s \n", car.placa);
			printf("Cor......:%s \n", car.cor);
			system("pause");
			system("cls");
			opcao=menu();
			break;
		case 2:
			system("cls");
			getchar();
			printf("\n-----------------CADASTRO---------------- \n\n");
			printf("Nome do cliente:\n");
			fflush(stdin);
			gets(cadastro.nome);
			
			printf("RG do cliente:\n");
			fflush(stdin);
			gets(cadastro.rg);
			
			printf("CPF do cliente: \n");
			fflush(stdin);
			gets(cadastro.cpf);
			
			printf("Endereço do cliente: \n");
			fflush(stdin);
			gets(cadastro.endereco);
			
			printf("CNH do cliente: \n");
			fflush(stdin);
			gets(cadastro.cnh);
			
			printf("Telefone:  \n");
			fflush(stdin);
			gets(cadastro.telefone);
			system("cls");
			
			printf("\n ---------Exibindo informações ----------\n\n");
			printf("Nome.....:%s \n", cadastro.nome);
			printf("RG.......:%s \n", cadastro.rg);
			printf("CPF......:%s \n", cadastro.cpf);
			printf("Endereço.:%s \n", cadastro.endereco);
			printf("CNH......:%s \n", cadastro.cnh);
			printf("Contato:.:%s \n", cadastro.telefone);
			opcao=menu();
		case 3:

			break;
		case 4:	//
			printf("Exibindo informações:\n");
			printf("Nome.....:%s \n", cadastro.nome);
			printf("RG.......:%s \n", cadastro.rg);
			printf("CPF......:%s \n", cadastro.cpf);
			printf("Endereço.:%s \n", cadastro.endereco);
			printf("CNH......:%s \n", cadastro.cnh);
			printf("Contato:.:%s \n", cadastro.telefone);
			opcao=menu();
			break;
		case 5:
		system("cls");
			getchar();
			printf("\n-----------------CADASTRO---------------- \n\n");
			printf("Nome do carro:\n");
			gets(car.nomedoveiculo);
			
			printf("Placa do Carro:\n");
			fflush(stdin);
			gets(car.placa);
			
			printf("Cor: \n");
			gets(car.cor);
			
			printf("\n ---------Exibindo informações Do Carro----------\n\n");
			printf("Nome Do carro.....:%s \n", car.nomedoveiculo);
			printf("Placa.......:%s \n", car.placa);
			printf("Cor......:%s \n", car.cor);
			system ("pause");
			system("cls");		
			opcao=menu();
			
			
		default:
			opcao=menu();
			break;
	}
	return 0;
}	
	
	

Consertei o erro apotando, obrigado.
O problema é que mesmo assim, após eu fazer o cadastro no case 2, as informações não são exibidas no case 4. Dentro do case 4 está apenas um printf do que foi digitado no case 2, mas quando entro lá o programa para, não sei porque :/

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Nerociffer Não está sendo exibido por que você não esta colocando dentro de um loop, toda vez que receber uma opção escolhida do menu, você precisa mandar para o switch. Assim

 

1-> while

2---> opcao = menu

3---> switch(opção){}

4-> fim while

adicionado 1 minuto depois

No caso, você apenas manda uma vez para o switch, e na segunda vez que aparece o menu, você não faz nada com a variável opção e finaliza o programa.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Nerociffer    sim você precisa colocar um loop para repetir os comandos ,  melhor usar o do while assim :

int main()
{/*//puxar cadastro para,associar o carro ao usuario,adicionar mais informações,condições especiais s/n*/
	setlocale(LC_ALL,"");
	int resultado;
	int controle;
	char nome[100][50],op;
	int j=1,opcao;
	int quant,cont=0,cont_car=0;
	int nomevet;
do{
	opcao = menu();
	system("color FC");
	imprimeCabecalho();

e no final antes do return 0; coloque assim :

e dentro do switch remova esse comando aqui  opcao=menu;

		default:
			/*opcao=menu();*/
			break;
	}
}while(opcao!=6);
	return 0;
}

com isso o programa vai funcionar do jeito certo, mas você só pode cadastrar apenas um cliente e um carro, pois lá no :

struct cadastrocli cadastro[100];
struct cadastroCarro car[100];

você não colocou a quantidade de cadastro que poderá usar, aqui coloquei 100 para poder cadastrar até 100 clientes e carros, e você precisará de uma variável para controlar a quantidade de clientes e outra para a quantidade de carros.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Muito obrigado, me ajudou bastante, consegui resolver o problema do while e de quebra tu me ajudou com a quantidade de cadastros :) 
Meu único problema agora é que eu preciso gerar um número para cada cadastro, para alterar a associar ao carro alugado, se tiver alguma sugestão ficarei agradecido.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Nerociffer    use essas variáveis que coloquei no exemplo , o cont para os clientes e o cont_car para a quantidade de carros então para cada cliente cadastrado aumente o valor de cont em hum e para cada carro cadastrado aumente o valor de cont_car .

   seu código com algumas modificações ficaria assim :

#include<stdio.h>
#include<stdlib.h>
#include <locale.h>
void imprimeCabecalho()
{
    system("color 0a");
    system("cls");
	printf("--------------------------------------------------------------------\n");/*system("color 0a");*/
	printf("-------------------------Legal Rent a Car---------------------------\n");/*system("color 0a");*/
	printf("--------------------------------------------------------------------\n\n");/*system("color 0a");*/
	return;
}

int nomevet()
{
	char nome[100][50];
	int i=1;
	int quant;

	printf("quantos nomes deseja usar:\n");
	scanf("%d",&quant);

	for(i=0;i<quant;i++)
	{
		printf("digite o nome");
		scanf("%s",&nome[i]);
	}

	for(i=0;i<quant;i++)
	{
		printf("nome %s",nome[i]);
	}
	return nome[100][50];
}


int menu()
{
    int opcao;
    do{
       printf("Bem vindo \n");
       printf("1-Carros disponiveis \n");
       printf("2-Cadastro do cliente  \n");
       printf("3-Devolução do veiculo \n");
       printf("4-Alterar dados\n");
       printf("5-Cadastrar veiculo\n");
       printf("6-Sair do sistema \n");
       printf("Opção: ");
       scanf("%i", &opcao);
    }while(opcao<=0 || opcao >6);
	return opcao;
}

struct cadastrocli
	{
			char nome[50];
			char rg[20];
			char cpf[20];
			char endereco[50];
			char cnh[20];
			char telefone[20];
	};

struct cadastroCarro
	{
			char nomedoveiculo[50];
			char placa[20];
			char cor[20];
	};



int main()
{/*//puxar cadastro para,associar o carro ao usuario,adicionar mais informações,condições especiais s/n*/
	setlocale(LC_ALL,"");
	int resultado;
	int controle;
	char nome[100][50],op;
	int j=1,opcao;
	int quant,cont=0,cont_car=0;
	int nomevet;
	struct cadastrocli cadastro[100];
	struct cadastroCarro car[100];
do{
    system("color FC");
	opcao = menu();
	/*imprimeCabecalho();*/

	switch(opcao)
	{
		case 1:
		    for(j=0;j<cont_car;j++){
			printf("\n ---------Exibindo informações Do Carro----------\n\n");
			printf("Nome Do carro.....:%s \n", car[j].nomedoveiculo);
			printf("Placa.............:%s \n", car[j].placa);
			printf("Cor...............:%s \n", car[j].cor);
			system("pause");
			system("cls");
		    }
			/*opcao=menu();*/
			break;
		case 2:
		    do{
                op='s';
			    system("cls");
			    imprimeCabecalho();
			    getchar();
			    printf("\n-----------------CADASTRO---------------- \n\n");
			    printf("Nome do cliente:\n");
			    fflush(stdin);
			    gets(cadastro[cont].nome);

			    printf("RG do cliente:\n");
			    fflush(stdin);
			    gets(cadastro[cont].rg);

			    printf("CPF do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].cpf);

			    printf("Endereço do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].endereco);

			    printf("CNH do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].cnh);

			    printf("Telefone:  \n");
			    fflush(stdin);
			    gets(cadastro[cont].telefone);
			    system("cls");

			    printf("\n ---------Exibindo informações ----------\n\n");
			    printf("Nome.....:%s \n", cadastro[cont].nome);
			    printf("RG.......:%s \n", cadastro[cont].rg);
			    printf("CPF......:%s \n", cadastro[cont].cpf);
			    printf("Endereço.:%s \n", cadastro[cont].endereco);
			    printf("CNH......:%s \n", cadastro[cont].cnh);
			    printf("Contato:.:%s \n", cadastro[cont].telefone);
			    cont++;
			    printf("\nQuer Cadastrar Outro Cliente  S/N ");
			    scanf("%c",&op);
		    }while(op!='n');
			break;
			/*opcao=menu();*/
		case 3:

			break;
		case 4:
		    for(j=0;j<cont;j++){
			    printf("Exibindo informações:\n");
			    printf("Nome.....:%s \n", cadastro[j].nome);
			    printf("RG.......:%s \n", cadastro[j].rg);
			    printf("CPF......:%s \n", cadastro[j].cpf);
			    printf("Endereço.:%s \n", cadastro[j].endereco);
			    printf("CNH......:%s \n", cadastro[j].cnh);
			    printf("Contato:.:%s \n", cadastro[j].telefone);
			    printf("Tecle\n\n");
			    getch();
		    }
			/*opcao=menu();*/
			break;
		case 5:
		    do{
		        system("cls");
			    getchar();
			    printf("\n-----------------CADASTRO---------------- \n\n");
			    printf("Nome do carro:\n");
			    gets(car[cont_car].nomedoveiculo);

			    printf("Placa do Carro:\n");
			    fflush(stdin);
                gets(car[cont_car].placa);

			    printf("Cor: \n");
			    gets(car[cont_car].cor);

			    printf("\n ---------Exibindo informações Do Carro----------\n\n");
			    printf("Nome Do carro.....:%s \n", car[cont_car].nomedoveiculo);
			    printf("Placa.............:%s \n", car[cont_car].placa);
			    printf("Cor...............:%s \n", car[cont_car].cor);
			    cont_car++;
			    /*system ("pause");
			    system("cls");*/
			    printf("Quer Cadastrar Outro Carro  S/N ");
			    scanf("%c",&op);
		    }while(op!='n');
			break;
			/*opcao=menu();*/
		default:
			/*opcao=menu();*/
			break;
	}
}while(opcao!=6);
	return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Entendi a parte do for, obrigado pela dica. Eu estou tentando montar um jeito de puxar um determinado cadastro por um número, por exemplo: eu criei um int dentro da estrutura de cadastro, esse int a pessoa vai digitar entre 1 e 20 (exemplo), e então na hora de buscar o cadastro preciso criar um jeito de percorrer esse vetor para puxar um cadastro, poderia me dar um exemplo de como eu poderia percorrer esse vetor ? estou tendo dificuldades nisso, ainda não tive aulas suficientes para isso.

Além disso, quando coloco int na struct ele está me retornando um ponteiro, ainda não tive aulas de ponteiro nem arquivo, portando fiquei meio perdido.

struct cadastrocli
	{
			int cod[2];//codigo, até 99 cadastros 
			char nome[50];
			char rg[20];
			char cpf[20];
			char endereco[50];
			char cnh[20];
			char telefone[20];
	};
do{
                op='s';
			    system("cls");
			    imprimeCabecalho();
			    getchar();
			    printf("\n-----------------CADASTRO---------------- \n\n");
			    
				printf("Digite o número para o cadastro:\n");
			    scanf("%i",cadastro[cont].cod);
				
				printf("Nome do cliente:\n");
			    fflush(stdin);
			    gets(cadastro[cont].nome);

			    printf("RG do cliente:\n");
			    fflush(stdin);
			    gets(cadastro[cont].rg);

			    printf("CPF do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].cpf);

			    printf("Endereço do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].endereco);

			    printf("CNH do cliente: \n");
			    fflush(stdin);
			    gets(cadastro[cont].cnh);

			    printf("Telefone:  \n");
			    fflush(stdin);
			    gets(cadastro[cont].telefone);
			    system("cls");

			    printf("\n ---------Exibindo informações ----------\n\n");
			    printf("numero do cadastro do cliente: %i\n", cadastro[cont].cod);
			    printf("Nome.....:%s \n", cadastro[cont].nome);
			    printf("RG.......:%s \n", cadastro[cont].rg);
			    printf("CPF......:%s \n", cadastro[cont].cpf);
			    printf("Endereço.:%s \n", cadastro[cont].endereco);
			    printf("CNH......:%s \n", cadastro[cont].cnh);
			    printf("Contato:.:%s \n", cadastro[cont].telefone);
			    cont++;
			    printf("\nQuer Cadastrar Outro Cliente  S/N ");
			    scanf("%c",&op);
		    }while(op!='n');

 

Agradeço pela ajuda o/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Nerociffer    o Número para percorrer o vetor aí nesse código é o cont  para os clientes e o cont_car para os carros veja a função no case 4 que usa a variável cont como limite para o total de cadastro então ele vai de zero até o valor de cont e não precisa de um outro int lá dentro do struct não .  e uma função para listar os carros pode ser dessa forma  e você usaria a variável cont_car para localizar os carros cadastrados .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá Devair
Estou tentando montar uma forma de puxar no case 4 pelo cpf, mas não estou conseguindo.

do{
			for(j=0;j<cont;j++){
				printf("Exibindo informações:\n");
		    	printf("numero do cpf cadastro do cliente:\n");
			    scanf("%s",&cadastro[j].cpf);
			    printf("Nome.....:%s \n", cadastro[j].nome);
			    printf("RG.......:%s \n", cadastro[j].rg);
			    printf("CPF......:%s \n", cadastro[j].cpf);
			    printf("Endereço.:%s \n", cadastro[j].endereco);
			    printf("CNH......:%s \n", cadastro[j].cnh);
			    printf("Contato:.:%s \n", cadastro[j].telefone);
			    getch();
			    printf("Deseja voltar ao menu ? S/N");
			    scanf("%s",&op);
			   }
		    }while(op=='n');

Basicamente estou tentando fazer com q a pessoa digite um cpf e ele puxa esse cpf, mas não estou conseguindo bolar esse algoritmo, minha lógica está falha em algum lugar, poderia me ajudar ?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Nerociffer   você quer pesquisar pelo cpf  e encontrando esse cpf ele mostra todos os dados referentes a esse cpf ? então pode usar um código parecido com esse aqui :

case 4:
            do{
                op='s';
                printf("Digite O Número Do Cpf Cadastrado Do Cliente: ");
                fflush(stdin);
                gets(cpfs);
                flag=0;
                for(j=0;j<cont;j++){
                    if(strcmp(cadastro[j].cpf,cpfs)==0){
                        printf("Exibindo informações:\n");
                        printf("Nome.....:%s \n", cadastro[j].nome);
                        printf("RG.......:%s \n", cadastro[j].rg);
                        printf("CPF......:%s \n", cadastro[j].cpf);
                        printf("Endereço.:%s \n", cadastro[j].endereco);
                        printf("CNH......:%s \n", cadastro[j].cnh);
                        printf("Contato:.:%s \n", cadastro[j].telefone);
                        flag=1;
                    }
                }
                if(flag==0)
                    printf("CPF Não Cadastrado...!\n");
                printf("Deseja voltar ao menu ? S/N ");
                scanf("%s",&op);
            }while(op!='s');
            break;

você vai precisar colocar a variável flag do tipo inteiro e cpfs[ 20 ] do tipo char lá no inicio .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...