View difference between Paste ID: 0RLZnbKh and hHyVRUdn
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
//========================================================================================================================//