Kezdőoldal » Számítástechnika » Programozás » Végtelen ciklus?

Végtelen ciklus?

Figyelt kérdés
Adott egy feladat amiben be kellene kérni 2 számot. Az egyik azt jelenti hogy hány másodperctől számoljon vissza a második pedig hogy hányszor csipogjon a program ez így meg is lenne viszont úgy kellene nekem hogy bekérje az elején a 2 számot és végtelenig csinálja ameddig egy billentyű lenyomásra meg nem szakítom. Ezt c# ban vitelezném ki Sharpdevelop progival. Ötlet valakinél.
2014. márc. 31. 15:42
1 2
 1/17 A kérdező kommentje:
Lemaradt hogy Console app rol beszélek :)
2014. márc. 31. 15:43
 2/17 anonim ***** válasza:
66%

Én megpróbálnám szálakkal megoldani.


Az egyik szál végzi a csipogást a megfelelő paraméterekkel egy while ciklusban, melynek feltétele egy logikai változó értéke. És lenne stop() egy metódusa, ami ezt a változót állítja false-ra.


A másik szál pedig blokkol billentyűleütésig, és ha ez megtörténik, akkor meghívja a csipogó szál stop() metódusát.

2014. márc. 31. 15:46
Hasznos számodra ez a válasz?
 3/17 A kérdező kommentje:
Megy a zöld pacsi viszont kicsit mezeibb nyelven ha megkérhetnélek :) pontosítva mit hova hogyan? :)
2014. márc. 31. 15:48
 4/17 anonim ***** válasza:

Kíváncsi lennék a pirosmancsú(ak) ügyesebb megoldására, hogy én is tanuljak belőle. Nem tudom, mi nem jó vagy mi nem hasznos abban, amit írtam. :)


Konkrétabban az elképzelésem:


Főprogram:

- bekéri a két számot

- létrehozza egy CsipogoSzal objektumot a paraméterekkel

- elindítja a szálat

- vár egy billentyűleütésig

- meghívja a CsipogoSzal objektum stop() metódusát


CsipogoSzal osztály:

- megfelelő módon az őse a szál (nemtom C#-ban hogy van, én Java-ban dolgozom)

- van egy mehet nevű logikai típusú adattagja, ami kezdetben true

- a fő metódusában (amit a szál indításakor meghívódik, Java-ban ezt run()-nak hívják) van a while(mehet){} cikluson belül a csipogás

- és van egy stop() { mehet = false; } metódusa.


Mondjuk amire nem gondoltam korábban, hogy billentyűleütésre azonnal szakítsa meg az egészet: ezt meg lehet úgy oldani, hogy a csipogó ciklus 1 milliszekundumonként iterál (ugye sleep/delay) és belül számolgatja a szükséges intervallumokat.

2014. márc. 31. 16:18
Hasznos számodra ez a válasz?
 5/17 A kérdező kommentje:

Köszönöm másik oldalról közelítetted meg a dolgot viszont még így sem világos de majd a google segít :)

egyébként bekér 2 számot eltelik a x sec csipog 2 őt aztán megint el telik az elején bekért idő megint 2 csipogás aztán megint x idő megint csipogás aztán megszakít remélem te is így értelmezted :)

2014. márc. 31. 16:25
 6/17 anonim ***** válasza:

Nem is értem mi a gond.

Berakod a csipogós részt egy végtelen ciklusba, aztán futtatás közben CTRL+C-vel megszakítod.

Fölösleges több szál.

2014. márc. 31. 17:10
Hasznos számodra ez a válasz?
 7/17 A kérdező kommentje:
Igen :) közben végtelenítettem a ciklust amiben volt a visszaszámlálás és a csipogás... most már csak az kellene hogy tegyük fel x re kilépjen a ciklusból. viszont ezt hogy fogalmam sincs O.o
2014. márc. 31. 17:18
 8/17 anonim ***** válasza:
46%

"Kíváncsi lennék a pirosmancsú(ak) ügyesebb megoldására, hogy én is tanuljak belőle."


Kezdjük ott, hogy egy szálnak nincs "stop" metódusa. A szál maga egy metódus.

2014. márc. 31. 18:10
Hasznos számodra ez a válasz?
 9/17 anonim ***** válasza:

Folytatva azzal, hogy teljesen felesleges szálakkal szórakozni.


A csipogások gyakoriságát simán ki lehet számolni osztással, a cikluslefutások számát is, úgyhogy ezzel nem fárasztok senkit.


Ami még nem megoldott ugye, az az, hogy a ciklus blokkolása nélkül kérjünk be karaktert, ez ugye sima ReadKey()-el nem jó, mert az blokkolja a hívó szálat.

Viszont van a KeyAvailable property, ami megmondja, hogy van-e az app keyboard buffer-ben várakozó karakter, viszont nem blokkol. Ha van, akkor break, és kész is.

2014. márc. 31. 18:16
Hasznos számodra ez a válasz?
 10/17 A kérdező kommentje:

Esetleg ha beleférne még egy kérdés :)

Őőő mikor végig fut a végtelen ciklus bekér 1 bekér 2 visszaszámol csipog x et utána van egy 2 sec delay amíg végig vizsgálja hogy eleget csipogott e azzal lehet valamit kezdeni?

2014. márc. 31. 18:22
1 2

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!