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

Pesquisa De String


Guest Luckxander

Pergunta

Guest Luckxander

O programa abaixo funciona normalmente, mas no void retirada(), quando se busca a placa registrada, a mesma não é encontrada. Mas quando executa o void mostrar() a placa está lá.

Alguém sabe me dizer por que a pesquisa não funciona ???

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

    struct carro {

            char placa[7];
            int DiaEntrada ,MesEntrada ,AnoEntrada ,HoraEntrada ,MinutoEntrada;
            int DiaRetirada,MesRetirada,AnoRetirada,HoraRetirada,MinutoRetirada;
            int excluido;
    };

     /*
     excluido = 0 -> Registro ativo
     excluido = 1 -> Registro excluido
     */

void entrada (FILE *p){

            carro ca;

            cout<<"ENTRADA";
            cout<<"\nInforme a placa do veiculo(xxxyyyy): ";
            gets (ca.placa); //registra a placa

            cout<<"\nDigite o dia: ";
            cin>>ca.DiaEntrada;

            cout<<"\nDigite o mês: ";
            cin>>ca.MesEntrada;

            ca.AnoEntrada= 2006;
            cout<<"\nDigite a hora(0 a 23): ";
            cin>>ca.HoraEntrada;

            cout<<"\nDigite os minutos(0 a 59): ";
            cin>>ca.MinutoEntrada;


            ca.excluido = 0;  //registro ativo
            fseek( p, 0, SEEK_END ); //Posiciona o ponteiro no final do arquivo
            fwrite(&ca,sizeof(ca),1,p); //escreve o registro no arquivo
            clrscr();
}

void mostrar(FILE *p){

          carro ca;

          clrscr();

          //Retorna o ponteiro ao inicio do arquivo
          fseek(p,0,SEEK_SET);

          // percorre todo o arquivo exibindo somente os registros ativos
          while(!feof(p)){
                fread(&ca,sizeof(ca),1,p);
                if( ca.excluido==0){
                    cout<<"\nPlaca: "<<ca.placa;
                }
          }
          cout << "\nTecle enter: ";
}

void retirada(FILE *p,int contavaga,int vlivres){

            carro ca;

            int dia,hora,minuto;
            long mês;
            float total;

            int t;
            char placa2[7];
            int compara;

            cout<<"\nSAIDA DE VEICULO";
            cout<<"\nInforme a placa: ";
            gets (placa2);
            clrscr();

            fseek(p,0,SEEK_SET ); //volta o ponteiro ao inicio do arquivo

            //pesquisa para procurar a placa desejada
            while(!feof(p)){
                fread(&ca,sizeof(ca),1,p);
                if(ca.excluido==0){
                        compara=strcmp(ca.placa,placa2);
                        if (compara==0){
                            t=0;
                     break;
                        }
                        else {
                            t=1;
                        }
            }
            }

            if (t == 1){
                    cout<<"\nPLACA não ENCONTRADA - tecle enter\n";
            }
            else{
                    clrscr();
                    cout<<"SAIDA";
                    cout <<"\nPlaca: "<<ca.placa;
                    cout<< "\n"<<"Data de Entrada do veiculo: "<<ca.DiaEntrada<<"/" << ca.MesEntrada<<"/"<<ca.AnoEntrada;
                    cout<<"\n"<< "hora de Entrada: "<<ca.HoraEntrada<< ":"<<ca.MinutoEntrada ;

                    cout<<"\n\nDados de saida do veiculo";
                    cout<<"\nDigite o dia: ";
                    cin>>ca.DiaRetirada;

                    cout<<"Digite o mês: ";
                    cin>>ca.MesRetirada;

                    ca.AnoRetirada=2006;

                    cout<<"Digite a hora: ";
                    cin>>ca.HoraRetirada;

                    cout<<"digite os minutos: ";
                    cin>>ca.MinutoRetirada;

                    clrscr();
                    cout<<"\nPlaca:"<<ca.placa;
                    cout<<"\nData de Entrada do veiculo: "<<ca.DiaEntrada<<"/" << ca.MesEntrada<<"/"<<ca.AnoEntrada;
                    cout<<"\nHora de Entrada: "<<ca.HoraEntrada<< ":"<<ca.MinutoEntrada ;
                    cout<<"\nData de Saida do veiculo: "<<ca.DiaRetirada<<"/" << ca.MesRetirada<<"/"<<ca.AnoRetirada;
                    cout<<"\nHora de Saida: "<<ca.HoraRetirada<< ":"<<ca.MinutoRetirada ;

                    dia=ca.DiaRetirada-ca.DiaEntrada;

                    if (dia < 0){
                    dia=(dia * -1);
                    dia = ca.DiaEntrada - dia;
                    mês= ca.MesRetirada-ca.MesEntrada;
                    mês=0;
                    hora= ca.HoraRetirada-ca.HoraEntrada;
                    minuto=ca.MinutoRetirada-ca.MinutoEntrada;
                    mês=(mês * 43200);
                    dia= (dia * 1440);
                    hora =(hora * 60);
                    total=(mês+dia+hora+minuto);
                        if (total<0){
                            total =(total * -1);
                            cout<<"\nTempo no estacionamento: "<<total<<" minutos.";
                            total=(mês+dia+hora+minuto);
                            total=total/15;
                            cout<<"\nTotal a pagar: R$"<<total;

                            ca.excluido = 1; //torna o registro inativo

                            // posiciona o ponteiro no final do arquivo
                            fseek(p,0,SEEK_END);

                            //escreve o registro modificado.
                            fwrite(&ca,sizeof(ca),1,p);
                        }
                        else{
                            cout<<"\nTempo no estacionamento: "<<total<<" minutos.";
                            total=(mês+dia+hora+minuto);
                            total=total/15;
                            cout<<"\nTotal a pagar: R$"<<total;

                            ca.excluido = 1; //torna o registro inativo

                            // posiciona o ponteiro no final do arquivo 
                            fseek(p,0,SEEK_END);

                            //escreve o registro modificado.
                            fwrite(&ca,sizeof(ca),1,p);
                        }
                    }
                    else{
                        mês= ca.MesRetirada-ca.MesEntrada;
                        hora= ca.HoraRetirada-ca.HoraEntrada;
                        minuto=ca.MinutoRetirada-ca.MinutoEntrada;
                        mês=(mês * 43200);
                        dia= (dia * 1440);
                        hora =(hora * 60);
                        total=(mês+dia+hora+minuto);
                        if (total < 0){
                            total =(total * -1);
                            cout<<"\nTempo no estacionamento: "<<total<<" minutos.";
                            total=(mês+dia+hora+minuto);
                            total=total / 15;
                            cout<<"\nTotal a pagar: R$"<<total;

                            ca.excluido = 1; //torna o registro inativo

                            // posiciona o ponteiro no final do arquivo
                            fseek(p,0,SEEK_END);

                            //escreve o registro modificado.
                            fwrite(&ca,sizeof(ca),1,p);
                        }
                        else {
                            cout<<"\nTempo no estacionamento: "<<total<<" minutos.";
                            total=(mês+dia+hora+minuto);
                            total=total/15;
                            cout<<"\nTotal a pagar: R$"<<total;

                            ca.excluido = 1; //torna o registro inativo

                            // posiciona o ponteiro no final do arquivo
                            fseek(p,0,SEEK_END);

                            //escreve o registro modificado.
                            fwrite(&ca,sizeof(ca),1,p);
                    }
                    contavaga--;
                    vlivres++;
                    cout << "\n\nVAGA LIBERADA - tecle enter\n";
                }
            }
}

