Forum » Programiranje » [NALOGA][C++] sortiranje polja
[NALOGA][C++] sortiranje polja
mdimec4 ::
Za nalogo sem dobil, da napišem prigram, ki zahteva vnos desetih realnih števil v polje in potem izpiše četrto najmnjše število od teh števil in njen indeks v polju.
Znam vnesti števila ampak ne vem kako, bi ugotovil kero je 4. nemanše
Mogoče bi to lahko ugotovil tako, da bi v drugo polje po vrsti razporediv števila iz prvega polja in potem pogledal kaj je na četrtem mestu v tem poju.
Žal tega ne znam naredit zato bi prosil za pomoč!
LP!
[Edit: sem popravil naslov teme, za prihodnjič si poglej PREBERI ME: označevanje topicov v oddelku programiranje - Gundolf]
Znam vnesti števila ampak ne vem kako, bi ugotovil kero je 4. nemanše
Mogoče bi to lahko ugotovil tako, da bi v drugo polje po vrsti razporediv števila iz prvega polja in potem pogledal kaj je na četrtem mestu v tem poju.
Žal tega ne znam naredit zato bi prosil za pomoč!
LP!
[Edit: sem popravil naslov teme, za prihodnjič si poglej PREBERI ME: označevanje topicov v oddelku programiranje - Gundolf]
- spremenil: Gundolf ()
Gundolf ::
Tvoja zamisel, da bi sortiral polje je kar fajn. Problem bi imel le z določanjem indexa. Ena lepa rešitev je da recimo posortiraš le indexe. Kako? - poiščeš najmanjšo vrednost, njen index pospraviš v drugo polje, poiščeš najmanjšo vrednost, ki je večja od prej najdene najmanjše vrednosti in njen index pospraviš v drugo polje (na drugo mesto), to ponavljaš dokler v drugem polju nimaš štirih indexov. Voila!
mdimec4 ::
Sm neki ze napisu ampak ne znam določit indeksa
Ne razumem dober kok si mislu ali lahko prosim napišeš primer.
Ne razumem dober kok si mislu ali lahko prosim napišeš primer.
int main(int argc, char *argv[]) { float stevila1[10]; for(int k=0;k<10;k++) { cin >> stevila1[k]; } float stevila[10]; for (int s=0;s < 10;s++) { stevila[s] = stevila1[s]; } float x; bool has_swapped; while(1) { has_swapped = 0; //reset flag for (int i=0;i<10;i++) { if (stevila[i] > stevila[i + 1]) //if they are in the wrong order { //exchange them x=stevila[i]; stevila[i]=stevila[i+1]; stevila[i+1]=x; has_swapped = 1; //we have swapped at least once, list may not be sorted yet } } //if no swaps were made during this pass, the list has been sorted if (has_swapped == 0) {break;} } for(int l=0;l<10;l++) { cout << stevila[l] << " "; } cout << "cetrto najmanjse st je: "<< stevila[3] << "z indeksom: " << endl; system("PAUSE"); return EXIT_SUCCESS; }
Gundolf ::
Ja ti zdaj sortiraš. Ampak pri tem seveda pomešaš indexe. Lahko si pa dodaš eno tabelico indexov in jo mešaš skupaj s števili. Na začetku jo initializiraš for (int i = 0; i < 10; ++i) index[i] = i; , potem pa ko swapaš tvoja števila hkrati swapaš še indexe v tabeli (torej ko swapaš stevilo[i], stevilo[i+1] swapi še index[i], index[i+1]). Ko boš mel števila posortirana, boš imel v tabeli index njihove prvotne indexe. Se pravi najmanjše število bo stevila[0] in njegov prvotni index bo index[0]
FireSnake ::
Še o sortiranju:
https://www.linkedin.com/posts/ginacost...
https://www.linkedin.com/posts/ginacost...
Poglej in se nasmej: vicmaher.si
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# program za pretvorbo v desetiško število z rekurzijoOddelek: Programiranje | 1462 (1185) | MrStein |
» | Spreminjanje vrednosti v polju [C]Oddelek: Programiranje | 2154 (1953) | specing |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3251 (2755) | krastača |
» | c++ in linux/windowsOddelek: Programiranje | 1718 (1594) | rapvirus |
» | JavaScript naloge za faks (ustni izpit)Oddelek: Šola | 2353 (1893) | Lumix |