Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

@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
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!