Character einlesen



  • int main()
    {
    int a,b;
    char op;
    double erg;
    a=b=0;
    printf("Geben Sie zwei Zahlen ein: \n");
    scanf("%i%i",&a,&b);
    printf("Geben Sie nun die gewuenschte Rechenoperation aus: \n");
    do
    {
    scanf("%c", &op);
    }
    while(op!='+'||op!='-'||op!='*'||op!='/'||op!='%');

    erg=Calc(a,b,op);
    printf("Der Ergebnis von %i %c %i ist %d",a,op,b,erg);
    getch();

    }

    Hi,

    trotz vielem probieren schaffe ich es nicht, den Character op einzulesen. Woran liegt es?



  • mach nach jedem scanf() ein

    while (getchar()!='\n');
    

    Du liest ihn zwar ein, aber deine Schleifenbedingung trifft immer zu ⚠
    Bei jedem beliebigen Zeichen liefert der Ausdruck der Bedinung true ⚠
    Tausche die ||´s durch &&´s ⚠



  • Vor dem scanf würde ich noch den Tastaturpuffer löschen.



  • Danke, dass mit dem einlesen hat funktioniert. Habe jetzt ein neues Problem:

    Hauptprogramm:

    int main()
    {
    int a,b;
    char op;
    double erg;
    a=b=0;
    printf("Geben Sie zwei Zahlen ein:\n");
    scanf("%i%i",&a,&b);
    while (getchar()!='\n');
    printf("Geben Sie nun die gewuenschte Rechenoperation aus: \n");
    do
    {
    scanf("%c", &op);
    while (getchar()!='\n');
    }
    while(op!='+'&&op!='-'&&op!='*'&&op!='/'&&op!='%');
    erg=Calc(a,b,op);
    printf("Der Ergebnis von %i %c %i ist %d",a,op,b,erg);
    getch();
    }

    Funktion:

    double Calc(int a,int b, char op)
    {
    double erg;
    switch(op)
    {
    case '+':
    erg=a+b;
    break;

    case '-' :
    erg=a-b;
    break;

    case '':
    erg=a
    b;
    break;

    case '/':
    erg=a/b;
    break;

    case '%':
    erg=a%b;
    break;

    }
    return erg;
    }

    Ich habe erg bis zur Ausgabe überwacht und der errechnete Wert ist richtig. Trotzdem gibt mir das Programm immer als Ergebnis 0 aus 😡 .



  • Hab schon gesehen, muss %f sein.

    Danke für eure Hilfe


Anmelden zum Antworten