Archiv verlassen und diese Seite im Standarddesign anzeigen : Operator und Operand in eine Varibale?!
Hi
hab ma wieder ne assige Übung von meinem Prof bekommen. er möchte das wir einen Taschenrechner coden, der 2 Operanden und einen Operator berechnen soll.
der erste Operand ist das Ergebnis der vorhereigen Rechenoperation. nun mein Prob:
da ich nur die iostream.h zur verfügung habe muss ich mit cin arbeiten.
wenn ich nun +15 eingebe und sie einem array zuweise, dann meckert der compiler rum das kein Operator vorhanden sei an der stelle wo ich das ergebnis ermitteln möchte
a = a b[0] b[1];
gibts da ne vernünftige läsung? muss ich heir schon structs benutzen?? ?(
MeltDown
05.01.2002, 10:14
hi codeq,
ich würde keine structs benutzen, habe hier mal ein kleines beispielproggi gecoded.
-----------------------------------------------------------------------
#include "iostream.h"
int main()
{
int a[50],b[51];
char mathoperator;
cout << "Bitte geben Sie die 1. Zahl ein:" << endl;
cin >> a[0];
cout << "Beginnen Sie bitte mit der Zahleneingabe" << endl;
for (int i = 1; i < 51; i++)
{
cin >> mathoperator >> b[i];
switch(mathoperator)
{
case ´+´:
a[i]=a[i-1]+b[i];
break;
case ´-´:
a[i]=a[i-1]-b[i];
break;
case ´/´:
a[i]=a[i-1]/b[i];
break;
case ´*´:
a[i]=a[i-1]*b[i];
break;
}
cout << "=" << a[i] << endl;
}
}
-----------------------------------------------------------------------
Erklärung:
cin >> mathoperator >> b[i];
liest jeweils einen string nach dem anderen ab, hier 2strings: 1. String = Mathoperator, 2. String b[i]
cya
melt
Thx soweit geht alles, bis auf die eingabe von ´c´ und ´e´ welche das programm sofort beenden sollen..
/////////////////////////////////////////////////////////////////////////
//
// Name, Vorname: Matr.-Nr.:
//
/////////////////////////////////////////////////////////////////////////
//
// Datum:
//
// Beschreibung des Programms:
// ===========================
//
// Funktion:
// berechnet 2 Operanden mit einem Operator. Gültige Operatoren sind +,-,*,/ Ungültige Operatoren
// sollen per Fehlermeldung ignoriert werden und das vorherige Ergebnis soll erscheinen.
// Bei Eingabe von ´e´ soll das Programm beenden. Div durch 0 soll einen Fehler ausgeben und das
// vorherige Ergebnis soll erscheinen.
// Bei Eingabe von ´c´ soll das Ergebnis auf 0 gesetzt werden
// Das Ergebnis soll immer den ersten Operanden bilden!
//
//
// Benutzung:
// nach start einen Operator und einen Operanden eingeben der berechnet werden soll
// ´e´ beendet das programm sofort
// ´c´ setzt den ersten Operanden auf 0
//
/////////////////////////////////////////////////////////////////////////
#include <iostream.h>
void main () {
double a = 0.0;
double b = 0.0;
char Operator;
cout << "Geben sie einen Operator und einen Operanden ein der berechnet werden soll" << endl;
cout << "´e´ Beendet das Programm" << endl;
cout << "´c´ Setzt den ersten Operanden auf ´0´" << endl;
do {
cout << a ;
cin >> Operator >> b ;
switch(Operator) {
case ´+´:
a=a+b;
break;
case ´-´:
a=a-b;
break;
case ´/´:
if (b==0) {
cout << "Division durch Null ist nicht erlaubt" << endl;
}
else {
a=a/b;
}
break;
case ´*´:
a=a*b;
break;
case ´c´:
a=0.0;
break;
default:
cout << "Operator nicht bekannt" << endl;
}
} while (Operator != ´e´);
}
da steht auch in kurzen worten was mein Prof genau von mir will.. :D
und ich denke das er bei switch nix gegen break hat, denn sonst muss ich mir was anderes überlegen..
also das cin >> Operator >> b; fordert min 2 werte zur eingabe... wie schaffe ich es das er auf einen wert reagiert??
MeltDown
05.01.2002, 20:47
--------------------------------------------------------------------
#include <iostream.h>
void main () {
double a = 0.0;
double b = 0.0;
char Operator;
cout << "Geben sie einen Operator und einen Operanden ein der berechnet werden soll" << endl;
cout << "´e´ Beendet das Programm" << endl;
cout << "´c´ Setzt den ersten Operanden auf ´0´" << endl;
do {
cout << a ;
cin >> Operator;
switch(Operator) {
case ´+´:
cin >>b;
a=a+b;
break;
case ´-´:
cin >>b;
a=a-b;
break;
case ´/´:
if (b==0) {
cout << "Division durch Null ist nicht erlaubt" << endl;
}
else {
cin >>b;
a=a/b;
}
break;
case ´*´:
cin >>b;
a=a*b;
break;
case ´c´:
cin >>b;
a=0.0;
break;
case ´e´:
break;
default:
cout << "Operator nicht bekannt" << endl;
}
} while (Operator != ´e´);
}
---------------------------------------------------------------------
Ist zwar eine "unschöne" Lösung aber mir fällt leider nix anderes ein :( :( :(
cya
Melt
ich habs nun 1zu1 übernommen und hier mein bugreport :D :D
1. /0 <-- dabei schmiert das programm ab und der debugger meldet sich
2. bei eingabe von ´c´ oder ´e´ wartet er noch auf die eingabe eines 2ten wertes..
3. bei angabe keines Operators sagt er so oft Kein Operator vorhanden wie stellen die zahl hat die ich eingegeben habe .
4. eingabe vno buchstaben möglich <-- geht wohl mit iostream.h net zu lösen, also scheiss drauf :P
najo.. ivh werkel mal weiter.. wenn ich was hab meld ich mich nochma 8)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.