PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Operator und Operand in eine Varibale?!


Codeq
04.01.2002, 19:01
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 << &quot;Bitte geben Sie die 1. Zahl ein:&quot; << endl;
cin >> a[0];
cout << &quot;Beginnen Sie bitte mit der Zahleneingabe&quot; << endl;


for (int i = 1; i < 51; i++)
{
cin >> mathoperator >> b[i];

switch(mathoperator)
{
case &acute;+&acute;:
a[i]=a[i-1]+b[i];
break;
case &acute;-&acute;:
a[i]=a[i-1]-b[i];
break;
case &acute;/&acute;:
a[i]=a[i-1]/b[i];
break;
case &acute;*&acute;:
a[i]=a[i-1]*b[i];
break;
}
cout << &quot;=&quot; << 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

Codeq
05.01.2002, 14:48
Thx soweit geht alles, bis auf die eingabe von &acute;c&acute; und &acute;e&acute; 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 &acute;e&acute; soll das Programm beenden. Div durch 0 soll einen Fehler ausgeben und das
// vorherige Ergebnis soll erscheinen.
// Bei Eingabe von &acute;c&acute; 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
// &acute;e&acute; beendet das programm sofort
// &acute;c&acute; setzt den ersten Operanden auf 0
//
/////////////////////////////////////////////////////////////////////////

#include <iostream.h>

void main () {
double a = 0.0;
double b = 0.0;
char Operator;

cout << &quot;Geben sie einen Operator und einen Operanden ein der berechnet werden soll&quot; << endl;
cout << &quot;&acute;e&acute; Beendet das Programm&quot; << endl;
cout << &quot;&acute;c&acute; Setzt den ersten Operanden auf &acute;0&acute;&quot; << endl;
do {
cout << a ;
cin >> Operator >> b ;
switch(Operator) {
case &acute;+&acute;:
a=a+b;
break;
case &acute;-&acute;:
a=a-b;
break;
case &acute;/&acute;:
if (b==0) {
cout << &quot;Division durch Null ist nicht erlaubt&quot; << endl;
}
else {
a=a/b;
}
break;
case &acute;*&acute;:
a=a*b;
break;
case &acute;c&acute;:
a=0.0;
break;
default:
cout << &quot;Operator nicht bekannt&quot; << endl;
}

} while (Operator != &acute;e&acute;);

}


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 << &quot;Geben sie einen Operator und einen Operanden ein der berechnet werden soll&quot; << endl;
cout << &quot;&acute;e&acute; Beendet das Programm&quot; << endl;
cout << &quot;&acute;c&acute; Setzt den ersten Operanden auf &acute;0&acute;&quot; << endl;
do {
cout << a ;
cin >> Operator;
switch(Operator) {
case &acute;+&acute;:
cin >>b;
a=a+b;
break;
case &acute;-&acute;:
cin >>b;
a=a-b;
break;
case &acute;/&acute;:
if (b==0) {
cout << &quot;Division durch Null ist nicht erlaubt&quot; << endl;
}
else {
cin >>b;
a=a/b;
}
break;
case &acute;*&acute;:
cin >>b;
a=a*b;
break;
case &acute;c&acute;:
cin >>b;
a=0.0;
break;
case &acute;e&acute;:
break;

default:
cout << &quot;Operator nicht bekannt&quot; << endl;
}



} while (Operator != &acute;e&acute;);

}
---------------------------------------------------------------------

Ist zwar eine &quot;unschöne&quot; Lösung aber mir fällt leider nix anderes ein :( :( :(

cya
Melt

Codeq
05.01.2002, 21:57
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 &acute;c&acute; oder &acute;e&acute; 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)