Advertisement
Talar97

[JPO] Lab06

Apr 4th, 2018
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. //Lab06
  2.  
  3. #include <cstdlib>
  4. #include <iostream>
  5. #include <fstream>
  6. #include <cstring>
  7.  
  8. using namespace std;
  9.  
  10. //Prototypy
  11. void WyborZadania();
  12. bool Zad3(string slowo);
  13. void Zad4();
  14.  
  15. struct TData{
  16.     int x;
  17. };
  18.  
  19. int main() {
  20.     WyborZadania();
  21.     return EXIT_SUCCESS;
  22. }
  23.  
  24. void Zad1(){
  25.     int liczba;
  26.     fstream plik;
  27.     plik.open("liczby.txt", ios::app | ios::out);
  28.     do{
  29.         cout << "Wprowadz liczbe: ";
  30.         cin >> liczba;
  31.         plik << liczba << " ";
  32.     }while(liczba!=0);
  33.     plik.close();
  34. }
  35.  
  36. bool Zad3(string input){
  37.     string slowo, odwrocony;
  38.     bool wynik = false;
  39.     for(int i = 0; i < input.length(); i++){
  40.         if(isalpha(input[i])){
  41.             slowo += tolower(input[i]);
  42.         }
  43.     }
  44.    
  45.     for(int i = 0; i < slowo.length(); i++){
  46.         odwrocony += tolower(slowo[slowo.length()-i-1]);
  47.     }
  48.    
  49.    
  50.     if(odwrocony == slowo) wynik = true;
  51.     else wynik = false;
  52.    
  53.     return wynik;
  54. }
  55.  
  56. void Zad4(string nazwa){
  57.     fstream plik;
  58.     string linia;
  59.     int liczba_sztuk;
  60.     int ostatnia_liczba;
  61.     string cena;
  62.     double suma;
  63.    
  64.     plik.open(nazwa.c_str());
  65.     while(!plik.eof()){
  66.         liczba_sztuk = 0;
  67.         getline(plik, linia);
  68.        
  69.         //Sprawdanie ilosci sztuk
  70.         if(!isdigit(linia[0])) liczba_sztuk = 1;
  71.         else{
  72.             string posredni;
  73.             for(int i = 0; i < linia.length(); i++){
  74.                 if(isdigit(linia[i])) posredni += linia[i];
  75.                 else { ostatnia_liczba=i; break;}
  76.             }
  77.             liczba_sztuk = atoi(posredni.c_str());
  78.         }
  79.        
  80.         //Wyszukiwanie ceny
  81.         for(int i = ostatnia_liczba; i < linia.length(); i++){
  82.             if(isdigit(linia[i]) || linia[i] == '.'){
  83.                 cena += linia[i];
  84.                 suma += (stod(cena.c_str()) * liczba_sztuk);
  85.             }
  86.         }
  87.        
  88.         cout << liczba_sztuk << ", " << cena <<  " | " <<linia << endl;
  89.         cena = "";
  90.     }
  91.     cout << "Suma zamowienia: " << suma;
  92.     plik.close();
  93. }
  94.  
  95. void Zad5(string fileName, string target, string replace){
  96.     fstream plik; fstream zapis;
  97.     string linia;
  98.     string wynik;
  99.    
  100.     zapis.open("wyniki.txt", ios::app | ios::out);
  101.     plik.open(fileName.c_str());
  102.     while(!plik.eof()){
  103.         getline(plik, linia);
  104.         size_t pos = linia.find( target );
  105.         if(pos < linia.length()){
  106.             linia.replace(pos,pos+replace.length(),replace);
  107.             //cout << pos << " | " << linia << endl;
  108.         }
  109.         zapis << linia << endl;
  110.     }
  111.    
  112.     plik.close();
  113.     zapis.close();
  114. }
  115.  
  116. void WyborZadania(){
  117.     int zad;
  118.     cout << "Wybierz zadanie: ";
  119.     cin >> zad;
  120.     switch(zad){
  121.         case 1:
  122.         {
  123.             Zad1();
  124.             break;
  125.         }  
  126.         case 2:
  127.         {
  128.             cout << "Wprowadz liczbe: "; int x;
  129.             cin >> x;
  130.             TData struktura = { x };
  131.             TData * pointer;
  132.             pointer = &struktura;
  133.            
  134.             cout << struktura.x << ", " << pointer->x << ", " << (*pointer).x;
  135.             break;
  136.         }
  137.         case 3:
  138.         {
  139.             string input;
  140.             cout << "Wpraowdz slowo: ";
  141.             getline(cin, input);
  142.             if(Zad3(input)) cout << "Wyrazenie " << input << " jest palindromem" << endl;
  143.             else cout << "Wyrazenie " << input << " nie jest palindromem" << endl;
  144.             break;
  145.         }
  146.         case 4:
  147.         {
  148.             cout << "Podaj nazwe pliku z rachunkiem: "; string nazwa;
  149.             cin >> nazwa;
  150.             Zad4(nazwa);
  151.             break;
  152.         }
  153.         case 5:
  154.         {
  155.             string filename;
  156.             string target;
  157.             string replace;
  158.             cout << "Wprowadz nazwe pliku: "; cin >> filename;
  159.             cout << "Zamieniamy: "; cin >> target;
  160.             cout << "Na ciag: "; cin >> replace;
  161.            
  162.             Zad5(filename, target, replace);
  163.             break;
  164.         }
  165.         default:
  166.         {
  167.           WyborZadania();
  168.             break;  
  169.         }    
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement