Kezdőoldal » Számítástechnika » Programozás » Miért nem működik a növekvő...

Miért nem működik a növekvő sorrendbe rendezés <C++>?

Figyelt kérdés

Akartam gyakorolni a C++-t, ezért feladatokat keresgéltem.

Találtam a neten egy ilyen feladatot:


Egy 100 pontos dolgozat írása során 10 tanuló eredményeit vizsgáljuk.

1. Kérjen be a program 10 db 0-100 közötti számot

2. Válassza ki a legjobb és a legrosszabb eredményt

3. Számolja ki az átlagot

4. Hány 50 pont feletti dolgozat született

5. Keresse meg, hányadik tanuló érte el a legjobb eredményt

6. Rendezze növekvő sorrendbe a pontszámokat


A növekvő sorrenden kívül minden megvan...de ez az egy kifogott rajtam. Nem akartam segítséget kérni, de magamtól eddig még nem sikerült 100%-san működő algoritmust írni.

Amit az előbb próbáltam (egy külön programmal kísérleteztem rajta, így annak a kódját adom meg):


#include <iostream>


using namespace std;


int main()

{


int szamok[10] = { 1 , 5 , 12 , 3 , 5 , 45 , 100 , 70 , 0 , 42 };

int szamok2[10] = {0,0,0,0,0,0,0,0,0,0};



for (int i=0;i<10;i++);

{

for (int i=0;i<10;i++)

{

if (szamok[i]<szamok[i+1])

szamok2[i] = szamok[i];

}

}



for (int i=0;i<10;i++)

cout << "\n" << szamok2[i] << "\n";



char Q;cin>>Q;return 0; // Hogy ne álljon le azonnal.

}


2014. jan. 2. 19:44
1 2
 1/17 anonim ***** válasza:
szamok 2 tömbre nincs szükség csak egy int temp változóra, és a buborékos rendezésed szar ahogy van, telóról vok, de minny leírom
2014. jan. 2. 19:50
Hasznos számodra ez a válasz?
 2/17 anonim ***** válasza:

for (int i=0;i<9;i++);

{

for (int j=0;j<8;i++)

{

if (szamok[j]>szamok[j+1])

temp=szamok[j];

szamok[j]=szamok[j+1];

szamok[j+1]=temp;

}

}



ez a buborekos rendezes novekvo sorrendbe 10 elemu tombnel

2014. jan. 2. 19:56
Hasznos számodra ez a válasz?
 3/17 SimkoL ***** válasza:

Elkezdtem régebben összeszedni az ide írt egyszerű válaszokat, közel sem teljes még de neked ez is megteszi:


[link]

2014. jan. 2. 19:57
Hasznos számodra ez a válasz?
 4/17 anonim ***** válasza:
ja a kulso for ciklus vegerol torold le a ; -t, tied masoltam ki es irtam at es ott maradt, az nem kell.
2014. jan. 2. 19:57
Hasznos számodra ez a válasz?
 5/17 anonim ***** válasza:
es j < 9 ..:D nem vagyok formaban, bocsi xd
2014. jan. 2. 19:59
Hasznos számodra ez a válasz?
 6/17 A kérdező kommentje:

A temp-es tanácsod ötletet adott, így átírtam közben én is:


const int how_many = 10;

int szamok[how_many] = { 1 , 5 , 12 , 3 , 5 , 45 , 100 , 70 , 0 , 42 };

int temp;


for (int i=0;i<how_many;i++)

for (int i=0;i<how_many-1;i++)

{

if (szamok[i]>szamok[i+1])

{

temp = szamok[i];

szamok[i]=szamok[i+1];

szamok[i+1]=temp;

}

}


Így már működött.

2014. jan. 2. 20:00
 7/17 A kérdező kommentje:

Köszönöm a segítséget :)


Úgy látom valami hasonlót csináltam, de szerintem ennek csak örülhetnék :D

2014. jan. 2. 20:01
 8/17 SimkoL ***** válasza:
100%
Kétszer az i változó egymásba ágyazott ciklusnál ??? Hmm...
2014. jan. 2. 20:10
Hasznos számodra ez a válasz?
 9/17 anonim ***** válasza:
xD
2014. jan. 2. 21:29
Hasznos számodra ez a válasz?
 10/17 iostream ***** válasza:

Mi a baj az std::sort-tal?


Eleve, ezek mind gyönyörűen oldhatók sima standard könyvtári függvényekkel, objektumokkal (igen, még a beolvasás is). Érdemes lenne arra rászokni.


1. istream_iterator, back_insterter

2. min_element, max_element

3. accumulate

4. count_if

5. max_element ismét

6. sort

2014. jan. 2. 23:58
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!