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

Ajuda com erro desconhecido


ThiagoSilva72

Pergunta

Bom dia amigos.

Estou montando um trabalho da facul que seria basicamente um programa de estacionamento.

Como estou começando a programar tenho usado muitos codigos que acho de funçoes que posso reutilizar.

E ajudas que obtenho pela internet.

Agora meu programa esta dando um erro pra compilar que não sei onde identificar o erro, podem me ajudar?

Segue o codigo em c feito no dev c++ portable..

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

void INSERIR (int i);
void INICIALIZA();
void CADASTRAR_VEICULO();
void LISTAR_VEICULOS();

struct
{
     char placa_carro[8], modelo[20], cor[10];
     int status;
}carro[10];

int numero_de_veiculos=0; //contador de veiculos estacionados.

//------------------------------------------------------------------------

main ()
{
	int OP;
	FILE* P;
	
	INICIALIZA ();
	P=fopen("carro.txt", "r");
	fread(&carro, sizeof(carro), 1, P);
	fclose(P);
	
	do{
	
	
		printf ("\n1.Cadastrar veiculo. \n2.Listar veiculo. \n3.Sair \n\nOpcao: ");
		scanf ("%d", &OP);
		
		switch (OP)
		{
			case 1:
				{
				system("cls");
				CADASTRAR_VEICULO();
				break;
			}
			
			case 2:
				{
				system("cls");
				LISTAR_VEICULOS();
				break;
			}
			
			case 3:
				
				break;
				
				default:
				{
					system ("cls");
					printf ("\nOpcao Invalida.\nTecle ENTER para voltar ao Menu.");
					getch();
					system("cls");
				}
		
				
		}
	} while(OP!=3);
	
	getchar();
}

//----------------------------------------------------------------

void INICIALIZA()
{
     int i;
     
     for(i=0; i<10; i++)
     carro[i].status=0;     
}

//----------------------------------------------------------------

void INSERIR (int i)
{
	char placa[8];
	int i2, teste, tamanho_placa;
	FILE* P;
	
	printf ("\nDigite a placa do veiculo: ");
	fflush(stdin);
	gets(placa);
	
	strupr(placa); //Deixa em maiusculo as letras da placa.
	
	for (i2=0; i2<10; i2++)
	{
		if (strcmp(placa, carro[i2].placa_carro)==0)
		{
			printf ("\nVeiculo ja cadastrado, informe outra placa");
			INSERIR(i);
		}
	}
	
	strcpy(carro[i].placa_carro, placa);
	tamanho_placa=strlen(carro[i].placa_carro);
	
	if (tamanho_placa != 7)
	{
		if (tamanho_placa < 7)
		{
			printf ("\nPlaca invalida, digitos insuficientes.");
			INSERIR(i);
		}
		else // Tamanho placa > 7.
		{
			printf ("\nPlaca invalida, digitos a mais.");
			INSERIR(i);
		}
	}
	
	for (i2=0; i2<3; i2++ ) //Testa se os 3 primeiros digitos sao letras.
	{
		teste=isalpha(carro[i].placa_carro[i2]); //Retorna 1 se for letras.
		if (teste==0)
		{
			printf ("\nPlaca invalida, os 3 primeiros digitos devem ser letras.");
			INSERIR(i);
		}
	}
	
	for (i2=3; i2<7; i2++)
	{
		teste=isalpha(carro[i].placa_carro[i2]); //Retorna 1 se for letras.
		if (teste==1)
		{
			printf ("Placa invalida, os 4 ultimos digitos devem ser numeros.");
			INSERIR(i);
		}
	}
	
	printf ("\nDigite o modelo: ");
	fflush (stdin);
	gets (carro[i].modelo);
	strlwr (carro[i].modelo); //Deixa a string em minusculo.
	carro[i].modelo[0]=toupper(carro[i].modelo[0]); // Deixa primeiro caractere maiusculo.
	
	printf ("\nDigite a cor: ");
	fflush (stdin);
	gets (carro[i].cor);
	strlwr(carro[i].cor);
	carro[i].cor[0]=toupper(carro[i].cor[0]);
	
	carro[i].status = 1;
	
	P = fopen ("carro.txt", "w");
	fwrite (&carro, sizeof(carro), 1, P);
	fclose(P);
	
}

//--------------------------------------------------------------------

void CADASTRAR_VEICULO()
{
	int i, flag = 1;
	
	for (i=0; i<10; i++)
	{
		if (carro[i].status==0)
		{
			INSERIR (i);
			flag = 0;
			system ("cls");
			break;
			
		}
	}
	
	if (flag==1)
	{
		printf ("\nSem espaço para cadastrar, pressione enter para voltar ao Menu.");
		getch();
		system ("cls");
	}
}



Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...