Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. // To mam od kolegi i nie wiem czy jest dobrze
  2.  
  3. //program zawiera zadanie 1-3 Pliki_1.pdf
  4. #include<iostream>
  5. #include<string>
  6. #include<fstream>
  7. #include<iomanip>
  8. using namespace std;
  9.  
  10. struct linia
  11. {
  12.     int ilosc;
  13.     double cena;
  14.     string nazwa;
  15. };
  16.  
  17. ostream& operator << (ostream & a, linia & l) //operator strumienia <<
  18. {
  19.         a <<  setw(17) << setfill('.') << left << l.nazwa << setw(20) << right << l.ilosc << setfill(' ') << setw(2) << "x" << setw(7) << l.cena << " zl";
  20.         return a;
  21.        
  22. }
  23.  
  24. class Plik
  25. {
  26. private:
  27.     fstream p,f; //pliki
  28.     linia l; //obiekt struktury
  29.     string np; //nazwa pliku
  30. public:
  31.     Plik();
  32.     void wczytaj();
  33.     void najdluzszy();
  34. };
  35.  
  36. int main()
  37. {
  38.     Plik a;
  39.     a.wczytaj();
  40.     a.najdluzszy();
  41.     system("pause");
  42.     return 0;
  43. }
  44.  
  45. Plik::Plik() //konstruktor bezparametrowy
  46. {
  47.     licznikwierszy=0; //zerowanie licznika wierszy
  48. }
  49.  
  50. void Plik::wczytaj()
  51. {
  52.     cout << "Podaj nazwe pliku\n";
  53.     cin >> np;
  54.     f.open("ladnie.txt", ios::out); //otwarcie pliku w trybie do zapisu
  55.     p.open(np.c_str(), ios::in); //otwarcie w trybie do odczytu
  56.     int licznik=0;
  57.     double suma=0, irc; //irc=ilosc razy cena
  58.     while(p >> l.ilosc) //petla wczytujaca i formatujaca
  59.     {
  60.         p >> l.cena;
  61.         getline(p, l.nazwa);
  62.         licznik++;
  63.         irc=l.ilosc*l.cena;
  64.         suma += irc;
  65.         f<< setw(2) << licznik << "." <<l<< setw(20) << irc <<"zl\n";
  66.     }
  67.  
  68.     p.close();
  69.     p.open(np.c_str(), ios::app); //otwarcie pliku w trybie dopisywania na koncu pliku
  70.     for(int i=0; i<3; i++)
  71.     {
  72.         cout<<"Podaj ilosc cene nazwe\n";
  73.         cin>>l.ilosc>>l.cena;
  74.         getline(cin,l.nazwa);
  75.         p<<l.ilosc<<' '<<l.cena<<' '<<l.nazwa<<endl;
  76.         irc=l.ilosc*l.cena;
  77.         suma += irc;
  78.         licznik++;
  79.         f<< setw(2) << licznik << "." << l << setw(20) << irc <<"zl\n";
  80.     }
  81.     f<< setw(75) << setfill('-') << '-' << endl << setw(67) << setfill(' ') << "Razem: "<<suma<<endl; //podsumowanie
  82.     f.close();
  83.     p.close();
  84.     cout << "Dane wczytane\n";
  85. }
  86.  
  87.  
  88. void Plik::najdluzszy() //dziala ale zle (wczytywanie z zest.txt)
  89. {
  90.     p.open(np, ios::in);
  91.     string wiersz[5];
  92.     for (int i = 0; i < 5; i++)
  93.     {
  94.         getline(p, wiersz[i]);
  95.     }
  96.     p.close();
  97.     string najdluzszy;
  98.     for (int i = 0; i < 5; i++)
  99.     {
  100.         if (wiersz[i].length() > wiersz[i - 1].length()) // wyliczanie najdluzszego wiersza
  101.             najdluzszy = wiersz[i];
  102.     }
  103.     cout << "Najdluzszy wiersz:" << endl << najdluzszy << endl << "Ilosc znakow: " << najdluzszy.length() << endl;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement