Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ecsl

Frischling

  • »ecsl« ist der Autor dieses Themas

Beiträge: 41

Wohnort: Kaiserslautern

Beruf: Meteorologie Student

  • Private Nachricht senden

1

01.08.2005, 04:03

Noch eine Frage

Hallo zusammen,

ich habe noch eine Frage.
Was bzw. Wie soll ich hinter "int Rechenoperation" was einfügen?
Folgendes Problemchen ich soll die Rechenoperationen jeweils in eigene Funktionen schreiben was ich auch getan habe nur bei der Auswahl des Rechenoperators haperts. Ich dachte mir die Zuweisung so in der Art:

int Rechenoperator {+,-,/,*};

oder so ähnlich aber irgendwie funktioniert das nicht.
Wie kann ich Rechenoperator gleich mehrere Operatoren zuweisen?
Ich denke der Rest des Codes stimmt :-) oder besser ich hoffe es.


#include<iostream.h>

int Ergebnis;
int Eingabe1;
int Eingabe2;
int Rechenoperator; // Auswahl der Rechenoperation nur wie?

int Addition()
{
Ergebnis = Eingabe1 + Eingabe2;

return 0;
}

int Subtraktion()
{
Ergebnis = Eingabe1 - Eingabe2;

return 0;
}

int Mulitiplikation()
{
Ergebnis = Eingabe1 * Eingabe2;

return 0;
}

int Division()
{
Ergebnis = Eingabe1 / Eingabe2;

return 0;
}



void main()
{

cout << "Geben Sie die erste Zahl ein: " ;
cin >> Eingabe1;
cout << "Geben Sie die zweite Zahl ein: ";
cin >> Eingabe2;
cout << "Geben Sie bitte die Rechenoperation ein: (+,-,/,*) " ;
cin >> Rechenoperator;
cout << "Das Ergebnis lautet: " << Ergebnis << endl;

char p[50];
cin.getline (p,50);
cin.getline (p,50);

}

Danke euch

Gruß Eike

J.M.K.

Alter Hase

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

2

01.08.2005, 06:26

Hmm

1. Also zu dem eigenentlichen Problem das funktioniert soweit nicht, da dein Rechenoperator in dem Fall einen Integer-Wert hat. Also +-* und / sind andere Dinge als zahlen.

2. Wie willst du überhaupt auf die betreffende Funktion kommen? Ohne irgendeine Verbindung?

3. Warum machst du globale Variablen anstatt das schön per Parameter und return zu regeln.

Zur Problemlösung es müssen ja nicht direkt die zeichen sein oder? Du kannst das ganze doch auch so lösen

1. Addition
2. Subtraktion
usw.

Damit läge dein Integer gar nicht so falsch.
Danach machst du eine if oder switch abfrage um auf die betreffende Funktion zu kommen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

01.08.2005, 08:54

Also zwischen deiner Ausgabe (+-/*) unt den Funktionen besteht kein Zusammenhang.

Dir fehlt noch eine Schleife, die die Eingabe des Benuters prüft.
(Zwischen cin >> Rechenoperator;
cout << "Das Ergebnis lautet: " << Ergebnis << endl; )

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch(Rechenoperator)
{
case '+':
  Addition();
break;
case '-':
  Substraktion();
break;
case '/':
  if(Eingabe2 != 0)
    Division();
break;
case '*':
  Multiplikation();
break;
}


sry, für die Formatierung.

Im übrigen mal codetags benutzen! (siehe bei mir :P)

Es ist im allgemeinen unschön etwas über globale variablen zu machen hier mal ein Beispeil wie es besser ist.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int Addition(int a, int b)
{
  return a+b;
}

int main()
{
  int a=1, b = 5;
  cout << a << " + " << b << " = " << Addition(a, b);
}

J.M.K.

Alter Hase

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

4

01.08.2005, 16:07

Bleibt aber immer noch das Problem das Rechenoperator einen Integer erwartet und kein Zeichen :)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

01.08.2005, 21:05

Ganz richtig ist das nicht. J.M.K.

In diesem Fall hast du aber total Recht. Jedes Zeichen kann einem Ganzzahlenwert eindutig zugeordnet werden, so ist ein Leerzeichen die 32 (siehe in jedem besseren Tafelwerk)

Werbeanzeige