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
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..
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
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.
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
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ä.)
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
-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
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)
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; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.