SHOW:
|
|
- or go back to the newest paste.
1 | ||
2 | - | //======================================================================================================================// |
2 | + | |
3 | - | // // |
3 | + | |
4 | - | // * Michał Tybiński * // |
4 | + | |
5 | - | // * 200895 * // |
5 | + | |
6 | - | // * * // |
6 | + | |
7 | - | // // |
7 | + | |
8 | - | // // |
8 | + | |
9 | - | // // |
9 | + | |
10 | - | //======================================================================================================================// // |
10 | + | |
11 | - | |
11 | + | |
12 | { | |
13 | int select, lngt, temp, temp2, temp3, exit = 0; | |
14 | int &pnt = Tablica::ilosc; //licznik ilosci obiektow | |
15 | fstream plik; | |
16 | ||
17 | Tablica wynik; | |
18 | wynik = (*baza[0] + *baza[1]); | |
19 | wynik.wyswietl(); | |
20 | ||
21 | //==================================================*Odczyt pliku*========================================================// | |
22 | plik.open("data.txt", ios::in); | |
23 | if(plik.good()) | |
24 | { | |
25 | istringstream instream; | |
26 | string buffer; | |
27 | char op; | |
28 | plik >> lngt; //pierwsza liczba w pliku to ilosc zapisanych tablic | |
29 | ||
30 | while(getline(plik, buffer, ';') && pnt < lngt) | |
31 | { | |
32 | instream.clear(); | |
33 | instream.str(buffer); | |
34 | if(instream >> op >> temp >> op) //szukamy skladni w postaci '{' int '}' --> rozmiar tablicy | |
35 | { | |
36 | dodaj_tablice(temp); | |
37 | for(int i=0; i<temp; i++) | |
38 | { | |
39 | instream >> temp2; | |
40 | baza[pnt-1]->adres()[i] = temp2; | |
41 | } | |
42 | baza[pnt-1]->srednia(); | |
43 | } | |
44 | } | |
45 | cout << "*===========================*\n" | |
46 | << "Wczytano " << pnt <<" tablic z pliku!\n" | |
47 | << "*===========================*\n"; | |
48 | ||
49 | plik.close(); | |
50 | } | |
51 | ||
52 | //========================================================================================================================// | |
53 | ||
54 | do{ | |
55 | cout << "Witamy w programie *TABLICE*!\n" | |
56 | << " > tablic w bazie: "<<pnt<<" <\n\n"; | |
57 | ||
58 | cout << "\t 1) Dodaj tablice\n" | |
59 | << "\t 2) Wyswietl tablice\n" | |
60 | << "\t 3) Posortuj tablice\n" | |
61 | << "\t 4) Usun tablice\n" | |
62 | << "\t 5) Dodaj dwie pierwsze tablice\n" | |
63 | << "\t 6) Zakoncz\n" | |
64 | << "\n :"; input(select); | |
65 | ||
66 | ||
67 | switch(select) | |
68 | { | |
69 | case 1: | |
70 | { | |
71 | system("CLS"); | |
72 | if (pnt==10) {cout << "Osiagnieto limit bazy, aby dodac nowa, usun jedna z istniejacych\n"; break;} | |
73 | cout << "Jakich rozmiarow tablice chcesz utworzyc? :"; | |
74 | input(lngt); | |
75 | if (lngt>10) {cout << "Za duzy rozmiar, MAX = 10\n"; break;}; | |
76 | ||
77 | dodaj_tablice(lngt); | |
78 | if(baza[pnt-1]) baza[pnt-1]->wypelnij(); | |
79 | break; | |
80 | } | |
81 | case 2: | |
82 | { | |
83 | system("CLS"); | |
84 | if(pnt==0) cout << "Najpierw dodaj tablice do bazy\n"; | |
85 | else | |
86 | { | |
87 | cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz wyswietlic? :"; | |
88 | input(temp); | |
89 | if(temp>pnt || temp<0) {cout << "Nie ma takiej tablicy!\n"; break;} | |
90 | ||
91 | cout << "\nW jakiej notacji chcesz wyswietlic dane?\n"; | |
92 | cout << "1) zwyklej\n"; | |
93 | cout << "2) naukowej\n"; | |
94 | cout << "3) szesnastkowej\n"; | |
95 | cout << "#: "; | |
96 | input(temp2); if(temp > 3 || temp < 1) break; | |
97 | ||
98 | cout <<"::Podaj rzadana precyzje (0-5): "; | |
99 | input(temp3); if(temp2 > 5 || temp2 < 0) break; | |
100 | ||
101 | baza[temp-1]->wyswietl(temp2, temp3); | |
102 | } | |
103 | break; | |
104 | ||
105 | } | |
106 | case 3: | |
107 | { | |
108 | system("CLS"); | |
109 | cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz posortowac? "; | |
110 | cin >> temp; | |
111 | baza[temp-1]->insert_sort(); | |
112 | break; | |
113 | } | |
114 | ||
115 | case 4: | |
116 | { | |
117 | system("CLS"); | |
118 | cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz usunac? "; | |
119 | input(temp); | |
120 | if(pnt==1) delete baza[0]; | |
121 | else | |
122 | { | |
123 | delete baza[temp-1]; | |
124 | for(int k=temp-1; k<pnt; k++) | |
125 | { | |
126 | baza[k]=baza[k+1]; | |
127 | } | |
128 | ||
129 | } | |
130 | break; | |
131 | ||
132 | } | |
133 | case 5: | |
134 | { | |
135 | system("CLS"); | |
136 | cout << "Dodamy do siebie dwie pierwsze tablice i zapiszemy w nowej\n"; | |
137 | cout << "Uzywamy przeladowanego operatora '+'\n\n"; | |
138 | int rA = baza[0]->rozmiar(); | |
139 | int rB = baza[1]->rozmiar(); | |
140 | dodaj_tablice((rA > rB) ? rA : rB); | |
141 | *baza[pnt-1] = *baza[0] + *baza[1]; | |
142 | break; | |
143 | } | |
144 | case 6: | |
145 | { | |
146 | exit = 1; | |
147 | break; | |
148 | } | |
149 | } | |
150 | }while(!exit); | |
151 | ||
152 | //===================================================##Zapis##============================================================// | |
153 | if(pnt!=0) | |
154 | { | |
155 | plik.open("data.txt", ios::out | ios::trunc); | |
156 | ||
157 | plik << pnt << endl; | |
158 | for(int i=0; i<pnt; i++) | |
159 | { | |
160 | int k = baza[i]->rozmiar(); | |
161 | plik << "{" << k << "} "; //zapisujemy liczbe elementow | |
162 | for(int j=0; j < k; j++) | |
163 | { | |
164 | plik << " " << baza[i]->adres()[j]; //zapis elementow | |
165 | } | |
166 | plik << ";" << endl; //znak konca wiersza (jeden wiersz -> jedna tablica) | |
167 | } | |
168 | ||
169 | plik.close(); | |
170 | } | |
171 | //===================================================##Koniec##===========================================================// | |
172 | temp = pnt; | |
173 | for(int i=0; i!=temp; i++) delete baza[i]; | |
174 | return 0; | |
175 | } | |
176 | //====================================================*Funkcje*===========================================================// | |
177 | ||
178 | void dodaj_tablice(int n) | |
179 | { | |
180 | int m = Tablica::ilosc; | |
181 | baza[m] = new Tablica(n); | |
182 | if(baza[m] == NULL) {cout << "\n\tBrak pamieci\n";} | |
183 | } | |
184 | ||
185 | void input(int &w) //funkca sprawdzajaca poprawnosc wprowadzanych danych | |
186 | { | |
187 | do{ | |
188 | if(cin.fail()) cout << "\nBlad, powtorz wprowadzenie: "; | |
189 | cin.clear(); cin.sync(); | |
190 | cin >> w; cout << endl; | |
191 | }while(cin.fail()); | |
192 | } | |
193 | //========================================================================================================================// |