Ir ao conteúdo
  • Cadastre-se

C Não consigo compilar um programa em C


Sr.Bincow

Posts recomendados

Eu estou estudando C por conta própria, então eu busquei uma questão para resolver e testar o que eu aprendi, no caso struct, eu fiz um código e simplesmente não consigo compilar. A questão é essa:

 

Considere as informações abaixo utilizadas para descrever os carros de uma determinada revendedora de automóveis: código: string de 5; marca: string de tamanho 25 ano: inteiro cor: string de tamanho 20 preço: real

 

Elabore um programa em C com o seguinte menu de opções:

a) Cadastro de carros – limitado a 50 carros. O programa não deve permitir o cadastro de carros com o mesmo código;

b) Pesquisa por preço - receba o preço de um carro e mostre no vídeo os carros (código, marca, cor e ano) que tenham preço igual ou menor ao preço recebido;

c) Listagem – mostre no vídeo as informações de todos os carros cadastrados (código marca, preço, ano e cor) e o total de carros;

d) Pesquisa por carro – receba a marca, ano, cor e informe se existe ou não carros com essas características. Se existir, informar os códigos e seus respectivos preços;

e) Sair do programa

ATENÇÃO:

1) O programa deverá fazer uso de struct para armazenar as informações de um carro;

2) Pelo menos as opções b) e c) do menu deverão ser implementadas por funções;

3) O programa não poderá fazer uso de variáveis globais;

 

O que eu tentei fazer:

 

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


struct carro
{	
	int codigo;
	float preco;
	char marca[25];
	char cor[20];
	int ano;
	int i;
}registro[50];


void cadastro(int codigo, int posicao);
void listagem_preco();
int verifica_pos();
int verifica_cod(int codigo);
void pesquisa_carro();

int main(void)
{
	int op = 0;
    int retorno;
    int codaux;
    int posicao;
    while(op!=4)
    {
    	printf("\nMenu");
		printf("DIGITE 1 PARA CADASTRAR O CARRO");
		printf("\nDIGITE 2 PARA UMA LISTAGEM DOS CARROS POR PRECOS");
		printf("\nDIGITE 3 PARA PESQUISAR POR CARRO");
		printf("\nDIGITE 0 PARA SAIR");
		scanf("%d", &op);
		system("cls");
		switch(op)
		{
			case 1:
			{
					posicao = verifica_pos();
					if(posicao!= -1)
					{
						printf("\nDIGITE O CODIGO DESEJADO DO CARRO: ");
						scanf("%d",&codaux);fflush(stdin);
						retorno = verifica_cod(codaux);
						if (retorno == 1)
							cadastro(codaux,posicao);
						else
							printf("\nCODIGO JA EXISTENTE");
						
					}
				break;
					
			}
			case 2:
			{
				listagem_preco();
			
				break;
				
			}
			case 3:
				{
					pesquisa_carro();
					break;
				}
			case 4:
			{
				printf("Adeus");
				break;
			}
			default :
			{
				printf("OPCAO INVALIDA");
				break;
			}	
		}	
	}

	
	return 0;
}

void cadastro(int codigo, int posicao)
{
	struct carro c[50];
	int i;
	for(i=0, i<50; i++;)
	{
		printf("\nDIGITE A MARCA DO CARRO: ");
		scanf("%c", &c[i].marca);
		printf("\nDIGITE O ANO DO CARRO: ");
		scanf("%d", &c[i].ano);
		printf("\nDIGITE A COR DO CARRO: ");
		scanf("%c", &c[i].cor);
		printf("\nDIGITE O PRECO DO CARRO: ");
		scanf("%f", &c[i].preco);
		printf("\nDIGITE O CODIGO DO CARRO: ");
		scanf("%d", &c[i].codigo);
		system("cls");
	}
}


void listagem_preco()
{
	int x=0;
	float valor;
	printf("\nDIGITE O PRECO DESEJAVEL");
	scanf("%f", &valor);
	
	for(x=0; x<50; x++)
	{
		if(registro[x].preco<=valor)
		{
			printf("\nMARCA: %s", registro[x].marca);
			printf("\nPRECO: %f", registro[x].preco);
			printf("\nANO: %d", registro[x].ano);
			printf("\nCODIGO %d", registro[x].codigo);
			printf("\nCOR: %s", registro[x].cor);
			system("cls");
		}
	}			
}
void pesquisa_carro()
{
	int y=0;
	char marca[25];
	char cor[20];
	int ano;
	printf("\nDIGITE A MARCA : ");
	scanf("%c", &marca);
	printf("\nDIGITE A COR: ");
	scanf("%c", &cor);
	printf("\nDIGITE O ANO: ");
	scanf("%d", &ano);
	system("cls");
	
	for(y=0; y<50; y++)
	{
		if(registro[y].marca==marca)
		{
			if(registro[y].cor==cor)
			{
				if(registro[y].ano==ano)
				{
				printf("\nMARCA: %s", registro[y].marca);
				printf("\nPRECO: %f", registro[y].preco);
				printf("\nANO: %d", registro[y].ano);
				printf("\nCODIGO %d", registro[y].codigo);
				printf("\nCOR: %s", registro[y].cor);					
				}	
			}
		}
		else
		{
			printf("\nDADOS INCORRETOS");
		}
		return;
	}

}

 

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

Não consegue compilar por estar usando os protótipos verifica_pos e verifica_cod sem eles terem definições. Adicione isto para permitir a compilação F5Rua4D.gif:

 

 

int verifica_pos() {
}
int verifica_cod(int codigo) {
}

 

 

No mais, você está criando um vetor global, o que é contra os objetivos do programa. Para ele ser local, faça no main:

 

 

struct carro registro[50];

 

 

 

Espero ter ajudado GbhmuXl.gif.

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

@rjjj

29 minutos atrás, rjjj disse:

Não consegue compilar por estar usando os protótipos verifica_pos e verifica_cod sem eles terem definições. Adicione isto para permitir a compilação F5Rua4D.gif:

 

 


int verifica_pos() {
}
int verifica_cod(int codigo) {
}

 

 

No mais, você está criando um vetor global, o que é contra os objetivos do programa. Para ele ser local, faça no main:

 

 


struct carro registro[50];

 

 

 

Espero ter ajudado GbhmuXl.gif.

obrigado cara ele realmente tá compilando agora, mas quando vou cadastrar o carro ele não consegue avançar, para no Else como o Codigo do carro já fosse existente

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

Você tem que preencher aquelas definições com a sua lógica, com o seu código. Eu postei elas vazias só para o código compilar F5Rua4D.gif.

 

 

 

Uma dica que dou é aprender a passar vetores como parâmetros de função. Isso vai permitir checar se os carros do problema são cadastrados sem usar variáveis globais.

 

 

 

Espero ter ajudado GbhmuXl.gif.

  • Curtir 2
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...