Kezdőoldal » Számítástechnika » Programozás » Hogy kellene ezt a programot...

Hogy kellene ezt a programot megírni?

Figyelt kérdés

A feladat az, hogy beírsz egy N számot, ezután a program bescannel N számot (tehát pl N=3 nál sorba bescannel 3 számot) és utána ellenőrzi őket, úgy, hogy az első számnak 0 és 10 között kell lenni, a többi számnak meg pl fele akkorának mint az utána lévő. Ha ezek a feltételek megvannak akkor kiírja hogy jó, ha nem teljesünek akkor rossz.


Nem kérem hogy írjátok meg a programot, csak a gondolatmenetbe segítseket...


Addig eljutottam hogy egy while ciklussal bescanneli az N számot ( while (i<N){i++; blabla}), de az ellenőrzésre nem jöttem rá...

próbáltam a while-on belül if-et használni, sikertelenül..

valahogy úgy kéne hogy amikor az i=1, tehát amikor az első számot olvassa, akkor azt ellenőrzi...

A switch parancsra gondoltam még, de azt még csak úgy használtam ha getchar-volt és karaktereket ellenőrzött...



Ötletek?



2014. nov. 7. 14:12
 1/8 anonim ***** válasza:

Az if-es miért nem ment?


Így lehetne például:


if (i == 1) {

// ...

} else {

// ...

}


Lehet, hogy a == helyett =-et használtál (előbbi az egyenlőségvizsgálat, utóbbi pedig az értékadás).

2014. nov. 7. 14:33
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

Az első számot ki is szervezheted a ciklusból.


1. bekéri N-et

2. bekéri az első számot, megvizsgálja

3. bekéri a 2..N számokat, megvizsgálja őket közben


A 2..N számok vizsgálatánál meg mindig eltárolod az előzőt, és az aktuálisat annak a feléhez hasonlítod.

2014. nov. 7. 14:34
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

Nem igazán értem a feladatot, pl mindig a szám kétszeresét kell beírni, vagy mi?


Mondjuk erre teljesen jó lenne, hogyha mindig eltárolnád az előzőt ("int elozo" vagy vmi), esetleg az, hogy volt-e előző (if (i)).

Az első számon mit ellenőrizne?

2014. nov. 7. 16:33
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:

esetleg egy szemléletes tail recursion, bár elég légből kapott ötlet és felesleges, de valahogy így képzeltem(C nyelven lesz, mert nem tudom miben kell):


int N, elso;

scanf("%d", &N);

scanf("%d", &elso);

printf("%s", expect(elso*2, N)?"jo":"rossz");


a csodálatos függvény:


int expect(int mit, int melyseg) {

__int szam;

__scanf("%d", &szam);

__if (szam!=mit) return 0;

__if (!melyseg) return 1;

__return expect(mit*2, melyseg-1);

}

2014. nov. 7. 16:43
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
Nájsz :D
2014. nov. 7. 16:50
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Nah szóval, egy olyan oldalon kell megírnom a programot, ahol az input már adott, tehát azon nem változtatok.

Konkrétan ezrt írja be a gép :

3

5

7

9


Az első szám az N, ami meghatározza hány szám van, és utána a többi szám. A konkrét feltétlek pedig : Első szám 0-10 között, a többire pedig érvényes hogy : 1. nem nagyobb mint az előtte lévő szám kétszerese, és nem kisebb mint az utána lévő szám fele.

Ha ezek a feltételek mind teljesülnek akkor kiírja hogy jó a feladat.


eddig ezt írtam :


int main()

{

int i=1,n,a;

scanf("%d\n",&n);


while (i<=n){

i++;


scanf("%d\n",&a);


}



return 0;

}


Persze ezen belül próbálkoztam sokmindennel, de ez a rész ami eddig biztos működik.


Ennél a feladatnál még nem vettük a fügvényeket, szóval kb ezekkel kellene megoldani : for, if, else, while, do-while, switch

2014. nov. 7. 17:08
 7/8 A kérdező kommentje:
" többire pedig érvényes hogy : 1. nem nagyobb" ezen a részen az "1." csak elírás
2014. nov. 7. 17:09
 8/8 anonim ***** válasza:

A függvények nagyon új dolgot nem hoznak, mármint csak szebb lesz tőlük a program (sokkal, sokkal szebb..), ugyanez igaz a loopokra, ha már az egyiket tudod, kb. mindet(hátultesztelőt elöltesztelővel lehet gyártani, meg mindből mindet).


A feladathoz:

Az első számnak különleges a funkciója, tehát a kapcsolódó dolgokat vedd ki a loopból, tedd elé, ott ellenőrizd egy if-fel.


- A while feltétele jó, legalábbis egynek.

- Javasoltam egy korábbi hszben, hogy külön tárold el az előző számot(vagy az éppen beolvasottat, mit bánom én kell egy plusz változó), lényeg, hogy legyen _kettűűű_ darab számod, amit össze tudsz _hasonlítani_, másképp nem fog menni.

- Ha nem felel meg a feltételeknek (ez alapján gyanús, hogy if kell), akkor beállítasz egy változót(tehát kell még egy plusz változó), hogy nem jó.

- Amint vége a ciklusnak, megnézed ezt a változót, hogy jó, vagy nem jó (mondjuk 0<->1, ha nincs boolean)

2014. nov. 7. 20:55
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!