Valaki megnézné, hogyan kéne kinéznie helyesen a kódomnak?
#include <stdio.h>
int main(void) {
int x, y=0, i=0, db=0, z=0;
while(scanf("%d", &x)==1) {
db++;
if(x<0) {
while(x<0) {
if(db==1) {
y=x;
}
if(x>y) {
y=x;
}
scanf("%d",&x);
}
}
else {
while(x>0) {
if(db==1) {
z=x;
}
if(x<z) {
z=x;
}
scanf("%d", &x);
}
}
}
printf("%d", y);
printf("%d", z);
return 0;
}
Egyelőre így néz ki a kódom, de nem működik megfelelően. Azt kéne csinálnia, hogy az inputra beérkező számok közül kiírja a legkisebb pozitívat és a legnagyobb negatívat. Látom, hogy hol van benne a hiba, de nem tudom hogyan kéne kiküszöbölni. Mert ugye amikor az if vagy az else ág végén beolvas egy számot, akkor utána visszaugrik az while elejére és ott újra beolvas egy számot, tehát olyankor sajnos egy szám kiesik, de én nem tudom hogyan kéne ezt rendesen megcsinálni. Illetve a feladat része lenne, hogyha nem jön negatív vagy pozitív szám, vagy egyik se akkor írjon helyettük 3 _ ilyen jelet. Hármat, ha nem jön pozitív és hármat ha nem jön negatív, tehát ha egyik se jön, akkor írjon hatot. De ehhez a részéhez még hozzá se tudtam kezdeni a feladatnak, mert még ez se működik megfelelően.
Elsőnek is codeshare.io -t vagy bármilyen más kód megosztót oldalt használj.
Másodjára ez egy egyszerű min, max keresés csak két tartományban. Gondolom nem használhatsz tömböket ezért próbálod így megoldani.
Próbáld meg úgy, hogy a Fő While-on belül kiveszed a scanf-eket meg a while-okat, ránézésre teljesen feleslegesek. Vagy te mit szeretnél elérni velük? Az a 3 egymásba ágyazott if megold neked mindent, (pozitívra else meg 2 if).
Azt nézd meg kézzel, hogy mi történik, ha egy pozitív számra jön egy negatív szám, és rájössz, hogy miért ugrik vissza az "elejére".
Összesen 3 int-re van szükséged: min = 0, max = 0, x.
Olvasod be a számokat és a ciklusban megvizsgálod, hogy
if (x > 0) {
__ if (min == 0 || a < min) {
____ min = a;
__}
}
else {
}
Tehát a külső if/else külön vizsgálja a pozitív és negatív számokat.
A 0-val nem kell foglalkozni, mert az nem pozitív és nem negatív.
A "min" változó értékét akkor írjük felül, ha ez a legelső pozitív számunk ("min" még a kezdeti 0-t tartalmazza) vagy a most kapott szám kisebb az eddig megállapított minimumnál.
Az else ágban ugyanilyen logikával írd meg a negatív számokra.
A végén a kiírás két külön if/else.
Ha találtunk minimumot, akkor a számot írjuk, egyébként a "___"-t.
...
A két if/else ne a while ciklusban legyen.
Minden szám beolvasásakor ki akarod írni, hogy az összes közül melyik a legkisebb/legnagyobb vagy csak a végén egyszer? :)
Nekem jól működik ezekre a számokra is.
Visszamásoltam a kódot a codeshare-re.
Jaa. Megvan.
if (x>o)
Ennek ne sima else ág legyen, hanem:
else if (x<0)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!