Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <stdio.h>
- #include <fstream>
- #include <string>
- #include<ctime>
- #include<cstdlib>
- using namespace std;
- template <typename TYP>
- class Tablica
- {
- int mRozmiar;
- TYP* pTablica;
- Tablica() = delete;
- public:
- void adres()
- {
- cout << pTablica << endl;
- }
- Tablica(int rozmiar)
- : mRozmiar(rozmiar)
- {
- pTablica = new TYP[rozmiar];
- }
- bool WczytajTablice(std::istream &strumienWej)
- {
- TYP doWczytania;
- int iterator = 0;
- while (iterator < mRozmiar && strumienWej >> doWczytania)
- {
- pTablica[iterator] = doWczytania;
- ++iterator;
- }
- return iterator == mRozmiar;
- }
- void WypiszTablice(std::ostream &strumienWyj)
- {
- for (auto i = 0; i < mRozmiar; ++i)
- {
- strumienWyj << pTablica[i] << " ";
- }
- }
- ~Tablica()
- {
- delete[] pTablica;
- }
- bool ZapiszDoPliku(std::string nazwa, bool czyBinarny = false)
- {
- auto binarny = czyBinarny ? ios::binary : 0;
- std::fstream plikWyjsciowy(nazwa.c_str(), ios::out | binarny);
- if (plikWyjsciowy.is_open())
- {
- WypiszTablice(plikWyjsciowy);
- plikWyjsciowy.close();
- return true;
- }
- else
- {
- return false;
- }
- }
- bool WczytajZPliku(std::string nazwa, bool czyBinarny = false)
- {
- auto binarny = czyBinarny ? ios::binary : 0;
- std::fstream plikWyjsciowy(nazwa.c_str(), ios::in | binarny);
- if (plikWyjsciowy.is_open())
- {
- return WczytajTablice(plikWyjsciowy);
- }
- else
- {
- return false;
- }
- }
- bool ZapiszDoPlikuBinarnego(std::string nazwa)
- {
- return ZapiszDoPliku(nazwa, true);
- }
- bool WczytajDoPlikuBinarnego(std::string nazwa)
- {
- return WczytajZPliku(nazwa, true);
- }
- Tablica& operator =(Tablica& x)
- {
- mRozmiar = x.mRozmiar;
- TYP* wsk = new TYP[mRozmiar];
- for (int i = 0; i < mRozmiar; i++)
- {
- wsk[i] = x.pTablica[i];
- }
- pTablica = wsk;
- return *this;
- //return pTablica = wsk;
- //return wsk;
- }
- void wypelnijLiczbamiLosowymi()
- {
- srand((unsigned int)time(NULL));
- //int liczbaWylosowana = (rand()%1000+1);
- for (int i = 0; i < mRozmiar; i++)
- {
- pTablica[i] = (rand()); //% 1000 + 1);
- }
- }
- /*Tablica& tworzKopia(Tablica& dawca const)
- {
- Tablica tabKopia(mRozmiar) = dawca;
- return tabKopia;
- }*/
- };
- void menu()
- {
- typedef int nazwaTypu;
- cout << "Wybierz rozmiar tablicy\n";
- int rozmiarTablicy;
- cin >> rozmiarTablicy;
- Tablica<nazwaTypu> tab(rozmiarTablicy);
- int opcja;
- do
- {
- cout << "1.Wczytanie tablicy z konsoli" << endl;
- cout << "2.Wyswietlenie tablicy" << endl;
- cout << "3.Wczytywanie z pliku tekstowego" << endl;
- cout << "4.Zapisywanie do pliku tekstowego" << endl;
- cout << "5.Wczytywanie z pliku binarnego" << endl;
- cout << "6.Zapisywanie do pliku binarnego" << endl;
- cout << "7.Wypelnianie tablicy" << endl;
- cout << "8.Tworzenie dynamicznej kopii + wyswietlenie kopii" << endl;
- cout << "0.Koniec" << endl;
- cout << "Wybierz opcje: ";
- cin >> opcja;
- switch (opcja){
- case 0:
- break;
- case 1:
- tab.WczytajTablice(cin);
- break;
- case 2:
- tab.WypiszTablice(cout);
- break;
- case 3:
- {
- cout << "Podaj nazwe pliku\n";
- string nazwa;
- cin >> nazwa;
- tab.WczytajZPliku(nazwa);
- break;
- }
- case 4:
- {
- cout << "Podaj nazwe pliku\n";
- string nazwa;
- cin >> nazwa;
- tab.ZapiszDoPliku(nazwa);
- break;
- }
- case 5:
- {
- cout << "Podaj nazwe pliku\n";
- string nazwa;
- cin >> nazwa;
- tab.WczytajDoPlikuBinarnego(nazwa);
- break;
- }
- case 6:
- {
- cout << "Podaj nazwe pliku\n";
- string nazwa;
- cin >> nazwa;
- tab.ZapiszDoPlikuBinarnego(nazwa);
- break;
- }
- case 7:
- tab.wypelnijLiczbamiLosowymi();
- break;
- case 8:
- {
- {
- Tablica < nazwaTypu > tabKopia(rozmiarTablicy);
- Tablica < nazwaTypu > tabKopia1(rozmiarTablicy);
- tabKopia = tab;
- tabKopia1 = tab;
- tabKopia.WypiszTablice(cout);
- tab.adres();
- tabKopia.adres();
- tabKopia1.adres();
- cout << "\ntab " << &tab << endl;
- cout << "tabKopia " << &tabKopia << endl;
- cout << "tabKopia " << &tabKopia1 << endl;
- break;
- }
- }
- default:
- cout << "Nie ma takiej opcji\n";
- break;
- }
- cout << "\n";
- } while (opcja != 0);
- }
- ////////////////////////////////////////main
- int main()
- {
- menu();
- /*{
- Tablica<int> tab(3);
- std::stringstream test("3 5 7");
- auto wynik = tab.WczytajTablice(test);
- if (wynik == true)
- {
- std::cout << "Test 1 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 1 padl" << std::endl;
- }
- }
- {
- Tablica<float> tab(3);
- std::stringstream test("3 5 7 5");
- auto wynik = tab.WczytajTablice(test);
- if (wynik == true)
- {
- std::cout << "Test 2 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 2 padl" << std::endl;
- }
- }
- {
- Tablica<int> tab(3);
- std::stringstream test("3 5");
- auto wynik = tab.WczytajTablice(test);
- if (wynik == false)
- {
- std::cout << "Test 3 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 3 padl" << std::endl;
- }
- }
- {
- Tablica<int> tab(3);
- std::stringstream test("3 4 5");
- tab.WczytajTablice(test);
- std::stringstream wyjscie;
- tab.WypiszTablice(wyjscie);
- if (wyjscie.str() == "3 4 5 ")
- {
- std::cout << "Test 4 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 4 padl" << std::endl;
- }
- }
- {
- {
- Tablica<int> tab(3);
- //std::stringstream test("3 4 5");
- //tab.WczytajTablice(test);
- tab.WczytajZPliku("plik1.txt", false);
- std::stringstream wyjscie;
- tab.WypiszTablice(wyjscie);
- if (wyjscie.str() == "3 4 5 ")
- {
- std::cout << "Test 5 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 5 padl" << std::endl;
- }
- }
- {
- Tablica<int> tab(3);
- std::stringstream test("3 4 5");
- tab.WczytajTablice(test);
- std::string nazwaPliku("test6.dat");
- tab.ZapiszDoPliku(nazwaPliku);
- Tablica<int> tab2(3);
- tab2.WczytajZPliku(nazwaPliku);
- std::stringstream wyjscie;
- tab2.WypiszTablice(wyjscie);
- if (wyjscie.str() == "3 4 5 ")
- {
- std::cout << "Test 6 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 6 padl" << std::endl;
- }
- }
- }
- {
- Tablica<int> tab(3);
- // std::stringstream test("3 5 7");
- auto wynik = tab.WczytajTablice(std::cin);
- if (wynik == true)
- {
- std::cout << "Test 1 PASS" << std::endl;
- }
- else
- {
- std::cout << "Test 1 padl" << std::endl;
- }
- }
- {
- Tablica<int> tab(3);
- Tablica<int> tab1(3);
- bool wynik = tab.WczytajTablice(std::cin);
- if (wynik == true)
- {
- cout << "Czesc 1 PASS" << endl;
- tab1 = tab;
- cout << "tab \n";
- tab.WypiszTablice(cout);
- cout << "tab1 \n";
- tab1.WypiszTablice(cout);
- }
- else
- {
- cout << "czesc 1 padla " << endl;
- }
- }
- {
- cout << "Podaj rozmiar\n";
- int rozmiarTd;
- cin >> rozmiarTd;
- Tablica<int> tab(rozmiarTd );
- // std::stringstream test("3 5 7");
- cout << "Losowanie liczb \n";
- tab.wypelnijLiczbamiLosowymi();
- tab.WypiszTablice(cout);
- }
- */
- {
- char c;
- std::cin >> c;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement