Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: getch()

Sivun loppuun

Gwaur [01.12.2003 16:51:42]

#

Olen tehnyt ohjelmaani valikon josta liikutaan jonnekin painamalla numeronappeja 1-4. Tein silleen että se ottaa valinnan getch():llä ja tarkistaa onko valinta oikeanlainen. Ok, hyvin toimii, mutta seuraavaksi ohjelma kysyy käyttäjältä jotain scanf():lla jos käyttäjä on valinnut ykkösen tai kakkosen. Mutta käykin silleen että ohjelma luulee että käyttäjä haluaa pistää näihin kohtiin automaattisesti 1 tai 2, riippuen minkä hän valitsi alkuvalikossa. Kenties ohjelma ajattelee käyttäjän painavan näppäintä niin kauan että luulee käyttäjän haluavan näihin scanfeihin nämä arvot? Koitin korjata sekunnin aikaerolla valikon ja scanfin välillä, ei toiminut. Miten tän vois korjata? Kieli on C

lisäys: pistin alkuvalikkoon getchin sen takia että se siirtyisi heti alkuvalikosta sinne minne pitää, ettei tarvitsisi enteriä painaa

cloudi [01.12.2003 17:22:57]

#

miksei tää ois paremp?
scanf("%d",&valinta);

ku eiks getch() just ootaki enterin painallusta, esim. ku tehtävä suoritettu ja haluu palata valikkoon?
edit: tarkootan vaik edelliseen valikkoon et vaik jos siel sit valitsis jotai muuta ja jatkais taikka sitte valitsee menevänäsä päävalikkoon.
-ja getchellä ainaki virheentarkistus valitteli het..

Gwaur [01.12.2003 17:29:56]

#

lainaus:

miksei tää ois paremp?
scanf("%d",&valinta);

No koska veli huutaa mulle jos käytän sitä ;(

lainaus:

ku eiks getch() just ootaki enterin painallusta, esim. ku tehtävä suoritettu ja haluu palata valikkoon?

Mulla se kyllä jatkaa suorittamista heti kun oon painanu mitä tahansa nappia. Käytössä on stdio.h:n lisäksi conio.h

cloudi [01.12.2003 18:48:18]

#

Ou jee, onks pieniki veli?

ei kyl tajuu..siis sulla on numerot elikkäs valinnat
1 - 4. mut sit vikisee jos on valinnut 1 tai 2.
niin onks sulla switch-caset siin?
koklaa fflush(stdin):iä, se puhistaa ainaki puskurin.

Gwaur [01.12.2003 20:11:50]

#

lainaus:

Ou jee, onks pieniki veli?

Tällä hetkellä opiskelee Tampereen Teknillisessä Korkeakoulussa :)

lainaus:

ei kyl tajuu..siis sulla on numerot elikkäs valinnat
1 - 4. mut sit vikisee jos on valinnut 1 tai 2.

Joo, nimittäin 1 ja 2 on ainoat minkä jälkeen tulee scanf, nimittäin 3 on info ja 4 on lopetus :D

lainaus:

niin onks sulla switch-caset siin?
koklaa fflush(stdin):iä, se puhistaa ainaki puskurin.

joo, se tarkistaa valinnan swtichillä. kokeilin if:lläkin mutta ei toiminut.

fflush(stdin) ei vaikuttanut mitenkään... Pistinkö sen ehkä väärään paikkaan? pistin sen siihen missä se tarkistaa valinnan. eikä kääntäjä valita mitään

cloudi [01.12.2003 21:31:54]

#

no ei se sitte niin pieni broidi ookkaa;p

mut niinhän tuon uskos että getchin jälkeen jää puskuriin valittu nro, ja sitte scanf lukee sen omaan osoitteeseensa.(?????? onks näin kertokaa jotka tietää!!!!!!)
(- en oo ikää käyttäny valikko-jutskis getchiä.)

Gwaur [01.12.2003 21:49:50]

#

lainaus:

mut niinhän tuon uskos että getchin jälkeen jää puskuriin valittu nro, ja sitte scanf lukee sen omaan osoitteeseensa.

Mä olen käsittänyt niin että getch() odottaa napinpainallusta ja sitten kun semmonen tulee niin se palauttaa arvona painetyn napin ascii-arvon, esim joku=getch(); ja jos painaa vaikka 1:stä niin joku:n arvoksi tulee 49. mutta jos haluaa vaan pysäyttää ohjelman tyyliin "Press any key to continue" niin riittää pelkkä getch();
Tajusinko edes sun ihmettelys oikein :P

cloudi [01.12.2003 22:15:58]

#

-ei tää nyt paljo auta sua, mutta näinhä sen näkee ainaki

#include<iostream.h>
#include<conio.h>
#include <stdio.h>

int main()
{
	int joku;

	joku=getch();
		cout<<joku<<endl ;


	cout<<getch()<<endl;

	cout<<getch()<<endl;

	return 0;
}
32 //välilyönnin painallus
49 //nro 1
50 //nro 2:n painallus
Press any key to continue
1  //NRO ykkösen painallus, jos char joku;
50 //nro 2
32
Press any key to continue

cloudi [03.12.2003 07:37:02]

#

moe! entäs:
int valinta;
valinta=getch();
ja
sit
case '1': ..

täl meni mul suoraan tehtävään, ja laski oikeen.

(en oo kerin ny olee koneel, mut yks kaks toi tuli täs aamul mielee)

Gwaur [03.12.2003 23:35:22]

#

mulla on se jotenkuten näin:

#include <stdio.h>
#include <conio.h>

int main()
{
	int vali, jokumuu;
	printf("paina numeronappia: ");
	vali = getch();
	printf("\n\nPainoit %c, tuleeko tähän se sama? jos tulee niin voi prkl -> ", vali);
	scanf("%f", &jokumuu);
	printf("\n\njos siihen tuli se sama \'->\' merkinnän jälkeen niin kerroppa Gwaur:lle miten sen voi poistaa!");
	printf("\nSaa poistua");
	getch();
	return 0;
}

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta