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=ab;
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