Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati predložak funkcije SortirajRastuci koja će omogućiti sortiranje niza u rastućem redoslijedu.
- Unutar main funkcije korisniku omogućiti korisniku da odredi veličinu niza i tip podatka, te da unutar
- template funkcije UnosClanovaNiza izvrši inicijalizaciju članova niza.Nakon unosa, a uz pomoć prethodno
- definiranog predloška funkcije SortirajRastuci, izvršiti sortiranje, te unutar main funkcije ispisati
- vrijednosti sortiranih članova niza.*/
- #include <iostream>
- using namespace std;
- char greska[] = "\nGreska! Problem sa alokacijom memorije!\n";
- template <class Tip>
- void SortirajRastuci(Tip *&niz, int max) {
- Tip temp;
- int brojac;
- for (int j = max; j > 0; j--) {//najveci element niza, kroz svaki prolaz zavrsi na zadnjem mjestu
- brojac = 0;
- for (int i = 1; i < j; i++)//zbog gore navedene cinjenice nema potrebe da ide do kraja niza
- if (niz[i] < niz[i - 1]) {
- temp = niz[i];
- niz[i] = niz[i - 1];
- niz[i - 1] = temp;
- brojac++;//broji 'swap'-ove u jednom prolazu kroz niz
- }
- if (brojac == 0)//kada u prolazu kroz elemente niza ne dodje do zamjene mjesta
- return;//ne nasilno prekini petlju
- }
- }
- template <class Tip>
- void ispisDealokacija(Tip *&niz, int max) {
- cout << "\nRastuci Sortiran niz : ";
- int i = 0;
- while (i < max)
- if (i < max - 1)
- cout << niz[i++] << ", ";
- else
- cout << niz[i++] << ".\n";
- cout << "\nOpadajuci Sortiran niz : ";
- while (i--> 0)
- if (i > 0)
- cout << niz[i] << ", ";
- else
- cout << niz[i] << ".\n\n";
- delete[] niz;
- niz = nullptr;
- }
- template <class Tip>
- void UnosClanovaNiza(Tip *&niz) {
- int max;
- do {
- cout << "Unesite broj elemenata niza : ";
- cin >> max;
- cin.ignore();
- } while (max < 1);
- try {
- niz = new Tip[max];
- } catch (bad_alloc) {
- cout << greska;
- }
- cout << endl;
- for (int i = 0; i < max; i++) {
- cout << "[" << i + 1 << "] : ";
- cin >> niz[i];
- }
- SortirajRastuci(niz, max);
- ispisDealokacija(niz, max);
- }
- void main() {
- int izbor;
- bool vrti = true;
- do {
- system("cls");
- cout << "..:: TIP PODATKA ::..\n\n";
- cout << "1. char\n2. int\n3. short int\n4. long int\n5. signed int\n6. unsigned int\n7. float\n8. double\n9. long double\n10. Prekid programa\n\n";
- do {
- cout << "Odaberite Tip Podatka niza kojeg zelite kreirati : ";
- cin >> izbor;
- cin.ignore();
- } while (izbor < 1 || izbor > 10);
- switch (izbor) {
- case 1: { char *p; UnosClanovaNiza(p); } break;
- case 2: { int *p; UnosClanovaNiza(p); } break;
- case 3: { short int *p; UnosClanovaNiza(p); } break;
- case 4: { long int *p; UnosClanovaNiza(p); } break;
- case 5: { signed int *p; UnosClanovaNiza(p); } break;
- case 6: { unsigned int *p; UnosClanovaNiza(p); } break;
- case 7: { float *p; UnosClanovaNiza(p); } break;
- case 8: { double *p; UnosClanovaNiza(p); } break;
- case 9: { long double *p; UnosClanovaNiza(p); } break;
- case 10: vrti = false; break;
- }
- system("pause>0");
- } while (vrti);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement