PRECISO DE AJUDA URGENTE.
ENCONTREI ESSE PROGRAMA NA NET E DEI UMA APERFEIÇOADA.
ELE ESTÁ COM OS SEGUINTES PROBLEMAS:
COLOQUEI A VOID CONTROLAR ESTACIONAMENTO MAS NÃO CONSIGO VINCULAR O CONTROLE DE ESTACIONAMENTO COM OS VEICULOS JÁ CADASTRADOS.
FALTA TERMINAR AS VOID:
void CONSULTAR_VAGAS()
void LISTAR_OCUPADAS()
void LISTAR_VEICULOS()
POR FAVOR ME AJUDEM, carol,
beijos
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void INICIALIZA();
void INSERIR(int I);
void CADASTRAR_VEICULO();
void CADASTRAR_VAGA();
void CONTROLAR_ESTACIONAMENTO();
void CONSULTAR_VAGAS();
void LISTAR_OCUPADAS();
void LISTAR_VEICULOS();
struct
{
char PLACA[8], MODELO[20], MARCA[20], COR[10];
int STATUS;
}CARRO[10];
int NVEI=0; //contador de veículos cadastrados
//int NVAG=0; //contador de vagas cadastradas
//-----------------------------------------------------------------------------
main()
{
int OP;
FILE* P;
INICIALIZA();
//abre o arquivo pro fopen "w" não substituir o que já existe
P=fopen("CARRO.txt", "r");
fread(&CARRO, sizeof(CARRO), 1, P);
fclose(P);
do{
printf("CONTROLE DE ESTACIONAMENTO\n\n");
printf("1. Cadastrar veiculo\n2. Cadastrar vaga\n3. Controle do estacionamento\n");
printf("4. Consultar vagas\n5. Listar vagas ocupadas\n6. Listar veiculos\n7. Sair\n\nOpcao: ");
scanf("%d", &OP);
switch(OP)
{
case 1:
{
system("cls");
CADASTRAR_VEICULO();
break;
}
case 2:
{
system("cls");
CADASTRAR_VAGA();
break;
}
case 3:
{
system("cls");
CONTROLAR_ESTACIONAMENTO();
break;
}
case 4:
{
system("cls");
CONSULTAR_VAGAS();
break;
}
case 5:
{
system("cls");
LISTAR_OCUPADAS();
break;
}
case 6:
{
system("cls");
LISTAR_VEICULOS();
break;
}
case 7: break;
default:
{
system("cls");
printf("Opcao invalida!\nEnter para voltar ao menu");
getch();
system("cls");
}
}
}while(OP!=7);
getchar();
}
//-----------------------------------------------------------------------------
void INICIALIZA()
{
int I;
for(I=0; I<10; I++)
CARRO[I].STATUS=0;
}
//-----------------------------------------------------------------------------
void INSERIR(int I)
{
char PL[8];
int I2, TESTE, TAM_PLACA;
FILE *P;
puts("Digite a placa: ");
fflush(stdin);
gets(PL);
strupr(PL);//deixa caracteres da placa em maiúsculo
for(I2=0; I2<10; I2++)
{
if(strcmp(PL, CARRO[I2].PLACA)==0)
{
printf("\nVeiculo ja cadastrado, informe outra placa\n\n");
puts("Digite a placa: ");
fflush(stdin);
gets(PL);
}
}
strcpy(CARRO[I].PLACA, PL);
TAM_PLACA=strlen(CARRO[I].PLACA);
if(TAM_PLACA!=7)
{
if(TAM_PLACA<7)
{
printf("\nPlaca invalida\nDigitos insuficientes\n\n");
INSERIR(I);
}
else//(TAM_PLACA>7)
{
printf("\nPlaca invalida\nMuitos digitos\n\n");
INSERIR(I);
}
}
//testa se 3 primeiros digitos são letras
for(I2=0; I2<3; I2++)
{
TESTE=isalpha(CARRO[I].PLACA[I2]);//retorna 1 se for letra
if(TESTE==0)
{
printf("\nPlaca invalida\nTres primeiros digitos devem ser letras!\n\n");
INSERIR(I);
}
}
//testa se 4 últimos digitos não são letras
for(I2=3; I2<7; I2++)
{
TESTE=isalpha(CARRO[I].PLACA[I2]);//retorna 1 se for letra
if(TESTE==1)
{
printf("\nPlaca invalida\nQuatro ultimos digitos devem ser numeros!\n\n");
INSERIR(I);
}
}
puts("\nDigite o modelo: ");
fflush(stdin);
gets(CARRO[I].MODELO);
//deixa string em minúsculo
strlwr(CARRO[I].MODELO);
//deixa primeiro caractere maiúsculo
CARRO[I].MODELO[0]=toupper(CARRO[I].MODELO[0]);
puts("\nDigite a marca: ");
fflush(stdin);
gets(CARRO[I].MARCA);
strlwr(CARRO[I].MARCA);
CARRO[I].MARCA[0]=toupper(CARRO[I].MARCA[0]);
puts("\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("Sem espaco para cadastrar\nEnter voltar ao menu...");
getch();
system("cls");
}
}
//-----------------------------------------------------------------------------
void CADASTRAR_VAGA()
{
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("Sem espaco para cadastrar\nEnter voltar ao menu...");
getch();
system("cls");
}
}
//-----------------------------------------------------------------------------
void CONTROLAR_ESTACIONAMENTO()
{
int horaent, minent, horasai, minsai, tempo;
float valoraserpago;
printf("\nDigite a placa para calcular o valor a ser pago num estacionamento\n");
printf("\nValor do estacionamento: 10.00 por hora ou fracao\n\n");
printf("\nQual eh a hora de entrada? ");
scanf("%i",&horaent);
printf("\nQual eh o minuto de entrada? ");
scanf("%i",&minent);
printf("\nQual eh a hora de saida?");
scanf("%i",&horasai);
printf("\nQual eh o minuto de saida? ");
scanf("%i",&minsai);
if (horasai >= horaent)
{
tempo = (horasai - horaent);
if (minsai > minent)
++tempo; // fracao de minutos implica na cobranca de mais 1 hora
valoraserpago = tempo * 10.00;
printf("\nTotal a ser pago por %i hora(s) de estacionamento R$ %.2f",
tempo,valoraserpago);
}
else printf("\nErro nos valores de hora de entrada e saida.");
printf("\n\nFim do programa");
getch();
}
//-----------------------------------------------------------------------------
void CONSULTAR_VAGAS()
{}
//-----------------------------------------------------------------------------
void LISTAR_OCUPADAS()
{}
void LISTAR_VEICULOS()
{
int I, X=1;
FILE *P;
P=fopen("CARRO.txt", "r");
fread(&CARRO, sizeof(CARRO), 1, P);
for(I=0; I<10; I++)
{
if(CARRO[I].STATUS==1)
{
printf("Veiculo %d\nPlaca: %s\t Modelo: %s\t Marca: %s\t Cor: %s\n\n", I+1, CARRO[I].PLACA, CARRO[I].MODELO, CARRO[I].MARCA, CARRO[I].COR);
X=0;
}
}
if(X==0)
{
printf("\nEnter voltar ao menu...");
getch();
system("cls");
}
else
{
puts("Nenhum veiculo cadastrado\nEnter voltar ao menu...");
getch();
system("cls");
}
}
ENCONTREI ESSE PROGRAMA NA NET E DEI UMA APERFEIÇOADA.
ELE ESTÁ COM OS SEGUINTES PROBLEMAS:
COLOQUEI A VOID CONTROLAR ESTACIONAMENTO MAS NÃO CONSIGO VINCULAR O CONTROLE DE ESTACIONAMENTO COM OS VEICULOS JÁ CADASTRADOS.
FALTA TERMINAR AS VOID:
void CONSULTAR_VAGAS()
void LISTAR_OCUPADAS()
void LISTAR_VEICULOS()
POR FAVOR ME AJUDEM, carol,
beijos
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void INICIALIZA();
void INSERIR(int I);
void CADASTRAR_VEICULO();
void CADASTRAR_VAGA();
void CONTROLAR_ESTACIONAMENTO();
void CONSULTAR_VAGAS();
void LISTAR_OCUPADAS();
void LISTAR_VEICULOS();
struct
{
char PLACA[8], MODELO[20], MARCA[20], COR[10];
int STATUS;
}CARRO[10];
int NVEI=0; //contador de veículos cadastrados
//int NVAG=0; //contador de vagas cadastradas
//-----------------------------------------------------------------------------
main()
{
int OP;
FILE* P;
INICIALIZA();
//abre o arquivo pro fopen "w" não substituir o que já existe
P=fopen("CARRO.txt", "r");
fread(&CARRO, sizeof(CARRO), 1, P);
fclose(P);
do{
printf("CONTROLE DE ESTACIONAMENTO\n\n");
printf("1. Cadastrar veiculo\n2. Cadastrar vaga\n3. Controle do estacionamento\n");
printf("4. Consultar vagas\n5. Listar vagas ocupadas\n6. Listar veiculos\n7. Sair\n\nOpcao: ");
scanf("%d", &OP);
switch(OP)
{
case 1:
{
system("cls");
CADASTRAR_VEICULO();
break;
}
case 2:
{
system("cls");
CADASTRAR_VAGA();
break;
}
case 3:
{
system("cls");
CONTROLAR_ESTACIONAMENTO();
break;
}
case 4:
{
system("cls");
CONSULTAR_VAGAS();
break;
}
case 5:
{
system("cls");
LISTAR_OCUPADAS();
break;
}
case 6:
{
system("cls");
LISTAR_VEICULOS();
break;
}
case 7: break;
default:
{
system("cls");
printf("Opcao invalida!\nEnter para voltar ao menu");
getch();
system("cls");
}
}
}while(OP!=7);
getchar();
}
//-----------------------------------------------------------------------------
void INICIALIZA()
{
int I;
for(I=0; I<10; I++)
CARRO[I].STATUS=0;
}
//-----------------------------------------------------------------------------
void INSERIR(int I)
{
char PL[8];
int I2, TESTE, TAM_PLACA;
FILE *P;
puts("Digite a placa: ");
fflush(stdin);
gets(PL);
strupr(PL);//deixa caracteres da placa em maiúsculo
for(I2=0; I2<10; I2++)
{
if(strcmp(PL, CARRO[I2].PLACA)==0)
{
printf("\nVeiculo ja cadastrado, informe outra placa\n\n");
puts("Digite a placa: ");
fflush(stdin);
gets(PL);
}
}
strcpy(CARRO[I].PLACA, PL);
TAM_PLACA=strlen(CARRO[I].PLACA);
if(TAM_PLACA!=7)
{
if(TAM_PLACA<7)
{
printf("\nPlaca invalida\nDigitos insuficientes\n\n");
INSERIR(I);
}
else//(TAM_PLACA>7)
{
printf("\nPlaca invalida\nMuitos digitos\n\n");
INSERIR(I);
}
}
//testa se 3 primeiros digitos são letras
for(I2=0; I2<3; I2++)
{
TESTE=isalpha(CARRO[I].PLACA[I2]);//retorna 1 se for letra
if(TESTE==0)
{
printf("\nPlaca invalida\nTres primeiros digitos devem ser letras!\n\n");
INSERIR(I);
}
}
//testa se 4 últimos digitos não são letras
for(I2=3; I2<7; I2++)
{
TESTE=isalpha(CARRO[I].PLACA[I2]);//retorna 1 se for letra
if(TESTE==1)
{
printf("\nPlaca invalida\nQuatro ultimos digitos devem ser numeros!\n\n");
INSERIR(I);
}
}
puts("\nDigite o modelo: ");
fflush(stdin);
gets(CARRO[I].MODELO);
//deixa string em minúsculo
strlwr(CARRO[I].MODELO);
//deixa primeiro caractere maiúsculo
CARRO[I].MODELO[0]=toupper(CARRO[I].MODELO[0]);
puts("\nDigite a marca: ");
fflush(stdin);
gets(CARRO[I].MARCA);
strlwr(CARRO[I].MARCA);
CARRO[I].MARCA[0]=toupper(CARRO[I].MARCA[0]);
puts("\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("Sem espaco para cadastrar\nEnter voltar ao menu...");
getch();
system("cls");
}
}
//-----------------------------------------------------------------------------
void CADASTRAR_VAGA()
{
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("Sem espaco para cadastrar\nEnter voltar ao menu...");
getch();
system("cls");
}
}
//-----------------------------------------------------------------------------
void CONTROLAR_ESTACIONAMENTO()
{
int horaent, minent, horasai, minsai, tempo;
float valoraserpago;
printf("\nDigite a placa para calcular o valor a ser pago num estacionamento\n");
printf("\nValor do estacionamento: 10.00 por hora ou fracao\n\n");
printf("\nQual eh a hora de entrada? ");
scanf("%i",&horaent);
printf("\nQual eh o minuto de entrada? ");
scanf("%i",&minent);
printf("\nQual eh a hora de saida?");
scanf("%i",&horasai);
printf("\nQual eh o minuto de saida? ");
scanf("%i",&minsai);
if (horasai >= horaent)
{
tempo = (horasai - horaent);
if (minsai > minent)
++tempo; // fracao de minutos implica na cobranca de mais 1 hora
valoraserpago = tempo * 10.00;
printf("\nTotal a ser pago por %i hora(s) de estacionamento R$ %.2f",
tempo,valoraserpago);
}
else printf("\nErro nos valores de hora de entrada e saida.");
printf("\n\nFim do programa");
getch();
}
//-----------------------------------------------------------------------------
void CONSULTAR_VAGAS()
{}
//-----------------------------------------------------------------------------
void LISTAR_OCUPADAS()
{}
void LISTAR_VEICULOS()
{
int I, X=1;
FILE *P;
P=fopen("CARRO.txt", "r");
fread(&CARRO, sizeof(CARRO), 1, P);
for(I=0; I<10; I++)
{
if(CARRO[I].STATUS==1)
{
printf("Veiculo %d\nPlaca: %s\t Modelo: %s\t Marca: %s\t Cor: %s\n\n", I+1, CARRO[I].PLACA, CARRO[I].MODELO, CARRO[I].MARCA, CARRO[I].COR);
X=0;
}
}
if(X==0)
{
printf("\nEnter voltar ao menu...");
getch();
system("cls");
}
else
{
puts("Nenhum veiculo cadastrado\nEnter voltar ao menu...");
getch();
system("cls");
}
}