Untitled

mail@pastecode.io avatar
unknown
plain_text
5 months ago
2.3 kB
3
Indexable
/*Napisati program za sortiranje dinamicki alociranog niza cija se duzina i elementi unose preko konzole.
IMPLEMENTIRATI:  1) funkciju za unos elemenata sa dva argumenta: 1.pokazivac na niz 2.duzina niza
				 2) funkciju za sortiranje sa tri argumenta: 1.pokazivac na niz 2.duzina niza 3.vrsta sortiranja (rastuce,opadajuce) - nabrojivi tip podataka
				 3) funkciju za stampanje elemenata sa dva argumenta : 1.pokazivac na niz 2.duzina niza*/

#include <iostream>

	enum Sort{
		rastuce,
		opadajuce,
	};
															//1
	void unosElemenata(int* niz, int duzina){
		std::cout << "Unesite elemente niza: " << std::endl;
		for(int i = 0; i<duzina; i++){
			std::cout << "\tniz[" << i << "] = ";
			std::cin >> niz[i];
		}
		//std::cout << std::endl;
	}
															//2	
	void sortiraj(int* niz, int duzina, Sort sort){
		switch(sort){
			case rastuce:
			for(int i = duzina-1; i>=0; i--){
				for(int j = 0; j<i; j++){
					if(niz[j] > niz[j+1]){
						int temp = niz[j];
						niz[j] = niz[j+1];
						niz[j+1] = temp;
					}
				}
			}
			break;
			
			case opadajuce:
				for(int i = duzina-1; i>=0; i--){
					for(int j = 0; j<i; j++){
						if(niz[j] < niz[j+1]){
							int temp = niz[j];
							niz[j] = niz[j+1];
							niz[j+1] = temp;
						}
					}
				}
			break;
			
		}
	}
	
															//3
	void stampaj(int* niz,int duzina){
		for(int i = 0; i<duzina; i++){
			std::cout << "\tniz["<< i <<"] = " << niz[i] <<std::endl;
		}
		//std::cout << std::endl;
	}

int main(){

	int duzina;
	std::cout << "Unesite duzinu niza: ";
	std::cin >> duzina;
	std::cout << std::endl;
	
	if(duzina == 0){
		std::cout << "Duzina mora biti pozitivan broj veci od nule!"<<std::endl;
		return 0;
	}
	
	int* niz{new int[duzina]};  // ili int *niz = new int[duzina]; dinam alok niza intova duzine "duzina"
	
	if(niz == NULL){
		std::cout << "Racunar nema dovoljno memorije" << std::endl;
		return 0;
	}
	
	// ili int* niz{new (std::nothrow) int[duzina]};
	//if(!niz) std::cerr << "couldnt allocate"
	
	unosElemenata(niz,duzina);
	
	std::cout << "Niz pre sortiranja: " << std::endl;
	
	stampaj(niz,duzina);
	sortiraj(niz,duzina,Sort::opadajuce);
	
	std::cout << "Niz posle sortiranja: " << std::endl;
	
	stampaj(niz,duzina);



	//oslobadjanje dinamicki alocirane memorije
	delete[] niz;
	
	return 0;
}
Leave a Comment