Creative Commons License Foxbond's Repo

/** (c) 2012 Michał (Foxbond) Chraniuk */
#include <conio.h> //_getch
#include <iostream> //cin, cout
#include <string> //string
#include <sstream>  //istringstream
#include <iterator> //istream_iterator
#include <vector>   //vector

using namespace std;

void cls () { system("cls"); }

void pause () { _getch(); }

vector<string> explode(string const & s, char delim)
{
    vector<string> result;
    istringstream iss(s);

    for (string token; getline(iss, token, delim); )
    {
        if (!token.empty()) result.push_back(move(token));
    }

    return result;
}

int main (){

	string source;

	cout << "Podaj liczby rozdzielajac przecinkiem: ";
	cin >> source;

    vector<string> v = explode(source, ',');

	int n = v.size();
	int* tab=new int[n+1];

	for ( int ii = 0; ii < n; ii++){
		istringstream iss(v[ii]);
		iss >> tab[ii];
	}

	int i = 1;
	
	int j, pom;
	while (i < n) {
		j = i; 
		pom = tab[i];
		while (j>0 && tab[(j-1)]>pom) {
			tab[j] = tab[(j-1)];
			j = j - 1;
		}
		tab[j] = pom;
		i = i+1;
	}
	

	cout << tab[0];
	for (i=1;i<n;i++){
		cout << ", " << tab[i] ;
	}

	int doWstawienia;
	int nrPos = 0;

	cout << "\nCiag zostal posortowany, podaj liczbe do wstawienia: ";
	cin >> doWstawienia;

	j = n; 
	while (j>0 && tab[(j-1)]>doWstawienia) {
		tab[j] = tab[(j-1)];
		j = j - 1;
		cout << "j";
		nrPos++;
	}
	tab[j] = doWstawienia;

	cout << "\nNr pozycji: "<< ((n+1)-nrPos) <<"\nCiag po wstawieniu:\n" << tab[0];
	for (i=1;i<n+1;i++){
		cout << ", " << tab[i] ;
	}

	cout << "\n";
	pause();

	return 0;
}

> Back