C programozás segítség?
A legnagyobb páros számot kéne kiírnom 10 beírt szám közül. Sajnos csak 0-kat kapok mindig. Mi a hiba?
#include <stdio.h>
int main() {
int numbers[10];
int largest=0;
int i;
for(i=1;i<11;i++) {
scanf("%d", &numbers[i]);
if(numbers[i]%2==0 && numbers[i]>largest)
largest=numbers[i];
}
if((largest=0)){
printf("There are no even numbers.");}
else{
printf("%d", largest);}
return 0;
}
Bocs igen, ezt "benéztem". Már kicsit álmos vagyok.
Akkor marad az megoldás amit először javasoltam, hogy megnézed a doksiban a legkisebb páros számot amit tud az int-ed (sajnos az int tényleg fordító függő). És azzal adsz kezdő értéket. Vagy az ellenőrzésbe beteszed:
if(number%2==0 && number>largest) helyett
if((number%2==0 && number>largest) || largest%2!=0)
És a megjelenítésnél a kolléga által javasolt változatot használod (ott is ellenőrzöd, hogy a largest páros-e).
"if(number%2==0 && number>largest) helyett
if((number%2==0 && number>largest) || largest%2!=0)"
Ezt nem igazán értem, hogy miért írnám hozzá. (Páros és nagyobb) vagy páratlan? Ebben az esetben páratlan számot is kaphatnék végeredményként.
Még egy gyors kérdés, kik ezek az emberek (ti), akik segítik a magamfajta kezdőket, akik csak abszolválni szeretnék a Programozás alapjai tárgyat? :D Tanárok, esetleg unatkozó programozók?
„(Páros és nagyobb) vagy páratlan? Ebben az esetben páratlan számot is kaphatnék végeredményként.”
Miért is? Largest egy módon lehet páratlan, ha még a kezdőértéket tartalmazza, minden más esetben a program által beleírt kötelezően páros érték van benne. Nekem ennek ellenére nem rokonszenves a plusz művelet – itt nem számít, de mondjuk nyolcszázmilliárd adat kiértékelésénél már az a kis idő is luxusnak tűnik pusztán ezen egyetlen eshetőség kedvéért.
Az adott fordító int-minimuma egyébként lekérdezhető, de szerintem szerencsésebb előre tisztázni/biztosítani a program számára szükséges értékek korlátait, aztán, ha a kezdőérték az alsó alatt van, már jó.
Ha egy szám az előző largest értéknél kisebb és páratlan, akkor ebben az esetben meg fogja kapni az értékét, nem?
A végénél nem jönne ki a kiíratási feltételek miatt, de akkor minek írnám bele?
További 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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!