Kezdőoldal » Számítástechnika » Programozás » Max kiválasztás miért "hibázik"?

2105as kérdése:

Max kiválasztás miért "hibázik"?

Figyelt kérdés

c nyelv.



#include <stdio.h>

#include <stdlib.h>

#define T 10

main()

{


int tomb[10],i;

int max=0;

srand(time(NULL));

for(i=0;i<T;i++)

{

tomb[i] = rand() %1001;

printf("%d\t",tomb[i]);

max=tomb[0];


if (tomb[i]>max)

{

max=0;

max=(tomb[i]);

}



}

printf("Legnagyobb szam : %d ",max);



}


2016. okt. 15. 23:55
 1/9 A kérdező kommentje:
Bocs a sok kérdésekért, de nemigazán tudok kit kérdezni csak titeket.
2016. okt. 15. 23:56
 2/9 anonim ***** válasza:

Ennek a sornak nincs értelme a cikluson belül:

max=tomb[0];

2016. okt. 16. 00:07
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

(Pontosabban maga a parancs értelmes, de a max kiválasztást elrontja.)


Más:

max=0;

max=(tomb[i]);


A max=0 fölösleges, a zárójel is fölösleges.


Más:

Hamár létrehozhat a T konstanst az elemszám tárolására, akkor a tömb deklarálásánál is azt kéne használni, nem csak a ciklusban.

2016. okt. 16. 00:09
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Előre szólok, hogy nem értek a c nyelvhez, de az algoritmust átlátom, és szerintem kicsit túlbonyolítod.


Na most gondold át az egészet a for-tól soronként.

max=tomb[0], vagyis a 'max' értéke a tömb 0. eleme


Utána jön a vizsgálat, hogy ha a tömb i-edik eleme nagyobb, mint a tömb 0. eleme, akkor a maxot nullázod (erre szerintem nincs szükség), és értékként a tömb i-edik elemét adod neki, mert az nagyobb, mint a korábban mért maximum érték. (zárójelre sincs szükség)


Na de itt jön a szemmel látható csavar:

a for ciklus újraindul, és beleesel abba a hibába, amibe nem kéne. Újra felveteted a max=tomb[0]-t, holott a tömb 0. elemének gyakorlatilag semmi köze a maximumhoz, ezáltal akármilyen random számot is generálsz, a 'max' változó értéke minden esetben a tömb 0. elemének értéke lesz.


Egyébként a programozás alapjainál tanulnotok kellett a legnagyobb elem megkeresésének az algoritmusát. Ha az alapján csinálod, garantált a siker.


Legnagyobb elem:

for(i..n){

HA(tomb[i]>max){

max=tomb[i]

}

}

print "Legnagyobb szam: max"

2016. okt. 16. 00:16
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
Az rontja el, hogy a ciklusban benne van a max = tomb[0], így minden ciklusban beállítja a max-ot az első elemre, és ahhoz fogja hasonlítani az i-edik elemet. Amúgy itt nyugodtan megmondhatod az elején, hogy max = 0, és nem kell az első elemet átadni, mivel a rand() nem eredményez negatív értéket.
2016. okt. 16. 00:19
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

1. A main függvénynek legyen visszatérési értéke. Szóval helyesen:

int main() {

és a legvégén:

return 0;

}


2. Ha már létrehoztad a T konstanst, használd.

Például:

int tomb[T];


3. Ha egy ciklusban akarod megcsinálni az elemfeltöltést és a maximumkeresést, akkor:

- a ciklus előtt a tömb 0. elemének adsz egy véletlenszerű értéket:

tomb[0] = rand() % 1001;

és a maximum a tömb 0. eleme lesz:

max = tomb[0];

- a ciklus 1-től megy a T-1. elemig:

for (i = 1; i < T i++) {

- a cikluson belül meg ha a tömb aktuális, véletlen eleme nagyobb mint a maximum szám, akkor a maximum szám legyen egyenlő a tömb aktuális elemével

tomb[i] = rand() % 1001;

if (max < tomb[i]) {

max = tomb[i];

}

2016. okt. 16. 01:19
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Itt lemaradt egy pontosvessző:

for (i = 1; i < T; i++) {

2016. okt. 16. 01:20
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Szóval minimum így:

[link]

2016. okt. 16. 01:26
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
Te hibázol, nem a max kiválasztás.
2016. okt. 16. 11:33
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!