Creative Commons License Foxbond's Repo

/** (c) 2012 Michał (Foxbond) Chraniuk */
/** zadanie 1 **
#include <iostream>

using namespace std;

int main (){

	string source;
	int ileLiczb;
	int iloscWykonan=0;

	cout << "Ile liczb chcesz sortowac: ";
	cin >> ileLiczb;

	int* liczby=new int[ileLiczb];

	cout << "\nPodaj liczby rozdzielajac enterem:\n";

	for ( int i = 0; i < ileLiczb; i++){
		cin >> liczby[i];
	}


	int i = 1;
	int j, pom;
	////i := 2; n := Length(a);
	while (i < ileLiczb) {
		// a[1] ≤ ... ≤ a[i-1], i ≤ n+1 oraz i ≤ n
		j = i; 
		pom = liczby[i];
		// a[i] = pom
		while (j>0 && liczby[(j-1)]>pom) {
			// pom ≤ a[j+1] ≤...≤ a[i] oraz a[j-1]>pom
			liczby[j] = liczby[(j-1)];
			// pom ≤ a[j] ≤ a[j+1] ≤...≤ a[i]
			j = j - 1;

			iloscWykonan++;
		}
		// a[1] ≤...≤ a[j-1] ≤ pom ≤ a[j+1] ≤...≤ a[i]
		liczby[j] = pom;
		// a[1] ≤...≤ a[i-1] ≤ a[i]
		i = i+1;
		// a[1] ≤… ≤ a[i-2] ≤ a[i-1], i ≤ n+1
	}
	// a[1] ≤... ≤ a[i-2] ≤ a[i-1] oraz i=n+1
	
	cout << "\n";
	for (i=0;i<ileLiczb;i++){
		cout << liczby[i] << "\n";
	}

	cout << "\nLiczba wykonan wewnetrznej petli: " << iloscWykonan << "\n";


	system("PAUSE");
	return 0;
}
**/
#include <iostream>

using namespace std;

int main (){

	string source;
	int ileLiczb;

	cout << "Ile liczb chcesz sortowac: ";
	cin >> ileLiczb;

	int* liczby=new int[ileLiczb+1];

	cout << "\nPodaj liczby rozdzielajac enterem:\n";

	for ( int i = 0; i < ileLiczb; i++){
		cin >> liczby[i];
	}


	int i = 1;
	int j, pom;
	////i := 2; n := Length(a);
	while (i < ileLiczb) {
		// a[1] ≤ ... ≤ a[i-1], i ≤ n+1 oraz i ≤ n
		j = i; 
		pom = liczby[i];
		// a[i] = pom
		while (j>0 && liczby[(j-1)]>pom) {
			// pom ≤ a[j+1] ≤...≤ a[i] oraz a[j-1]>pom
			liczby[j] = liczby[(j-1)];
			// pom ≤ a[j] ≤ a[j+1] ≤...≤ a[i]
			j = j - 1;
		}
		// a[1] ≤...≤ a[j-1] ≤ pom ≤ a[j+1] ≤...≤ a[i]
		liczby[j] = pom;
		// a[1] ≤...≤ a[i-1] ≤ a[i]
		i = i+1;
		// a[1] ≤… ≤ a[i-2] ≤ a[i-1], i ≤ n+1
	}
	// a[1] ≤... ≤ a[i-2] ≤ a[i-1] oraz i=n+1
	
	cout << "\n";
	for (i=0;i<ileLiczb;i++){
		cout << liczby[i] << "\n";
	}

	int doWstawienia;
	int poz = 0;
	cout << "Podaj liczbe do wstawienia: ";
	cin >> doWstawienia;

	j = ileLiczb; 
	while (j>0 && liczby[(j-1)]>doWstawienia) {
		liczby[j] = liczby[(j-1)];
		j = j - 1;
		poz++;
	}


	cout << "\nPozycja wstawionej liczby: " << ileLiczb-poz+1 << "\n";


	system("PAUSE");
	return 0;
}

> Back