Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- void dodaj_tablice(int);
- void input(int &w);
- Tablica *baza[10];
- //========================================================================================================================//
- int _tmain(int argc, _TCHAR* argv[])
- {
- int select, lngt, temp, temp2, temp3, exit = 0;
- int &pnt = Tablica::ilosc; //licznik ilosci obiektow
- fstream plik;
- Tablica wynik;
- wynik = (*baza[0] + *baza[1]);
- wynik.wyswietl();
- //==================================================*Odczyt pliku*========================================================//
- plik.open("data.txt", ios::in);
- if(plik.good())
- {
- istringstream instream;
- string buffer;
- char op;
- plik >> lngt; //pierwsza liczba w pliku to ilosc zapisanych tablic
- while(getline(plik, buffer, ';') && pnt < lngt)
- {
- instream.clear();
- instream.str(buffer);
- if(instream >> op >> temp >> op) //szukamy skladni w postaci '{' int '}' --> rozmiar tablicy
- {
- dodaj_tablice(temp);
- for(int i=0; i<temp; i++)
- {
- instream >> temp2;
- baza[pnt-1]->adres()[i] = temp2;
- }
- baza[pnt-1]->srednia();
- }
- }
- cout << "*===========================*\n"
- << "Wczytano " << pnt <<" tablic z pliku!\n"
- << "*===========================*\n";
- plik.close();
- }
- //========================================================================================================================//
- do{
- cout << "Witamy w programie *TABLICE*!\n"
- << " > tablic w bazie: "<<pnt<<" <\n\n";
- cout << "\t 1) Dodaj tablice\n"
- << "\t 2) Wyswietl tablice\n"
- << "\t 3) Posortuj tablice\n"
- << "\t 4) Usun tablice\n"
- << "\t 5) Dodaj dwie pierwsze tablice\n"
- << "\t 6) Zakoncz\n"
- << "\n :"; input(select);
- switch(select)
- {
- case 1:
- {
- system("CLS");
- if (pnt==10) {cout << "Osiagnieto limit bazy, aby dodac nowa, usun jedna z istniejacych\n"; break;}
- cout << "Jakich rozmiarow tablice chcesz utworzyc? :";
- input(lngt);
- if (lngt>10) {cout << "Za duzy rozmiar, MAX = 10\n"; break;};
- dodaj_tablice(lngt);
- if(baza[pnt-1]) baza[pnt-1]->wypelnij();
- break;
- }
- case 2:
- {
- system("CLS");
- if(pnt==0) cout << "Najpierw dodaj tablice do bazy\n";
- else
- {
- cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz wyswietlic? :";
- input(temp);
- if(temp>pnt || temp<0) {cout << "Nie ma takiej tablicy!\n"; break;}
- cout << "\nW jakiej notacji chcesz wyswietlic dane?\n";
- cout << "1) zwyklej\n";
- cout << "2) naukowej\n";
- cout << "3) szesnastkowej\n";
- cout << "#: ";
- input(temp2); if(temp > 3 || temp < 1) break;
- cout <<"::Podaj rzadana precyzje (0-5): ";
- input(temp3); if(temp2 > 5 || temp2 < 0) break;
- baza[temp-1]->wyswietl(temp2, temp3);
- }
- break;
- }
- case 3:
- {
- system("CLS");
- cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz posortowac? ";
- cin >> temp;
- baza[temp-1]->insert_sort();
- break;
- }
- case 4:
- {
- system("CLS");
- cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz usunac? ";
- input(temp);
- if(pnt==1) delete baza[0];
- else
- {
- delete baza[temp-1];
- for(int k=temp-1; k<pnt; k++)
- {
- baza[k]=baza[k+1];
- }
- }
- break;
- }
- case 5:
- {
- system("CLS");
- cout << "Dodamy do siebie dwie pierwsze tablice i zapiszemy w nowej\n";
- cout << "Uzywamy przeladowanego operatora '+'\n\n";
- int rA = baza[0]->rozmiar();
- int rB = baza[1]->rozmiar();
- dodaj_tablice((rA > rB) ? rA : rB);
- *baza[pnt-1] = *baza[0] + *baza[1];
- break;
- }
- case 6:
- {
- exit = 1;
- break;
- }
- }
- }while(!exit);
- //===================================================##Zapis##============================================================//
- if(pnt!=0)
- {
- plik.open("data.txt", ios::out | ios::trunc);
- plik << pnt << endl;
- for(int i=0; i<pnt; i++)
- {
- int k = baza[i]->rozmiar();
- plik << "{" << k << "} "; //zapisujemy liczbe elementow
- for(int j=0; j < k; j++)
- {
- plik << " " << baza[i]->adres()[j]; //zapis elementow
- }
- plik << ";" << endl; //znak konca wiersza (jeden wiersz -> jedna tablica)
- }
- plik.close();
- }
- //===================================================##Koniec##===========================================================//
- temp = pnt;
- for(int i=0; i!=temp; i++) delete baza[i];
- return 0;
- }
- //====================================================*Funkcje*===========================================================//
- void dodaj_tablice(int n)
- {
- int m = Tablica::ilosc;
- baza[m] = new Tablica(n);
- if(baza[m] == NULL) {cout << "\n\tBrak pamieci\n";}
- }
- void input(int &w) //funkca sprawdzajaca poprawnosc wprowadzanych danych
- {
- do{
- if(cin.fail()) cout << "\nBlad, powtorz wprowadzenie: ";
- cin.clear(); cin.sync();
- cin >> w; cout << endl;
- }while(cin.fail());
- }
- //========================================================================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement