Jump to content
Fórum Script Brasil
  • 0

Pesquisa De String


Guest Luckxander
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...