» »

[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]
  • 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.
 
 

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]

mdimec4 ::

Hvala ti!
Deluje:)
LP!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# program za pretvorbo v desetiško število z rekurzijo

Oddelek: Programiranje
81434 (1157) MrStein
»

[C#] Reševanje domačih nalog

Oddelek: Programiranje
173206 (2710) krastača
»

[C++]Strukture

Oddelek: Programiranje
54011 (3940) jernejf
»

c++ in linux/windows

Oddelek: Programiranje
121698 (1574) rapvirus
»

JavaScript naloge za faks (ustni izpit)

Oddelek: Šola
182324 (1864) Lumix

Več podobnih tem