Ir para conteúdo
Fórum Script Brasil
  • 0

Exercício (Switch case) C


Iago Teixeira

Pergunta

Bom gostaria de ajuda se possível para me ajudar em um exercício de c, o exercício pede para criar um programa de cadastramento de carros (máximo 200) que cadastre, liste e encerre (em um menu simples), onde C é pra cadastrar, L para verificar os carros cadastrados e E pra encerrar, lembrando que para cadastrar o carro é necessário informar a placa e o valor de aquisição e a placa não pode ter placa repetida (iguais).

Mas quando eu informo a identificação(placa e valor) do carro o programa acaba dando erro, também gostaria de saber como faço pra validar essa questão das placas iguais e ver a listagem dos carros.

Segue ate onde eu consegui: 

 

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

int leValidaCarro(char placa, int valor);


int main() {
	
	char opcao;
	char placa;
	int valor;
	
	
	do{
		system ("cls");
		printf ("|================================|\n");
		printf ("|       SELECINE UMA OPCAO       |\n");
		printf ("|C.  Para cadastrar um novo carro|\n");
		printf ("|L.  Para ver a lisagem de carros|\n");
		printf ("|E.  Encerrar                    |\n");
		printf ("|================================|\n");
		
		printf ("\nInforme uma opcao(C ou L ou E): ");
		opcao = getch();
		//Menu de opcoes
		switch (opcao){
			//Cadastro de um novo veiculo
			case 'C':
			case 'c':	
				leValidaCarro(placa,valor);
				break;
			//Listagem de todos os veiculos
			case 'L':
			case 'l':
				printf ("\nLisagem de carros\n");
				break;
			//Encerramento do programa
			case 'E':
			case 'e':
				printf ("\n\n");
				printf ("\nREGISTRO ENCERRADO...\n");
				printf ("\n\n");
				break;
			//Caso a opcao seja invalida
			default:
				printf ("\nOpcao invalida\n");
				break;
		}	
		system ("PAUSE");
	}while(opcao != 'E' && opcao != 'e');
	
	
	return 0;
}

int leValidaCarro(char placa, int valor){
	
	printf ("\nCadastramento de um novo veiculo\n");
	printf ("\nInforme a placa do veiuculo: ");
	scanf ("%s",&placa);
	printf ("\nInforme o valor de aquisicao do veiculo: ");
	scanf ("%d",&valor);
	fflush(stdin);
	printf ("\nPlaca: %s\n", placa);
	printf ("\nValor: %d\n", valor);
	
	return 0;	
}

 

Editado por Iago Teixeira
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá. Vou te dar o exercício quase pronto e de certa forma meio incomodado com isso.

Mas, para ficar tranquilo, vou já avisar: Se você fizer todos os exercícios q encontrar para fazer na base do copia/cola vc, na verdade, não vai aprender de forma alguma a programar. Não fiz questão de comentar o q foi feito ou não no exercício pois deixo a seu critério procurar entender ou não o q foi feito. É bom deixar bem claro isso pois eu mesmo, durante um tempo, cai nesse erro de ficar no copia/cola e hj vejo q só o q eu fiz naquele período foi me enganar e simplesmente desperdicei muito do meu tempo com isso, ao invés de ter estudado e praticado o q eu sabia.

A abordagem q usei foi de salvar os dados dos carros cadastrados em um arquivo para posteriormente, quando preciso, acessar todos os registros já efetuados.

Tem a questão q você disse q não podia ter placa repetida. Isso vou deixar p você resolver.

Procure entender o q foi feito e use esse exercício como base para criar outros e, dessa forma, aprender a respeito de I/O usado no C

Segue o código:

 

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

void leValidaCarro(char varPlaca[], double varValor);
void listarVeiculos();
void cadastrarVeiculo(char varPlaca[], double varValor);

void cadastrarVeiculo(char dadosPlaca[], double dadosPlaca)
{
	FILE *arquivo;
	arquivo = fopen("CadastroVeiculos.txt", "a");
	fprintf(arquivo, "%s  %.2f", dadosPlaca, dadosPlaca);
	fclose(arquivo);
}


void listarVeiculos()
{
	FILE *arquivo;
	char placa[50];
	double valor;
	
	arquivo = fopen("CadastroVeiculos.txt", "r");
	
	while (!feof(arquivo))
	{
		fscanf(arquivo, "%s %lf", placa, &valor);
		printf("\nPLACA: %s\nVALOR: %.2f\n\n", placa, valor);
	}
	
	
	fclose(arquivo);
}


int main() 
{	
	char opcao;
	char placa[50];
	double valor;
	char *limparBuffer; // poderia ser outro nome, como por exemplo: char *c
	
	
	do{
		system ("cls");
		printf ("|================================|\n");
		printf ("|       SELECINE UMA OPCAO       |\n");
		printf ("|C.  Para cadastrar um novo carro|\n");
		printf ("|L.  Para ver a lisagem de carros|\n");
		printf ("|E.  Encerrar                    |\n");
		printf ("|================================|\n");
		
		printf ("\nInforme uma opcao(C ou L ou E): ");
		scanf("%c", &opcao);
		scanf("%c", &limparBuffer);
		//Menu de opcoes
		switch (opcao){
			//Cadastro de um novo veiculo
			case 'C':
			case 'c':	
				leValidaCarro(placa, valor);
				break;
			//Listagem de todos os veiculos
			case 'L':
			case 'l':
				//printf ("\nLisagem de carros\n\n");
				listarVeiculos();
				system("pause");
				break;
			//Encerramento do programa
			case 'E':
			case 'e':
				printf ("\n\n");
				printf ("\nREGISTRO ENCERRADO...\n");
				printf ("\n\n");
				break;
			//Caso a opcao seja invalida
			default:
				printf ("\nOpcao invalida\n");
				break;
		}	
		//system ("PAUSE");
	} while(opcao != 'E' && opcao != 'e');
	
	
	return 0;
}

void leValidaCarro(char varPlaca[], double varValor)
{
	char *limparBuffer = NULL;
	
	printf ("\nCadastramento de um novo veiculo\n");
	
	printf ("\nInforme a placa do veiculo: ");
	scanf ("%[^\n]s", varPlaca);
	scanf("%c", &limparBuffer);
	
	printf ("\nInforme o valor de aquisicao do veiculo: ");
	scanf ("%lf", &varValor);
	scanf("%c", &limparBuffer);
	
	printf ("\nPlaca: %s", varPlaca);
	printf ("\nValor: %.2f\n\n", varValor);
	
	cadastrarVeiculo(varPlaca, varValor);
	
	system("pause");
	
}

Se puder dizer se deu ou não p entender o q foi feito agradeço.

Abraço e boa sorte com seus estudos!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...