• 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

Object Storage Arubacloud
0 głosów
445 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 204 wizyt
pytanie zadane 18 lutego 2016 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
0 głosów
1 odpowiedź 269 wizyt
pytanie zadane 30 października 2021 w C i C++ przez letmestay Użytkownik (520 p.)
+1 głos
2 odpowiedzi 464 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez Yari27 Początkujący (410 p.)

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...