Ir ao conteúdo
  • Cadastre-se
Igor Vargas

C Consulta de carros em uma concessionaria

Recommended Posts

Eai galera. Estou com um problema nesse condigo, onde quando eu escolho a segunda opção ele da um erro depois que voce digita a placa do seu carro. Estou achando que a comparação de strings não esta funcionando, mas n acho o motivo de não estar.

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

	struct FastCar
{
	int ano_F;
	float preco;
	char descricao[50],fabricante[20],cor[20],placa[6];
	
	
	
};

void cadastro(struct FastCar op_Um[1] ){
	int x;
	
	printf("-------------------------------------------\n");
	printf("-----voce Selecionou Cadastrar Automovel---\n");
	printf("-------------------------------------------\n");
	for(x=0; x<1; x++){
		fflush(stdin);
	printf("Digite a Placa do Seu carro: ");
	gets(op_Um[x].placa);
	strupr(op_Um[x].placa);
	printf("Digite a Descricao do seu carro: ");
	gets(op_Um[x].descricao);
	printf("Digite o Fabricante do seu carro : ");
	gets(op_Um[x].fabricante);
	printf("Digite a Cor do seu Carro: ");
	gets(op_Um[x].cor);
	printf("Digite o Ano de fabricação do seu carro: ");
	scanf("%d",&op_Um[x].ano_F);
	printf("Digite o Preco do seu carro:");
	scanf("%f",&op_Um[x].preco);
	
	}
		
	
}

int consulta(struct FastCar op_Dois[1]){
	int x,valor;
	char nova_P[6];
	printf("-------------------------------------------\n");
	printf("-----voce Selecionou Consultar Automovel---\n");
	printf("-------------------------------------------\n");
	fflush(stdin);
	printf("Digite a placa do carro: ");
	gets(nova_P);
	for(x=0; x<1; x++){
		int salva=strcmp(op_Dois[x].placa, nova_P[x]);
		if(salva==0){
			fflush(stdin);
			puts(op_Dois[x].descricao);
			puts(op_Dois[x].fabricante);
			puts(op_Dois[x].cor);
			printf("%d\n",op_Dois[x].ano_F);
			printf("%f",op_Dois[x].preco);	
			}
			else{
			return	valor=1;
		}		
	}
	if(valor==1){
		printf("Essa Placa nao existe ou foi digitada incorreta");
	}
}

void relatorio(struct FastCar op_Tres[1]){
	int x;
	printf("-------------------------------------------\n");
	printf("-----voce Selecionou Gerar Relatorio---\n");
	printf("-------------------------------------------\n");
	printf("Todos Os Carros");
	for(x=0; x<1; x++){
			puts(op_Tres[x].placa);
			puts(op_Tres[x].descricao);
			puts(op_Tres[x].fabricante);
			puts(op_Tres[x].cor);
			printf("%d\n",op_Tres[x].ano_F);
			printf("%f",op_Tres[x].preco);
		
	}
	
}


main(){
	struct FastCar Carros[1];	
	int escolha;
	do{
	
	printf("1. Cadastrar automovel\n");
	printf("2. Consultar automovel\n");
	printf("3. Gerar Relatorio\n");
	printf("4. Sair do Programa\n");
	scanf("%d",&escolha);
	if(escolha == 1){
		cadastro(Carros);
		}else if(escolha == 2){
			consulta(Carros);
	  		}else if(escolha == 3){
	    		relatorio(Carros);
		    	}else if(escolha == 4){
		   			break;
		   }	
	
	}while(escolha!= 4);
	
	
	
	
	
	
	
	
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Vargas    na função consulta você está comparando  com a variável 

nova_p[x]

então esse seria o caractere  x da  variável ,  e o strcmp só funciona com string , então coloque a variável sem os colchetes e o x ,  e então seu código com algumas modificações ficaria assim  :

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
struct FastCar{
    int ano_F;
    float preco;
    char descricao[50],fabricante[20],cor[20],placa[6];
};
int cont=0;
void cadastro(struct FastCar op_Um[100] ){
    char sair='n';
    printf("-------------------------------------------\n");
    printf("-----voce Selecionou Cadastrar Automovel---\n");
    printf("-------------------------------------------\n");
    do{
        fflush(stdin);
        printf("Digite a Placa do Seu carro: ");
        gets(op_Um[cont].placa);
        strupr(op_Um[cont].placa);
        printf("Digite a Descricao do seu carro: ");
        gets(op_Um[cont].descricao);
        printf("Digite o Fabricante do seu carro : ");
        gets(op_Um[cont].fabricante);
        printf("Digite a Cor do seu Carro: ");
        gets(op_Um[cont].cor);
        printf("Digite o Ano de fabricação do seu carro: ");
        scanf("%d",&op_Um[cont].ano_F);
        printf("Digite o Preco do seu carro:");
        scanf("%f",&op_Um[cont].preco);
        cont++;
        printf("Quer Cadastrar Outro Carro  S/N ");
        fflush(stdin);
        scanf("%c",&sair);
    }while(toupper(sair)=='S');
    printf("\n");
}
int consulta(struct FastCar op_Dois[100]){
    int x,flag=0;
    char nova_P[6];
    printf("-------------------------------------------\n");
    printf("-----voce Selecionou Consultar Automovel---\n");
    printf("-------------------------------------------\n");
    fflush(stdin);
    printf("Digite a placa do carro: ");
    gets(nova_P);
    for(x=0; x<cont; x++){
        if(strcmp(op_Dois[x].placa, nova_P)==0){
            puts(op_Dois[x].descricao);
            puts(op_Dois[x].fabricante);
            puts(op_Dois[x].cor);
            printf("%d\n",op_Dois[x].ano_F);
            printf("%.2f",op_Dois[x].preco);
            flag=1;
        }
    }
    if(flag==0){
        printf("Essa Placa nao existe ou foi digitada incorreta");
    }
    printf("\n");
    return 0;
}
void relatorio(struct FastCar op_Tres[100]){
    int x;
    printf("-------------------------------------------\n");
    printf("-----voce Selecionou Gerar Relatorio---\n");
    printf("-------------------------------------------\n");
    printf("Todos Os Carros");
    for(x=0; x<cont; x++){
        puts(op_Tres[x].placa);
        puts(op_Tres[x].descricao);
        puts(op_Tres[x].fabricante);
        puts(op_Tres[x].cor);
        printf("%d\n",op_Tres[x].ano_F);
        printf("%f",op_Tres[x].preco);
    }
    printf("\n");
}
int main(){
    struct FastCar Carros[100];
    int escolha;
    do{
        printf("1. Cadastrar automovel\n");
        printf("2. Consultar automovel\n");
        printf("3. Gerar Relatorio\n");
        printf("4. Sair do Programa\n");
        scanf("%d",&escolha);
        if(escolha == 1){
            cadastro(Carros);
        }
        else
            if(escolha == 2){
                consulta(Carros);
            }
            else
                if(escolha == 3){
                    relatorio(Carros);
                }
                else
                    if(escolha == 4){
                        break;
                    }
    }while(escolha!= 4);
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×