Kezdőoldal » Számítástechnika » Programozás » C++: minimum keresés. Mi a...

C++: minimum keresés. Mi a hiba az alábbi kódban?

Figyelt kérdés

10 szám véletlenszerűen feltöltve, összeadva (ez is helytelen, így az átlag is). Aztán meg kéne keresnie az tömbben levő legkisebb számot.

#include<iostream>

#include<ctime>

#include<cstdlib>


using namespace std;


int main ()

{

srand (time(0));

int szamok[10];

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

{

cout << rand()%(100-50+1)+50<< " ";

}


int osszeg = 0;


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

{

osszeg = osszeg +szamok[i];

}


cout << "Az osszege: " << osszeg << endl;

double atlag = (double)osszeg / 10;

cout << "Az atlag: " << atlag << endl;



int min = szamok[0];


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

{

if(szamok[i] < min)

min = szamok[i];

}


cout << "A legkisebb: " << min << endl;

return 0;

}



2017. márc. 26. 16:47
 1/10 anonim ***** válasza:
Mondjuk a feltöltés elég erőteljesen elmarad.
2017. márc. 26. 16:54
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:

Átírtam,így már jó az összeadás és az átlag, viszont a legkisebb még nem.Mi itt a hiba ?

#include<iostream>

#include<ctime>

#include<cstdlib>


using namespace std;


int main ()

{

srand (time(0));

int szamok[10];

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

{

szamok[i]=rand()%(100-10+1)+10;

cout <<szamok[i]<<endl;

}


int osszeg = 0;


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

{

osszeg = osszeg +szamok[i];

}


cout << "Az osszege: " << osszeg << endl;

double atlag = (double)osszeg / 10;

cout << "Az atlag: " << atlag << endl;



int min = szamok[0];


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

{

if(szamok[i] < min)

min = szamok[i];

}


cout << "A legkisebb: " << min << endl;

return 0;

}

2017. márc. 26. 17:02
 3/10 anonim ***** válasza:

A tömböt a 8. indexig töltöd fel, de mindenhol a 9-ig számolsz vele.

100-10+1 pedig szerintem 91.

2017. márc. 26. 17:09
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

-1. Máskor tessék kódfeltöltő oldalt használni, és indentálni a kódot, mert így olvashatatlan.

0. A #include és az adott könyvtár neve közé tegyél szóközt.

1. time(0) helyett time(NULL) - a time paraméterként pointert vár.

2. A szamok tömböt létrehozod, de nem rakod bele a véletlen számokat, csak kiírod.

3. 100-50+1 helyett 51

4. Az i változót elég egyszer deklarálni.


Szóval kb. így: [link]

2017. márc. 26. 17:11
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

5. Ja, meg igen, az első ciklusban csak 9 elemet számolsz.

Szóval helyesbítve így: [link]

2017. márc. 26. 17:15
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
Ahogy írtad a véletlen számot, az a harmadik variáció amivel eddig találkoztam. Hogyan kell egy értelmezni ? A és B közötti számokat szeretnék, ekkor mi minek felel meg ?
2017. márc. 26. 17:27
 7/10 anonim ***** válasza:

Akkor, ha zárt intervallumról van szó:

A + rand() % (B - A + 1)

2017. márc. 26. 17:50
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

4. Az i változót elég egyszer deklarálni.


Kivéve, hogy ciklusváltozó, így a scope-ja a ciklus élettartamára terjed ki. Az pedig nem szokás, hogy előre deklarálsz egy változót, és azt használod mindenhova ciklusváltozónak. Remélem nem kell részleteznem, miért.

2017. márc. 26. 19:09
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

#8: jelen esetben nem létszükséglet.


"Az pedig nem szokás, hogy előre deklarálsz egy változót, és azt használod mindenhova ciklusváltozónak. "

C99 előtt nem volt más mód.

2017. márc. 26. 19:20
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Hát ez aztán az érv, nem akarod esetlek az Assembly alapján megítélni, hogy kéne egy C++ kódot megírni? :D
2017. márc. 26. 19:24
Hasznos számodra ez a válasz?

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!