Boa tarde Pessoal, estou fazendo um exercicio de sistema de passagens e não estou conseguindo fazer um item.
"Usuario digita o código do onibus desejado e o sistema lista em tela todas as poltronas vagas, Após listar,o usuario deverá informar o numero da poltrona vaga e o nome do passageiro,quando listado novamente o onibus ,a poltrona selecionada não devera aparecer em tela..."
Minha dúvida é em relação a associar o onibus com a poltrona. Tenho um menu, e 2 funções que gravam e le de um arquivo.txt
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
struct rodoviaria
{
int codigo,horapartida,poltrona[42];
char destinoviagem[100];
};
//função grava
void grava(struct rodoviaria a[1000],int fim)
{
FILE *arq;
int teste,i;
arq = fopen("arquivo.txt","wb"); // w = cria arquivo, b = modo binario
if(arq != NULL)
{
for(i=0;i<fim;i++)
{
teste = fwrite(&a[i],sizeof(struct rodoviaria),1,arq);
if (teste !=1) // retorna 1 gravou e 0 senao gravou
{
printf("erro ao salvar");
getch();
}
}
fclose(arq);
}
else
{
printf("erro ao abrir arquivo");
}
}
//função carrega
int carrega(struct rodoviaria a[1000]) // abre arquivo e carrega no vetor
{
FILE *arq;
int teste,percorre=0;
struct rodoviaria registro;
arq = fopen("arquivo.txt","rb");
if(arq != NULL)
{
while (!feof(arq)) // diferente do fim do arquivo?
{
teste = fread(®istro,sizeof(struct rodoviaria),1,arq);
if (teste ==1) // se conseguiu ler
{
a[percorre] = registro;
percorre++;
}
}
fclose(arq);
}
return percorre;
}
int main()
{
struct rodoviaria vet[1000];
int ultimo=0, op=0,i,j,x,codonibus=0,qtd=0,onibus[100];
char nomedestino[100];
//carrega vetor
for (i=0;i<42;i++)
{
qtd++;
onibus[i] = qtd;
}
while(op !=4)
{
ultimo = carrega(vet); //abre arquivo e carrega para o vetor
printf ("======================================MENU======================================\n");
printf ("1 - Cadastrar viagem :\n");
printf ("2 - Comprar passagem :\n");
printf ("3 - Listar Lista de passageiros :\n");
printf ("4 - Sair :\n\n");
fflush (stdin);
scanf ("%d",&op);
fflush (stdin);
if(op==1)
{
printf("Informe Codigo do Onibus:");
scanf ("%d",&vet[ultimo].codigo);
printf("Informe Destino de Viagem :");
fflush(stdin);
fgets (vet[ultimo].destinoviagem,100,stdin);
fflush(stdin);
printf("Informe Horario de Partida da Viagem:");
scanf ("%d",&vet[ultimo].horapartida);
ultimo++;
grava(vet,ultimo); //função para gravar vetor no arquivo .txt
onibus[i] = vet[ultimo].codigo;
printf("\n");
printf("Cadastro Realizado com sucesso !\n\n");
system("pause");
}
if(op==2)
{
printf("Informe Destino de Viagem :");
fflush(stdin);
fgets(nomedestino,100,stdin);
fflush(stdin);
printf("\n");
for(i=0;i<ultimo;i++)
{
x = strcmp(vet[i].destinoviagem,nomedestino);
if (x == 0)
{
printf ("=======================\n");
printf("Codigo do Onibus :%d\n",vet[i].codigo);
printf("Horario de Partida :%d\n",vet[i].horapartida);
printf("\n");
}
}
printf("Informe o codigo do onibus desejado:");
scanf("%d",&codonibus);
for(i=0;i<ultimo;i++) // laço no arquivo
{
if(vet[i].codigo == codonibus) // se codigo do arquivo == codigo digitado
{
printf("\n");
for (?)
{}
}
}
printf("\n");
system("pause");
}// fim op==2
Pergunta
Binder
Boa tarde Pessoal, estou fazendo um exercicio de sistema de passagens e não estou conseguindo fazer um item.
"Usuario digita o código do onibus desejado e o sistema lista em tela todas as poltronas vagas, Após listar,o usuario deverá informar o numero da poltrona vaga e o nome do passageiro,quando listado novamente o onibus ,a poltrona selecionada não devera aparecer em tela..."
Minha dúvida é em relação a associar o onibus com a poltrona. Tenho um menu, e 2 funções que gravam e le de um arquivo.txt
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> struct rodoviaria { int codigo,horapartida,poltrona[42]; char destinoviagem[100]; }; //função grava void grava(struct rodoviaria a[1000],int fim) { FILE *arq; int teste,i; arq = fopen("arquivo.txt","wb"); // w = cria arquivo, b = modo binario if(arq != NULL) { for(i=0;i<fim;i++) { teste = fwrite(&a[i],sizeof(struct rodoviaria),1,arq); if (teste !=1) // retorna 1 gravou e 0 senao gravou { printf("erro ao salvar"); getch(); } } fclose(arq); } else { printf("erro ao abrir arquivo"); } } //função carrega int carrega(struct rodoviaria a[1000]) // abre arquivo e carrega no vetor { FILE *arq; int teste,percorre=0; struct rodoviaria registro; arq = fopen("arquivo.txt","rb"); if(arq != NULL) { while (!feof(arq)) // diferente do fim do arquivo? { teste = fread(®istro,sizeof(struct rodoviaria),1,arq); if (teste ==1) // se conseguiu ler { a[percorre] = registro; percorre++; } } fclose(arq); } return percorre; } int main() { struct rodoviaria vet[1000]; int ultimo=0, op=0,i,j,x,codonibus=0,qtd=0,onibus[100]; char nomedestino[100]; //carrega vetor for (i=0;i<42;i++) { qtd++; onibus[i] = qtd; } while(op !=4) { ultimo = carrega(vet); //abre arquivo e carrega para o vetor printf ("======================================MENU======================================\n"); printf ("1 - Cadastrar viagem :\n"); printf ("2 - Comprar passagem :\n"); printf ("3 - Listar Lista de passageiros :\n"); printf ("4 - Sair :\n\n"); fflush (stdin); scanf ("%d",&op); fflush (stdin); if(op==1) { printf("Informe Codigo do Onibus:"); scanf ("%d",&vet[ultimo].codigo); printf("Informe Destino de Viagem :"); fflush(stdin); fgets (vet[ultimo].destinoviagem,100,stdin); fflush(stdin); printf("Informe Horario de Partida da Viagem:"); scanf ("%d",&vet[ultimo].horapartida); ultimo++; grava(vet,ultimo); //função para gravar vetor no arquivo .txt onibus[i] = vet[ultimo].codigo; printf("\n"); printf("Cadastro Realizado com sucesso !\n\n"); system("pause"); } if(op==2) { printf("Informe Destino de Viagem :"); fflush(stdin); fgets(nomedestino,100,stdin); fflush(stdin); printf("\n"); for(i=0;i<ultimo;i++) { x = strcmp(vet[i].destinoviagem,nomedestino); if (x == 0) { printf ("=======================\n"); printf("Codigo do Onibus :%d\n",vet[i].codigo); printf("Horario de Partida :%d\n",vet[i].horapartida); printf("\n"); } } printf("Informe o codigo do onibus desejado:"); scanf("%d",&codonibus); for(i=0;i<ultimo;i++) // laço no arquivo { if(vet[i].codigo == codonibus) // se codigo do arquivo == codigo digitado { printf("\n"); for (?) {} } } printf("\n"); system("pause"); }// fim op==2Link para o comentário
Compartilhar em outros sites
0 respostass 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.