• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie czyta mi całych linijek pliku, program na podstawie listy

0 głosów
130 wizyt
pytanie zadane 29 grudnia 2015 w C i C++ przez martix3 Użytkownik (690 p.)

Witam! Mam do napisania program, który m.in. z pliku tekstowego będzie wyświetlał listę,dodawał elementy itp.,  czyli w tym przypadku dane o płytach dvd. Wszystko było by ok, gdyby nie to, że program nieprawidłowo wyświetla mi dane z pliku. Wyświetla pojedyncze wyrazy a nie całe linijki. Podobnie przy dodawaniu elementów do listy. Nie piszcie tylko, trzeba użyć getline() czy coś w tym stylu, bo próbowałm to ogarnąć, ale mi nie idzie. Proszę o konkretną pomoc, jak konkretnie w kodzie użyć tego by wszystko działało. 

 

Tu są dane, jakie miałam w pliku dvd.txt :

Ogniem i mieczem 
Jerzy Hoffman 
Izabella Scorupco 
Michał Żebrowski 
Aleksandr Domogarow 
1999 
Pan Tadeusz 
Andrzej Wajda 
Bogusław Linda 
Michał Żebrowski 
Daniel Olbrychski 
1999 
Potop 
Jerzy Hoffman 
Daniel Olbrychski 
Małgorzata Braunek 
Tadeusz Łomnicki 
1974 
Pan Wołodyjowski 
Jerzy Hoffman 
Tadeusz Łomnicki 
Magdalena Zawadzka 
Daniel Olbrychski 
1969 

A tu kod mojego programu:

#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct dvd
{string tytul;
string rezyser;
string aktor1;
string aktor2;
string aktor3;
int rok;};

typedef struct element
    { struct dvd p;
    struct element *next;
    }Element;
    typedef Element *Lista;
void logowanie(string login, string haslo)
{
    }
 void wyswietl(Lista a)
    {//UWAGA! Działać ma na liście, nie tylko na pliku!
        cout<<"\n";

        while(a)
        {
            cout<<(a->p).tytul<<endl;
            cout<<(a->p).rezyser<<endl;
            cout<<(a->p).aktor1<<endl;
            cout<<(a->p).aktor2<<endl;
            cout<<(a->p).aktor3<<endl;
            cout<<(a->p).rok<<endl;

            a=a->next;
            cout<<"\n";
        }
    }
    Lista dodaj_ost(struct dvd a, Lista b)
{
    Lista p;
    Lista pocz=b;
    p=new Element;
    p->p=a;
    p->next=NULL;
    if(!b)
    return p;
    Lista c;
    while(b)
    {
        c=b;
        b=b->next;
    } c->next=p;
    return pocz;
}
Lista przenies(Lista b)//funkcja przenosi elementy z pliku na liste
{
       struct dvd z;

        ifstream plik;
        plik.open("dvd.txt");
        if(!plik)
        {
            cout<<"Blad otwarcia pliku\n";
            return b;
        }


while(plik.good())
        {
         {plik>>z.tytul;
            plik>>z.rezyser;
           plik>>z.aktor1;
            plik>>z.aktor2;
            plik>>z.aktor3;
            plik>>z.rok;
         }
           b=dodaj_ost(z,b);//dodaje element z pliku na koniec listy
        }return b;
    }
    void przenies2(Lista b)//zapisuje liste w pliku
{
              ofstream plik("listazap.txt");

        while(b)
        {
            plik<<(b->p).tytul<<endl;
            plik<<(b->p).rezyser<<endl;
            plik<<(b->p).aktor1<<endl;
            plik<<(b->p).aktor2<<endl;
                 plik<<(b->p).aktor3<<endl;
            plik<<(b->p).rok<<endl;
 b=b->next;
        }}
int main()
{Lista b=NULL; int x; struct dvd z;
     cout<<"Witaj w wyszukiwarce plyt DVD!\n";
     //Logowanie,jeszce do zrobienia, jeśli poprawnie się zaloguje to idziemy do while, a jak nie to nadal próbujemy się logować
     b=przenies(b);
     while(1)
   { cout<<"\n";
cout<<"\n";
          cout<<"Aby kontynuowac wybierz numer zadania, jakie chcesz wykonac:\n";
          cout<<endl;
         cout<<"0-Wyszukaj dane o filmie przy pomocy tytulu\n";//nie koniecznie
          cout<<"1-Wyszukaj filmy podanego rezysera\n";//sortowanie wg rezysera (?)
           cout<<"2-Wyszukaj filmy, w ktorych gral dany aktor\n";
            cout<<"3-Wyszukaj filmy z danego przedzialu czasowego\n";
             cout<<"4-Wyswietl wszystkie filmy\n";
             cout<<"5-Dodaj film do bazy\n";
              cout<<"6- Usun film z bazy\n"; //Wykonalne tylko dla administratora
               cout<<"7-Edytuj dane o filmie\n"; //Wykonalne tylko dla administratora
                 cout<<"8-Zmien haslo\n";
                  cout<<"9-Dodaj uzytkownika\n"; //Wykonalne tylko dla administratora
                    cout<<"10-Usun uztkownika\n"; //Wykonalne tylko dla administratora
                      cout<<"11-Zakoncz program\n\n";


    cin>>x;
    switch(x)
    {       case 0:break;
            case 1:break;
            case 2:break;
            case 3:break;
            case 4:{wyswietl(b);break;}
            case 5:{ cout<<"Podaj tytul:\n";
             cin>>z.tytul;
            cout<<"Podaj imie i nazwisko rezysera:\n";
             cin>>z.rezyser;
             cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
             cin>>z.aktor1;
             cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
             cin>>z.aktor2;
             cout<<"Podaj imie i nazwisko aktora, grajacego w filmie:\n";
             cin>>z.aktor3;
             cout<<"Podaj rok premiery filmu:\n";
             cin>>z.rok;
             b=dodaj_ost(z,b); break;}
            case 6:break;
            case 7:break;
            case 8:break;
            case 9:break;
            case 10:break;
            case 11:przenies2(b);return 0;
            default:cout<<"\nPodaj poprawny numer zadania"; break;
    //Zapisz listę w pliku, zapisz dane o uzytkownikach w pliku
    }

}


}
}

1 odpowiedź

0 głosów
odpowiedź 29 grudnia 2015 przez martix3 Użytkownik (690 p.)
Szczególnie chodzi mi tu o funkcję przenies i 5 wariant w switch.

Podobne pytania

0 głosów
2 odpowiedzi 169 wizyt
pytanie zadane 18 lutego 2016 w C i C++ przez Daaa22 Dyskutant (8,050 p.)
0 głosów
1 odpowiedź 87 wizyt
pytanie zadane 30 października 2021 w C i C++ przez letmestay Początkujący (410 p.)
+1 głos
2 odpowiedzi 224 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez Yari27 Początkujący (410 p.)

89,689 zapytań

138,291 odpowiedzi

309,236 komentarzy

59,620 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...