void main (){

                FILE *p;

                int num_vaga,x=1;
                int recebe=0;
                int contavaga;
                int vlivres;

                cout<<"ESTACIONAMENTO";
                cout<<"\nDigite o numero de vagas existentes: ";
                cin>>num_vaga;

                p=fopen("c:\\texto.txt","ab+");

                if(p==NULL){
                    cout << "\nArquivo invalido!!!";
                    return;
                }

                contavaga=0;
                vlivres=num_vaga;

        while  (x!=0){
                clrscr();
                cout<<"ESTACIONAMENTO";
                cout<<"\nVagas disponiveis: "<<vlivres;
                cout<<"\nVagas ocupadas: "<<contavaga;
                cout<<"\n\n0 - Encerrar";
                cout<<"\n1 - Entrada de vêículos";
                cout<<"\n2 - Saida de vêículos";
                cout<<"\n3 - Placas cadastradas";
                cout<<"\n\nDigite uma opçao: ";
                cin>>recebe;

                if (recebe==0){
                    x=0;
               fclose(p);
                    break;
                }
                if((recebe==1) && (contavaga<num_vaga)) {
                    clrscr();
                    entrada(p);
                    contavaga++;
                    vlivres--;
                }
                    else if  ((recebe==1) && (contavaga==num_vaga)){
                   clrscr();
                        cout << "\nESTACIONAMENTO LOTADO - tecle enter ";
                        getch();
                    }
                if ((recebe==2) && (contavaga>0)){
                            clrscr();
                            retirada(p,contavaga,vlivres);
                            getch();
                }
                    else if((recebe==2) && (contavaga==0)){
                   clrscr();
                        cout<<"\nESTACIONAMENTO VAZIO - tecle enter ";
                        getch();
                    }
                if ((recebe==3)&&(contavaga>0)){
                     clrscr();
                     mostrar(p);
                     getch();
                }
                    else if((recebe==3) && (contavaga==0)){
                  clrscr();
                        cout<<"\nESTACIONAMENTO VAZIO - tecle enter ";
                        getch();
                    }

        }
}

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,4k
×
×
  • Criar Novo...