Pi0trek

Dynamiczne tworzenie macierzy zapis/odczyt plik V0.10

Nov 29th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <cstdlib>
  5. #include <cstdlib>
  6. using namespace std;
  7. //********************************************************************************************************************************************************************
  8. class Dane
  9. {
  10. public:
  11.  
  12.     void zapisz_dane_do_pliku(string nazwa_pliku);
  13.     void czytaj_dane_z_pliku();
  14.     int ilosc_wierszy;
  15.     int ilosc_kolumm;
  16.     int **w_na_tablice;
  17.     Dane(int ilosc_wierszy_, int ilosc_kolumn_);
  18.     ~Dane();
  19.  
  20. };
  21. Dane::Dane(int ilosc_wierszy_, int ilosc_kolumn_)
  22. {
  23.     ilosc_wierszy = ilosc_wierszy_;
  24.     ilosc_kolumm = ilosc_kolumn_;
  25.  
  26.     int ** tablica = new int *[ilosc_wierszy_];
  27.     w_na_tablice = tablica;
  28.     for (int i = 0; i<ilosc_wierszy_; i++)
  29.     {
  30.         tablica[i] = new int[ilosc_kolumn_];
  31.     }
  32.  
  33.     for (int i = 0; i<ilosc_wierszy_; i++)
  34.     {
  35.         for (int j = 0; j<ilosc_kolumn_; j++)
  36.         {
  37.             tablica[i][j] = 5;
  38.         }
  39.     }
  40. }
  41. Dane::~Dane()
  42. {
  43.     for (int i = 0; i<ilosc_wierszy; i++)
  44.     {
  45.         delete w_na_tablice[i];
  46.     }
  47.     delete w_na_tablice;
  48. }
  49. //------------------------------------------------------------------------------------------------------------------------------------------
  50. void Dane::zapisz_dane_do_pliku(string nazwa_pliku)
  51. {
  52.     fstream plik;
  53.     string nazwa_pliku_ = nazwa_pliku.append(".txt"); // tworzy plik o podanej nazwie przez urzytkownika
  54.     plik.open(nazwa_pliku_, ios::out);
  55.     plik << ilosc_wierszy<<" " << ilosc_kolumm<<" ";
  56.     for (int i = 0; i <ilosc_wierszy; i++) {
  57.         for (int j = 0; j < ilosc_kolumm; j++) {
  58.             plik << w_na_tablice[i][j] << " ";
  59.         }
  60.         plik << endl;
  61.     }
  62.     plik.close();
  63. }
  64. //------------------------------------------------------------------------------------------------------------------------------------------
  65.  
  66. void Dane::czytaj_dane_z_pliku()
  67. {
  68.     fstream plik;
  69.     string liczba_wierszy11 = "", liczba_kolumn11 ="", tymczasowa_wczytana_zmienna = "";
  70.     char zmienna_do_porownania ;
  71.     int liczba_wierszy_int, liczba_kolumn_int;
  72.    
  73.     plik.open("dane.txt", ios::in);
  74.  
  75.     if (plik.good() == true)
  76.     {
  77. //****************************************************Wczytanie rozmiaru z 2 pierwszych liczb w pliku*************************************************************
  78.         while (true)
  79.         {      
  80.             plik.get(zmienna_do_porownania);
  81.        
  82.             if ( zmienna_do_porownania != ' ')
  83.             {
  84.                 liczba_wierszy11.push_back(zmienna_do_porownania);  // dodanie chara do stringa    
  85.             }
  86.             else
  87.             {
  88.                 break;
  89.             }
  90.         }
  91.         while (true)
  92.         {
  93.             plik.get(zmienna_do_porownania);
  94.  
  95.             if (zmienna_do_porownania != ' ')
  96.             {
  97.                 liczba_kolumn11.push_back(zmienna_do_porownania); // dodanie chara do stringa
  98.             }
  99.             else
  100.             {
  101.                 break;
  102.             }
  103.         }
  104. //*************************************************************************************************************************************************************
  105.         liczba_wierszy_int = atoi(liczba_wierszy11.c_str()); // konwersja stringa na inta
  106.         liczba_kolumn_int = atoi(liczba_kolumn11.c_str());
  107. //*******************************************************Uzupełnianie macierzy z pliku*************************************************************************   
  108. //-------------------------------------------------------Dynamiczne tworzenie macirzy o wczytanym rozmiarze----------------------------------------------------    
  109.         int **macierz = new int*[liczba_wierszy_int];
  110.         for (int i = 0; i<liczba_wierszy_int; i++)
  111.         {
  112.             macierz[i] = new int[liczba_kolumn_int];
  113.         }
  114. //-------------------------------------------------------Uzupełnianie macierzy----------------------------------------------------------------------------------          
  115.             for (int i = 0; i < liczba_wierszy_int; i++)
  116.             {
  117.                 for (int j = 0; j < liczba_kolumn_int; j++)
  118.                 {
  119.                     while (true)
  120.                     {
  121.                         plik.get(zmienna_do_porownania);
  122.  
  123.                         if (zmienna_do_porownania != ' ')
  124.                         {
  125.                             tymczasowa_wczytana_zmienna.push_back(zmienna_do_porownania);
  126.                         }
  127.                         else
  128.                         {
  129.                             macierz[i][j] = atoi(tymczasowa_wczytana_zmienna.c_str());
  130.                             tymczasowa_wczytana_zmienna = "";
  131.                             break;
  132.                         }
  133.                     }
  134.                 }
  135.             }
  136. //****************************************************Wyświetlanie dal sprawdzenie poprawności wczytania****************************************
  137.         for (int i = 0; i<liczba_wierszy_int; i++)
  138.         {
  139.             for (int j = 0; j<liczba_kolumn_int; j++)
  140.             {
  141.                 cout << macierz[i][j]<<" ";
  142.             }
  143.             cout << endl;
  144.         }
  145. //**********************************************************************************************************************************************
  146.  
  147.         plik.close();
  148.     }
  149. //**********************************************************************************************************************************************
  150.     else
  151.     {
  152.         cout << "nie ma pliku";
  153.     }
  154. }
  155. //------------------------------------------------------------------------------------------------------------------------------------------
  156.  
  157. int main()
  158. {
  159.     Dane cos(3, 6);
  160.     cos.zapisz_dane_do_pliku("dane");
  161.     cos.czytaj_dane_z_pliku();
  162.     getchar();
  163.     return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment