Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

PROGRAMA EM C PARA CONTROLE DE ESTACIONAMENTO

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 PROGRAMA EM C PARA CONTROLE DE ESTACIONAMENTO em Seg Abr 20, 2015 5:00 pm

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");
}
}

Ver perfil do usuário

2 Explique um pouco melhor em Ter Abr 21, 2015 5:44 am

Não entendi muito bem. Como assim vincular?

Ver perfil do usuário
é que eu peguei aquela parte de outro programa mas ele funciona como se fosse isolado, ele nao vai buscar um veiculo que está cadastrado

Ver perfil do usuário

Mas o vetor "CARRO" para onde são carregados os carros cadastrados é global, você pode acessá-lo da função "CONTROLAR_ESTACIONAMENTO".
É só você pedir para informarem a placa nessa função, e depois fazer as comparações necessárias.

Aliás, já tá até escrito lá: "printf("\nDigite a placa para calcular o valor a ser pago num estacionamento\n");".

Bom, foi o que eu entendi da sua dúvida e do código... se não for isso é só falar. Very Happy

Ver perfil do usuário

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum