Kod raz zadziała, raz nie zadziała. Jeśli zadziała to wypluwa błędne wyniki .
Próbowałem sam naprawiać, ale nie wyszło(stąd moje komentarze w trakcie kodu).
Pisałem wcześniej w JavaScript i tam konkatenacja była dziecinnie prosa i zawsze wszystko działało, tutaj też próbowałem z to_string().., z tym coś nie działało, bo chciałem zrobić coś takiego {k.empty()? k.push_back(tab[i]): seb(k,tab[i]);}; dla k:= "k0"+act, zamiast switch(act). Tak samo analogicznie dla późniejszego połącznia wszystkiego do jednej tablicy.
Proszę o dwie rzeczy:
- Naprawę / wskazanie błędu w samym algorytmie (aby nie wsypywał się i dawał dobre wyniki).
- Sposób jak mam zapisać poprawie konkatenację w moim przypadku w celu skrócenia kodu.
Programuje w Code::Blocks 20.03.
Z góry dziękuję za pomoc .
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <vector>
using namespace std;
int q;
vector <float> tab,k00,k01,k02,k03,k04,k05,k06,k07,k08,k09;
void showw(vector <float> &tab){
for(int i=0;i<tab.size();i++)
cout << " "<<tab[i]<<" " << endl;
}
void seb(vector <float> &tb,float x){
for(int i=0;i<tab.size();i++)
if(tb[i]>=x)
tb.insert( tb.begin() + (i+1), x );
}
void sk(vector <float> &tab, vector <float> &k00, vector <float> &k01, vector <float> &k02, vector <float> &k03, vector <float> &k04, vector <float> &k05, vector <float> &k06, vector <float> &k07, vector <float> &k08, vector <float> &k09){
for(int i=0;i<tab.size();i++){
int act=tab[i]*10;
///cout<<act<<endl;
switch(act){
case 0: k00.empty()? k00.push_back(tab[i]): seb(k00,tab[i]);
case 1: k01.empty()? k01.push_back(tab[i]): seb(k01,tab[i]);
case 2: k02.empty()? k02.push_back(tab[i]): seb(k02,tab[i]);
case 3: k03.empty()? k03.push_back(tab[i]): seb(k03,tab[i]);
case 4: k04.empty()? k04.push_back(tab[i]): seb(k04,tab[i]);
case 5: k05.empty()? k05.push_back(tab[i]): seb(k05,tab[i]);
case 6: k06.empty()? k06.push_back(tab[i]): seb(k06,tab[i]);
case 7: k07.empty()? k07.push_back(tab[i]): seb(k07,tab[i]);
case 8: k08.empty()? k08.push_back(tab[i]): seb(k08,tab[i]);
case 9: k09.empty()? k09.push_back(tab[i]): seb(k09,tab[i]);
}
}
tab.clear();
tab.insert(tab.begin(), k09.begin(), k09.end());
tab.insert(tab.begin(), k08.begin(), k08.end());
tab.insert(tab.begin(), k07.begin(), k07.end());
tab.insert(tab.begin(), k06.begin(), k06.end());
tab.insert(tab.begin(), k05.begin(), k05.end());
tab.insert(tab.begin(), k04.begin(), k04.end());
tab.insert(tab.begin(), k03.begin(), k03.end());
tab.insert(tab.begin(), k02.begin(), k02.end());
tab.insert(tab.begin(), k01.begin(), k01.end());
tab.insert(tab.begin(), k00.begin(), k00.end());
}
int main()
{
cout << "Podaj ile elementow? ";
cin >>q;
srand(time(0));
for(int z=0;z<q;z++)
tab.push_back((rand()%100)/100.0);
showw(tab);
sk(tab,k00,k01,k02,k03,k04,k05,k06,k07,k08,k09);
//cout << " =0 " << endl;
//showw(k00);
//cout << " =1 " << endl;
//showw(k01);
//cout << " =2 " << endl;
//showw(k02);
//cout<<"qq"<<endl;
showw(tab);
return 0;
}