Anonymní profil Venombrain – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Anonymní profil Venombrain – Programujte.comAnonymní profil Venombrain – Programujte.com

 

Příspěvky odeslané z IP adresy 77.237.136.–

Venombrain
C / C++ › C, čtení z klávesnice
17. 2. 2012   #153685

#36 Samot10

Skvělá práce.    Jednoduchý a funguje to. 

#35 feki

Děkuji za návrhy určitě je také vyzkouším. 

Problem solved, může se to uzavřít.  

Venombrain
C / C++ › C, čtení z klávesnice
11. 2. 2012   #153427

Tak se mi to nepodařilo zprovoznit, asi to byla blbost.

#18 Samot10
Není mi jasné, jak se dají nastavit vstupní podmínky pro stdin. Rozhodně to zní zajímavě a určitě bych našel využití i v jiných případech. Mohl bys mi vytvořit nějakou ukázku?

Venombrain
C / C++ › C, čtení z klávesnice
11. 2. 2012   #153424

V cyklu to mám proto, abych ošetřil to, když uživatel zadá jinou hodnotu než má, tak se to vrátí a opět ho vyzve, aby zadal hodnotu, kterou má zadat. Problém je, když zadá více znaků, tak tak se cyklus proběhne několikrát.

Tímto jsem ošetřil alespoň to, že když zadá jeden špatný znak, tak mu to vypíše jen jednou.

if (c=='\n'){
  scanf("%c",&c);
}

Abych ošetřil i ostatní znaky, bych musel to použít několikrát a možná by to v tom programu dělalo bordel. Zkusím to udělat a pak sem napíši jak to dopadlo.

Venombrain
C / C++ › C, čtení z klávesnice
11. 2. 2012   #153404

Omlouvám se, že jsem se zde už neukázal, ale jsem intrák a tam nemám přístup k netu. Po několika marných pokusech a kompletním překopáním programu. Když jsem to nemohl najít nikde na netu, mne to už začalo štvát a zeptal jsem se učitele.   

Poradil mi ať tam dám tohle.  

scanf("%c", &c);
if (c=='\n'){
scanf("%c",&c);
}

A zde vám dávám celí program, aby jste viděli k čemu jsem to potřeboval (Vytvořil jsem si projekt Console Application)

 "main.c"

#include <stdio.h>
#include <ctype.h>

float PI=3.14159;
extern int zacatek();
extern void kruh();
extern void valec();

int main(){

    switch (zacatek()) {

        case 'K' : {
        kruh();
        return 1;
        }

        case 'V' : {
        valec();
        return 2;
        }

        case 'Q' :{
        return 0;
        }
    }
}

pomocny_soubor.c 

#include <stdio.h>
#include <ctype.h>

extern float PI;
static float r, h, s;
int zacatek();
void kruh();
void valec();

int zacatek(){

    int w=0;
    char c;

    while(w==0){
        printf("Stisknete:\n\"K\" pro vypocet obsahu kruhu.\n\"V\" pro vypocet obsahu valce.\n\"Q\" pro ukonceni programu.\n(Potvrdte ENTERem)\n");
        scanf("%c", &c);
        if (c=='\n'){
        scanf("%c",&c);
        }
        c = toupper(c);
        
        printf("Zadali jste \"%c\"\n", c);

        if( c == 'K' || c == 'V' || c == 'Q' ){
            w=1;
        }
    }
return c;
}

void kruh(){

    printf("\nProsim zadejte polomer kruhu.\n");
    scanf("%f", &r);

    s = PI*r*r;

    printf("\nPlocha kruhu je: %.2fcm^2\n", s);

}

void valec(){

    printf("\nProsim zadejte polomer valce.\n");
    scanf("%f", &r);
    printf("Nyni zadejte vysku valce.\n");
    scanf("%f", &h);

    s = 2*PI*r*(r+h);

    printf("\nPlocha valce je: %.2fcm^2\n", s);

}

Snad je to dostatečně přehledný a pochopitelný. Jedná se pouze o výpočet plochy kruhu a válce.

Venombrain
C / C++ › C, čtení z klávesnice
3. 2. 2012   #153166

Koukám, že nikdo neví. Ani můj kámoš, se kterým jsem to teď probíral. Nakonec jsem to udělal, tak že jsem vynechal "default" a před "switch" jsem dal cyklus ve kterém pomocí "if" porovnávám vstupní hodnotu se znaky mnou nadefinované v použitých "case".

Venombrain
C / C++ › C, čtení z klávesnice
3. 2. 2012   #153161

   

switch (getchar()){ //Zde to načte i ENTER, kterým musím potvrdit zadaný znak.

case 'A' : bla bla bla...

default : printf("Upozorneni"); //Toto upozornění to vytiskne 2x.
Venombrain
C / C++ › C, čtení z klávesnice
3. 2. 2012   #153158

Zdravím,

jsem začátečník a mám problém se čtením z klávesnice. Potřebuji, aby program přečetl první zadaný znak a ostatní nechal být(včetně ENTERU). Pokusím se nastínit problém.

V příkazu "switch" naskenuji z klávesnice znak, vše jde bez problému do té doby, než dojde k části programu "default", kde upozorňuji na zadání špatného znaku, ale upozornění se vytiskne 2x, protože se mi naskenuje i ENTER.

Asi se s tím setkala většina z vás. Zkouším hledat řešení už dlouho leč marně. Pro čtení z klávesnice používám příkaz "getchar".

Předem děkuji za odpovědi. Prosil bych bez urážek. Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý