-2
good, I developed a parking lot management program, when people to show on the screen all the cars and their features the brand is printed next to the license plate and do not know why.Can help me?
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
struct Tempo{
int hora[8];
};
struct registo_veiculo{
char matricula[6] , marca[10] , modelo[10] , cor[10];
int status;
struct Tempo entrada;
}carro[10];
//Procedimento para limpar o registro do carro que saiu do estacionamento
void excluir(int i)
{
carro[i].matricula==0;
carro[i].modelo==0;
carro[i].marca==0;
carro[i].cor==0;
carro[i].entrada.hora==0;
carro[i].status==0;
}
//Procedimento para inserir dados dos veículos
void inserir(int i)
{
char placa[6];
int tam_pla;
FILE *P;
printf("Digite a matricula:");
fflush(stdin);
scanf("%s",&placa);
strupr(placa);//deixa caracteres da placa com letra maiúsculo
strcpy(carro[i].matricula, placa);//copia a informação escrita no vetor placa e transcreve para a estrutura no parâmetro matricula.
tam_pla=strlen(carro[i].matricula);
// Testa quantos digitos foram inseridos.
if(tam_pla!=6)
{
if(tam_pla<6)
{
printf("\nMatricula invalida\nDigitos insuficientes\n\n");
inserir(i);
}
else//(tam_pla>6)
{
printf("\nMatricula invalida\nMuitos digitos\n\n");
inserir(i);
}
}
printf("\nDigite o modelo:");
fflush(stdin);
scanf("%s",carro[i].modelo);
//deixa string em minúsculo
strlwr(carro[i].modelo);
fflush(stdin);
//deixa primeiro caractere maiúsculo
carro[i].modelo[0]=toupper(carro[i].modelo[0]);
printf("\nDigite a marca:");
fflush(stdin);
scanf("%s",carro[i].marca);
//deixa string em minúsculo
strlwr(carro[i].marca);
//deixa primeiro caractere maiúsculo
carro[i].marca[0]=toupper(carro[i].marca[0]);
printf("\nDigite a cor:");
fflush(stdin);
scanf("%s",carro[i].cor);
//deixa string em minúsculo
strlwr(carro[i].cor);
//deixa primeiro caractere maiúsculo
carro[i].cor[0]=toupper(carro[i].cor[0]);//cor[0] é o 1º caracter que vai ser alterado
printf("\nDigite a hora da entrada no formato <horas>:<minutos>:(digitar os :)");
fflush(stdin);
scanf("%s",carro[i].entrada.hora);
carro[i].status=1;
P=fopen("CARRO.txt", "wb");
if(P==NULL)
{
puts("Erro na abertura do ficheiro.");
exit(0);//termina com sucesso, sem erros
}
else
{
fwrite(&carro, sizeof(carro), 1, P);
fclose(P);
}
}
//Procedimento para registar a entrada de veiculos no estacionamento
void registar_veiculo(){
int i, flag=1;// a flag no inicio tem valor 1, se encontrar um lugar para estacionar, flag=0 senão fla=1;
for(i=0; i<10; i++)
{
if(carro[i].status==0)
{
inserir(i);
printf("\n\nVeiculo registado com sucesso!");
sleep(2);//espera dois segundos até voltar ao menu
flag=0;//controla a lógica da função para a poder controlar o espaço no parque de estacionamento
system("cls");
break;
}
}
if(flag==1)
{
printf("Sem espaco para registar\nEnter voltar ao menu...");
getch();//obtem o caracter da consola mas não mostra no ecrã;
system("cls");
}
}
// Procedimento para registrar a saida.
void saida_veiculo(){
char pesq[6];
FILE *P;
P=fopen("CARRO.txt", "rb");
fread(&carro, sizeof(carro), 1, P);
int i,n=6;
int horaEnt,minEnt,horaSai, minSai,tminEnt,tminSai,T_total;
float precoad=0.05;// preço por minuto adicional acima de 1hora
float preco=0.50;//preço de utilização até 1h
puts("Digite a Matricula:");
fflush(stdin);//limpa o conteudo do buffer
scanf("%s",&pesq);
strupr(pesq);//deixa caracteres da matricula em maiúsculo
for(i=0;i<10;i++){
if(memcmp(pesq,carro[i].matricula,n)==0){// strcmp compara os n primeiros elementos
printf("\n Matricula: %s",carro[i].matricula);
printf("\n Modelo: %s",carro[i].modelo);
printf("\n Marca: %s",carro[i].marca);
printf("\n Cor: %s",carro[i].cor);
printf("\n Hora de Entrada: %s\n\n", carro[i].entrada.hora);
printf("\n\n Digite a hora de entrada no formato <horas>enter<minutos>:\n");
scanf("%d""%d",&horaEnt,&minEnt);
printf("\n\n\n Digite a hora de saida no formato <horas>enter<minutos>:\n");
scanf("%d""%d", &horaSai, &minSai);
tminEnt = (horaEnt*60)+ minEnt;//tempo em minutos de entrada
tminSai = (horaSai*60)+ minSai;//tempo em minutos de saida
T_total = tminSai-tminEnt; //calcula o numero total de minutos que esteve no parque
if(T_total<=60){
printf("O carro do cliente ficou %d minutos no estacionamento, e o valor total a pagar e de: %.2f€ ",T_total, preco);
}
else{
float valorapagar = ((T_total-60)*precoad) + preco;
printf("O carro do cliente ficou %.d minutos no estacionamento, e o valor total a pagar e de: %.2f€\n\n\n",T_total, valorapagar);
}
carro[i].status=0;//declara que o lugar i já não está ocupado
excluir(i);//elimina toda a informação da estrutura na posição i do veiculo que saiu
P=fopen("CARRO.txt", "wb");
fwrite(&carro, sizeof(carro), 1, P);
fclose(P);
}
if (i==10){
printf("Veiculo nao encontrado");
}
}
}
// Procedimento para listar os veículos que estão no estacionamento.
void listar_veiculo()
{
int i, n=1;
FILE *P;
P=fopen("CARRO.txt", "rb");
fread(&carro, sizeof(carro), 1, P);
for(i=0; i<10; i++)
{
if(carro[i].status==1)
{
printf("Veiculo: %d\n", i+1);
printf("Matricula: %s\n",carro[i].matricula);
printf("Modelo: %s\n",carro[i].modelo);
printf("Marca: %s\n",carro[i].marca);
printf("Cor: %s\n",carro[i].cor);
printf("Entrada: %s\n\n\n\n", carro[i].entrada.hora);
n=0;
}
}
if(n==0)// se n==0 então há veiculos no parque
{
printf("\nEnter voltar ao menu...");
getch();//recebe qualquer tecla mas não o mostra no ecrã
system("cls");
}
else// senão não tem veiculos no parque
{
puts("Nenhum veiculo registado\nEnter voltar ao menu...");
getch();
system("cls");
}
}
// Função principal
int main()
{
int opcao;
FILE* P;
P=fopen("CARRO.txt", "rb");
fread(&carro, sizeof(carro), 1, P);
fclose(P);
printf("------------------------------------------------");
do{
printf("\nGESTAO DE ACESSOS AO PARQUE DE ESTACIONAMENTO \n\n");
printf("------------------------------------------------\n\n");
printf("1. Registar entrada do veiculo\n");
printf("2. Informar saida do veiculo \n3. Lista de veiculos\n4. Sair \n\nOpcao: ");
scanf("%d", &opcao);
switch(opcao)
{
case 1:
{
system("cls");
registar_veiculo();
break;
}
case 2:
{
system("cls");
saida_veiculo();
break;
}
case 3:
{
system("cls");
listar_veiculo();
break;
}
case 4: break;
default:
{
system("cls");
getchar();
}
}
}while(opcao!=4);
getchar();
system("cls");
}
someone can help me?
– magnum503
You can put an example of expected input/output ? and how would the wrong output be for the same input ?
– Felipe
Input example: 12ff12 plate, model:M8, brand:bmw,color:blue
– magnum503
wrong exit would be when the brand appears immediately following the license plate.
– magnum503