[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51 | 51
Bydlisko: Kysucké Nov...

zdravim zase,

robim jednoduchy program pre operacie s maticami. Z uvodneho "menu" si uzivatel vyberie, ktoru operaciu chce urobit (riesene cez switch). Pre prvu operaciu zada cislo 1, pre druhu operaciu cislo 2. Chcem ale osetrit tento vstup. Ked deklarujem premennu "vyber" ako integer, vsetko funguje. Akurat iba ked sa zadaju cisla, ked uzivatel zada pismeno tak je zle nedobre :) . Preto deklarujem premennu "vyber" ako char. Tu mi ale tiez program bugguje ked uzivatel zada pismeno. Mohli by ste sa mi nato prosim pozriet?
Dakujem.

Nazorny zdrojak je tu:

Kód:
#include <stdio.h>
#include <conio.h>
int main()
{
    char vyber;
    do {
        printf("zadaj cislo 1 alebo 2: ");  //vypise....
        scanf ("%c", &vyber);
        if (vyber != '1' && vyber != '2')   //ak je zadany iny znak ako '1' alebo '2', vypise upozornenie
            printf("\nzle !! Opakuj: \n");
    }
    while (vyber != '1' && vyber != '2');   //opakuje moznost nacitania znaku, az kym neni zadany znak '1' alebo '2'

    switch (vyber){
        case '1': printf ("moznost 1\n");   //ak znak je '1', vypise...
            break;

        case '2': printf ("moznost 2\n");   //ak je znak '2', vypise...
            break;
    }

    getch();
    return 0;
}


_________________
cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1
Offline

Užívateľ
Užívateľ
C, problem s osetrenim vstupu z klavesnice - char

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa

Takže môžeš to spraviť pomocou príkazu fflush(stdin);, ktorý sa nachádza v hlavičke # include<stdlib.h> .. Tento príkaz ti vymaže celý buffer, takže máš vždy čistý vstup.
Kód:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    char vyber;
    do {
      fflush(stdin);
        printf("zadaj cislo 1 alebo 2: ");  //vypise....
        scanf ("%c", &vyber);
        if (vyber != '1' && vyber != '2')   //ak je zadany iny znak ako '1' alebo '2', vypise upozornenie
            printf("\nzle !! Opakuj: \n");
    }
    while (vyber != '1' && vyber != '2');   //opakuje moznost nacitania znaku, az kym neni zadany znak '1' alebo '2'

    switch (vyber){
        case '1': printf ("moznost 1\n");   //ak znak je '1', vypise...
            break;

        case '2': printf ("moznost 2\n");   //ak je znak '2', vypise...
            break;
    }

    getch();
    return 0;
}


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51 | 51
Bydlisko: Kysucké Nov...
Napísal autor témyOffline : 02.12.2011 23:55 | C, problem s osetrenim vstupu z klavesnice - char

diki moc, funguje to.
Mohol by si mi este prosim ta vysvetlit, preco je potrebne vymazat buffer?


_________________
cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1
Offline

Užívateľ
Užívateľ
C, problem s osetrenim vstupu z klavesnice - char

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa

No pokúsim sa. Buffer je to, keď zadávaš z klávesnice znaky a oni sa ti ukladajú do bufra, čo je taká medzipamäť alebo ako to nazvať. Keď zadáš nežiaduci znak (prípadne viac znakov), tak sa ti vyhodnoti podmienka, ale ten znak/znaky ti zostanú v buferi/zásobníku. V tvojom prípade, keď zadáš pismeno, tak sa ti podmienka nevyhodnotí a ten znak ti zostane v bufri, takže ti to vyhodí 2krát. Takto to chápem ja. Ale každý pochopí danú vec inak, tak najlepšia rada je google a pohladaj si o funkcii fflush(stdin) dačo viac


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Online

Skúsený užívateľ
Skúsený užívateľ
C, problem s osetrenim vstupu z klavesnice - char

Registrovaný: 11.01.09
Prihlásený: 17.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova

street_punk píše:
V tvojom prípade, keď zadáš pismeno, tak sa ti podmienka nevyhodnotí a ten znak ti zostane v bufri, takže ti to vyhodí 2krát.

Len ta troska poopravim - podmienka sa sice nevyhodnoti, ale znak sa z buffra vyberie ( to nema s podmienkou absolutne nic spolocne ). Ten druhy znak je enter.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51 | 51
Bydlisko: Kysucké Nov...
Napísal autor témyOffline : 05.12.2011 14:07 | C, problem s osetrenim vstupu z klavesnice - char

uz chapem, diki moc


_________________
cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1
 [ Príspevkov: 6 ] 


C, problem s osetrenim vstupu z klavesnice - char



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Moderní počítače mají problém se zpožděním vstupu klávesnice

v Novinky

0

400

29.12.2017 12:45

patro16

V tomto fóre nie sú ďalšie neprečítané témy.

C++ problem s char

v Assembler, C, C++, Pascal, Java

4

461

07.10.2012 18:52

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

Problem 1 a 2 USB vstupu do notebooku

v Ostatné

2

647

18.12.2010 17:50

holubbn

V tomto fóre nie sú ďalšie neprečítané témy.

problem s nastavenim klavesnice

v Externé zariadenia

3

401

24.10.2019 10:04

Miso122

V tomto fóre nie sú ďalšie neprečítané témy.

Problem klavesnice na LENOVO N500

v Notebooky a netbooky

3

479

28.04.2010 8:27

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

Problém s numerickou časťou klávesnice NTB

v Notebooky a netbooky

2

281

27.02.2021 16:28

Idea

V tomto fóre nie sú ďalšie neprečítané témy.

problém u klávesnice lenovo ideapad u310

v Notebooky a netbooky

7

1287

17.02.2019 8:37

tatko Tom

V tomto fóre nie sú ďalšie neprečítané témy.

Problém so šípkami klávesnice Logitech K-300(Y-U0004)

v Externé zariadenia

4

365

28.10.2014 14:33

Mandy

V tomto fóre nie sú ďalšie neprečítané témy.

delete char*

v Assembler, C, C++, Pascal, Java

4

450

17.11.2012 20:04

m4r14n

V tomto fóre nie sú ďalšie neprečítané témy.

ošetrenie vstupu

v Delphi, Visual Basic

22

676

12.12.2015 21:11

camarovk19

V tomto fóre nie sú ďalšie neprečítané témy.

mer. char.zenerovej diody

v Elektronika

0

524

10.01.2012 20:34

p4tooo

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena char na int

v Assembler, C, C++, Pascal, Java

6

545

02.02.2012 23:18

street_punk

V tomto fóre nie sú ďalšie neprečítané témy.

char pole do int

v Assembler, C, C++, Pascal, Java

0

382

19.01.2011 22:38

1daemon1

V tomto fóre nie sú ďalšie neprečítané témy.

C Int to Char

v Assembler, C, C++, Pascal, Java

2

358

20.10.2012 15:13

faraon

V tomto fóre nie sú ďalšie neprečítané témy.

Banalny priklad-char. tranzistora

v Elektronika

10

1167

07.03.2007 12:43

Taomas

V tomto fóre nie sú ďalšie neprečítané témy.

Vymena vstupu na jack

v Smartfóny a tablety

2

340

30.03.2015 18:09

fackovectomas



© 2005 - 2024 PCforum, edited by JanoF