Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ wczytywanie danych z pliku txt

Doom 17 Kwi 2009 22:55 11622 3
  • #1 17 Kwi 2009 22:55
    Doom
    Poziom 18  

    Witam.
    Mam problem z programem. Chcę, aby wyszukał mi konkretne informacje w utworzonych wcześniej plikach tekstowych, ale wczytuje mi dane tylko z pierwszej linijki pliku. Nie mam pewności jak ma wyglądać kod do przeszukania całego pliku.

    Code:

    using namespace std;

           
    struct Piosenkarz{
           int id_wyk;
           char nazwisko[30];
           int id_cd;
           };
         
         int main(int argc, char *argv[])
    {
       
    int x=0, w=0;
    string nazwa;



       Piosenkarz tabuser[99],odczyt[99], od[100];
       

       

          cout<<"Podaj nazwisko: ";
          cin>>tabuser[x].nazwisko;
          cout<<"Podaj imie: ";
          cin>>tabuser[x].imie;
          cout<<"Podaj id wykonawcy: ";
          cin>>tabuser[x].id_wyk;
          


     
       
         cout<<"Podaj id wykonawcy: ";
       cin>>tabuser[x].id_wyk;
          cout<<endl<<"Podaj id plyty: ";
          cin>>tabuser[x].id_cd;




           
       //    cout<<"podaj ilosc piosenkarzy do wypisania"<<endl;
    //cin>>w;

    //zapis do pliku tekstowego
    ofstream dopliku1("pios.txt", ios_base::app);
    dopliku1<<tabuser[x].id_wyk<<" "<<tabuser[x].nazwisko<<"\n";

    dopliku1.close();
    ofstream dopliku2("cd.txt", ios_base::app);
    //for(x=0;x<w;x++){
    dopliku2<<tabuser[x].id_cd<<" "<<tabuser[x].id_wyk<<"\n";
    //}
    dopliku2.close();


    //odczyt z pliku tekstowego
    ifstream zpliku1("pios.txt",ios_base::in);
    for(x=0;x<w;x++){
    zpliku1>>odczyt[x].id_wyk>>odczyt[x].nazwisko;
    cout<<odczyt[x].id_wyk<<" "<<odczyt[x].nazwisko<<endl;
    }
    zpliku1.close();

    ifstream zpliku2("cd.txt", ios_base::in);
    for(x=0;x<w;x++){
    zpliku2>>odczyt[x].id_cd>>odczyt[x].id_wyk;




    cout<<odczyt[x].id_cd<<" "<<odczyt[x].id_wyk<<endl;
    }
    zpliku2.close();


    /
    //+++++++ Wyszukiwanie konkretnej osoby +++++++++++++++
         
            cout<<"podaj nazwisko"<<endl;
         cin>>nazwa;
        { //int licznik=0;
        ifstream zpliku1("pios.txt",ios_base::in);
         ifstream zpliku2("cd.txt", ios_base::in);
         //for(x=0;x<w;x++){
         zpliku1>>odczyt[x].id_wyk>>odczyt[x].nazwisko;//}
         zpliku2>>odczyt[x].id_cd>>odczyt[x].id_wyk;
           if(odczyt[x].nazwisko == nazwa){
    cout<<odczyt[x].id_wyk<<" "<<odczyt[x].nazwisko<<endl;
    //licznik = licznik + 1;
                              if(odczyt[x].id_wyk == odczyt[x].id_wyk){
                                     cout<<odczyt[x].id_cd<<" "<<odczyt[x].id_wyk<<endl;
      //                               licznik = licznik + 1;
      }             

    zpliku1.close();
    zpliku2.close();
    }      }
       
     

       system("PAUSE");
       return 0;
    }




    Wyciąganie konkretnych danych ma być oparte o nazwisko, a elementem wspólnym dwóch plików jest id_wyk. Podpowiecie, bo ja już nie mam pomysłu...

  • #2 17 Kwi 2009 23:34
    maszkotek
    Poziom 16  

    Doom napisał:
    wczytuje mi dane tylko z pierwszej linijki pliku

    Może dlatego że zakomentowałeś pętlę?
    Code:
    //for(x=0;x<w;x++){ 


    Masz tam troszkę bałaganu, może na początek porozdzielaj kod do odpowiednich procedur. Upewnij się że plik z danymi ma odpowiedni format, że nie jest uszkodzony. ... Sam to wszystko napisałeś?

  • #3 18 Kwi 2009 22:26
    Doom
    Poziom 18  

    Sam. Dzięki heh nie zauważyłem tego, już działa, dzięki :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME