Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
.Eestlane.
HV kasutaja

liitunud: 14.01.2006
|
19.06.2008 13:42:24
c keeles väike probleem |
|
|
Miks selline lihtne koodijupp ei tööta?
char v;
do {
printf("Kas soovid galerii (s)alvestada v6i yhistada ning v2ljuda?");
scanf("%c",&v);
} while (v!="s" || v!="t"); |
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
19.06.2008 13:45:13
|
|
|
" != '
Ehk siis tee vahet char* ja char muutujatel
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
.Eestlane.
HV kasutaja

liitunud: 14.01.2006
|
19.06.2008 13:52:52
|
|
|
Aitäh.
EDIT: Uus küsimus.
Teine probleem on, et küsimus "Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?" esitatakse kaks korda järjest.
Lihtsutame koodi:
char v='a';
while (v!='s' && v!='t') {
printf("Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?");
scanf("%c",&v);
} |
Ning käivitamisel näitab:
tsitaat: |
Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda? |
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
Nitro
HV kasutaja

liitunud: 02.03.2004
|
19.06.2008 14:08:30
|
|
|
Näidatakse kaks korda, kuna v on juba võrdne a 'ga.
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
19.06.2008 14:33:38
|
|
|
Asi on selles, et kui sa trükid midagi siis satub input buffrisse see tähemärk (näiteks 'q') + enter ('\n'). Kuna tähemärk ei olnud 's' või 't' siis loop läheb edasi.
Aga uuesti küsimise asemel leiab scanf input buffrist sisestatud '\n' märgi ning loeb selle ning kasutajalt sisendit ei oodata. Ja loop läheb jälle edasi, kuid seekord on buffer tühi ja scanf() ja kasutajalt küsitakse sisendit.
Soovitan sisendi küsimisel kasutada fgets() funktsiooni või siis lugeda mõne muu funktsiooniga stdin-st kuni realõpuni ('\n').
|
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
.Eestlane.
HV kasutaja

liitunud: 14.01.2006
|
19.06.2008 14:48:55
|
|
|
Aitäh, troglodyte. Püüan natuke seedita su jutu sisu ning siis midagi ette võtta.
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
1234567
HV vaatleja
liitunud: 05.11.2003
|
19.06.2008 16:57:46
|
|
|
Selline ei oleks mõttekam?
#include <conio.h>
char v;
while(v!=115 && v!=116){
printf("Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?");
fflush(stdin);
v=getch();
} |
Numbrid 115 ja 116 siis ASCII tabelist. Isegi enterit ei pea vajutama.
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
.Eestlane.
HV kasutaja

liitunud: 14.01.2006
|
19.06.2008 17:04:16
|
|
|
Aitäh, jätan meelde. Praegu polnud aega ega tähtsust, seega läksin lõpuks lihtsaimat teed pidi ja kasutasin inti.
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
Urmet
HV vaatleja
liitunud: 29.07.2005
|
19.06.2008 20:00:29
|
|
|
1234567 kirjutas: |
Numbrid 115 ja 116 siis ASCII tabelist. Isegi enterit ei pea vajutama. |
mismoodi see on paremini loetav kood kui 's' ja 't'?? võlunumbrid on pahad, kasutagem siis vähemalt konstante
#define ASCII_T_T2HT 115
#define ASCII_S_T2HT 116
char v;
while(v!=ASCII_T_T2HT && v!=ASCII_S_T2HT){
printf("Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?");
fflush(stdin);
v=getch();
}
|
aga siin jääb alles veel see probleem, et muutuja "v" on algväärtustamata ja võib vabalt olla nii 's' kui 't'..
|
|
Kommentaarid: 10 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
1234567
HV vaatleja
liitunud: 05.11.2003
|
20.06.2008 04:30:55
|
|
|
Urmet kirjutas: |
1234567 kirjutas: |
Numbrid 115 ja 116 siis ASCII tabelist. Isegi enterit ei pea vajutama. |
mismoodi see on paremini loetav kood kui 's' ja 't'?? võlunumbrid on pahad, kasutagem siis vähemalt konstante
#define ASCII_T_T2HT 115
#define ASCII_S_T2HT 116
char v;
while(v!=ASCII_T_T2HT && v!=ASCII_S_T2HT){
printf("Kas soovid galerii (s)alvestada v6i (t)yhistada ning v2ljuda?");
fflush(stdin);
v=getch();
}
|
aga siin jääb alles veel see probleem, et muutuja "v" on algväärtustamata ja võib vabalt olla nii 's' kui 't'.. |
Ja mida need ascii konstandid nüüd teoreetiliselt muutsid?
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
20.06.2008 08:41:26
|
|
|
Isiklik eelistus nii numbritele kui suurtele ja lohisevatele makrodele olek vastav char ise, ehk siis 's' või 't'. Oleks kohe aru saada, mida teha üritatakse. Sisuliselt arvuti jaoks on tõesti kama kaks mis kujul neid konstante esitatakse, lihtsalt veidi inimloetavam tundub endale.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
tanzanite
HV kasutaja

liitunud: 13.05.2006
|
26.06.2008 17:20:41
|
|
|
nice ... tdwtf material in progress.
|
|
tagasi üles |
|
 |
|