Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Findet ihr den Fehler(syntaxerror)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
24.10.2005, 16:32 Uhr
Manuelito



Hab den Quellcode jetzt mal vervollständigt. Ich hab aber auch den Eindruck, dass du dir die Posts noch nicht mal wirklich durchgelesen hast.

C++:
#include <iostream>
#include <cstdio>
void warte_auf_taste()
{
    std::cout << std::endl << std::endl << "ENTER druecken, um fortzufahren.";
    std::cin.get();
}

float addition(float zahl1, float zahl2)
{
    return (zahl1+zahl2);
}  

float auswaehlen(int rechenart, float zahl1, float zahl2)
{
    if (rechenart == 1)
    {
        return (addition(zahl1, zahl2)); //Compiler meldet hier Fehler
    }    
}



int main()
{
    float addition(float,float);
    float subtraktion(float,float);
    float multiplikation(float,float);
    float division(float,float);
    float auswaehlen(int, float, float);
    float zahl1, zahl2,ergebnis;
    int rechenart;
    std::cout << "Geben sie bitte die Zahl der Rechenart an in der sie rechnen wollen!\n\n";
    std::cout << "Addition = 1, Subtraktion = 2, Multiplikation = 3, Division = 4\n\n";
    std::cout << "Ihre Zahl: ";
    std::cin >> rechenart;
    std::cout << "\n";
    while (rechenart > 4)
    {
       std::cout << "Geben sie bitte eine RICHTIGE Rechenartszahl an!\n";
       std::cout << "Ihre Zahl: ";
       std::cin >> rechenart;
       std::cout << "\n";
    }  
    std::cout << "Geben sie bitte die erste Zahl ein:";
    std::cin >> zahl1;
    std::cout << "\n Geben sie bitte die zweite Zahl ein:";
    std::cin >> zahl2;
    std::cout << "\n";
    ergebnis = auswaehlen(rechenart, zahl1, zahl2);
    std::cout << "Ihre " << rechenart << " der Zahlen: " << zahl1 << "und " << zahl2 << " ergab das Ergebnis:\n";
    std::cout << ergebnis;  
    warte_auf_taste();
    return 0;
}


--
Verstand ist das, was am gerechtesten unter den Menschen verteilt ist.
Jeder glaubt, er hätte genug davon.
-- unbekannt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
24.10.2005, 17:06 Uhr
0xdeadbeef
Gott
(Operator)


Wenn ich auch mal was beisteuern darf

C++:
#include <iostream>
#include <sstream>
#include <string>

double add     (double d, double e) { return d + e; }
double subtract(double d, double e) { return d - e; }
double multiply(double d, double e) { return d * e; }
double divide  (double d, double e) { return d / e; }

typedef double (*operation)(double, double);

operation ops[] = { add, subtract, multiply, divide };

int main() {
  unsigned op;
  double d, e;
  std::string s;
  std::istringstream isstr;

  do {
    std::cout << "Rechenart auswählen, 1 - Addition, 2 - Subtraktion, 3 - Multiplikation, 4 - Division: " << std::flush;
    std::getline(std::cin, s);

    isstr.clear();
    isstr.str(s);
    isstr >> op;
  } while(!isstr || op == 0 || op > 4);

  do {
    std::cout << "Die zwei Operanden angeben: " << std::flush;
    std::getline(std::cin, s);

    isstr.clear();
    isstr.str(s);
    isstr >> d >> e;
  } while(!isstr);

  std::cout << "Ergebnis: " << ops[op - 1](d, e) << std::endl;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
24.10.2005, 17:13 Uhr
Manuelito



ich wollte ja nur dessen lösung verbessern, und nicht ne grundlegend neue aufsetzen
außerdem bin ich mir nicht sicher, ob der deine Lösung versteht

Manuelito
--
Verstand ist das, was am gerechtesten unter den Menschen verteilt ist.
Jeder glaubt, er hätte genug davon.
-- unbekannt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
24.10.2005, 18:56 Uhr
BT



Hier ist andere mögliche code mit der "SWITCH" Befehl .


C++:
#include<iostream>

unsigned short int rechenart;
float zahl1,zahl2,ergebnis;

int main()
{
    
    do
    {
    
    std::cout<<"\nGeben sie bitte die Zahl der Rechenart an in der sie rechnen wollen!\n\n";

    std::cout<<"Addition = 1, Subtraktion = 2, Multiplikation = 3, Division = 4\n\n";    
    
    std::cout << "Ihre Zahl: ";
    
    std::cin >> rechenart;
    
    }while (rechenart <1 || rechenart >4);

    std::cout << "\n\nGeben sie bitte die erste Zahl ein: ";
    
    std::cin >>zahl1;
    
    std::cout << "\n\nGeben sie bitte die zweite Zahl ein: ";
    
    std::cin >>zahl2;
    
    switch (rechenart)
    {
    case 1:
        ergebnis=(zahl1+zahl2);
        break;
    case 2:
        ergebnis=(zahl1-zahl2);
        break;
    case 3:
        ergebnis=(zahl1*zahl2);
        break;
    case 4:
        ergebnis=(zahl1/zahl2);
        break;
        
    }
        
        std::cout<<"\n\nErgebnis :  "<<ergebnis;
        return 0;
}



mod edit: Benutze CPP Tags selber

Dieser Post wurde am 24.10.2005 um 19:06 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
24.10.2005, 21:20 Uhr
~AceKiller73
Gast


Bevor ihr euch die Köpfe einschlag jetzt mal meine
entgültige Lösung:

C++:
#include <iostream.h>
#include <cstdio>
void warte_auf_taste()
{
    getchar();
}
float addition(float zahl1,float zahl2);
float subtraktion(float,float);
float multiplikation(float,float);
float division(float,float);
float zahl1, zahl2,ergebnis;
int rechenart_zahl;
int main()
{
cout << "========================================================================\n";
cout << "Taschenrechner v.1.0 by AceKiller73 with: Dev C++\n";
cout << "========================================================================\n\n\n";
cout << "Geben sie bitte die Zahl der Rechenart an in der sie rechnen wollen!\n";
cout << "[Addition = 1], [Subtraktion = 2], [Multiplikation = 3], [Division = 4]\n\n";
cout << "Ihre Rechenartszahl: ";
cin >> rechenart_zahl;
cout << "\n";
while (rechenart_zahl > 4)
{
   cout << "Geben sie bitte eine RICHTIGE Rechenartszahl an!\n";
   cout << "Ihre Zahl: ";
   cin >> rechenart_zahl;
   cout << "\n";
}
while (zahl1 == 0)
{
    cout << "Geben sie die erste Zahl ein:\t";
    cin >> zahl1;
}
while (zahl2 == 0)
{
    cout << "Geben sie die zweite Zahl ein:\t";
    cin >> zahl2;
    cout << "\n";
}
    if (rechenart_zahl == 1)
        {
                ergebnis = addition(zahl1, zahl2);
        }    
    if (rechenart_zahl == 2)
        {
                ergebnis = subtraktion(zahl1, zahl2);
        }  
    if (rechenart_zahl == 3)
        {
            ergebnis = multiplikation(zahl1, zahl2);
        }  
    if (rechenart_zahl == 4)
        {
            ergebnis = division(zahl1, zahl2);
        }  
cout << "Ergebnis: \t\t\t";
cout << ergebnis;
cout << "\n\n\n\n========================================\n";
cout << "Zum Beenden bitte Enter druecken!!\n";
cout << "========================================\n";  
warte_auf_taste();
warte_auf_taste();
    return 0;
}

float addition(float zahl1,float zahl2)
{
    return (zahl1+zahl2);
}  
float subtraktion(float zahl1, float zahl2)
{
    return (zahl1-zahl2);
}
float multiplikation(float zahl1,float zahl2)
{
    return (zahl1*zahl2);
}
float division(float zahl1, float zahl2)
{
    return (zahl1/zahl2);
}  



Ach ja:
Der Code ist jetzt natürlich komplett umgeschrieben.
Und mit der iostream.h:
Ich muss das meinem compieler so angeben weil bei
iostream erkennt er den cout befehl nicht mehr.



^^^^ oder so ähnlich :-D


mfg AceKiller73
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
24.10.2005, 21:55 Uhr
Manuelito




Zitat von ~AceKiller73:
Und mit der iostream.h:
Ich muss das meinem compieler so angeben weil bei
iostream erkennt er den cout befehl nicht mehr.

Du musst dann auch (wie in unser aller Lösungen drin steht, was du bemerkt hättest, wenn du dir die angeguckt hättest )

C++:
std::cout << "Bla";

schreiben, oder am Anfang (vor dem ersten Aufruf von cout, cin, oder ähnlichem)

C++:
using namespace std;

hinschreiben

Manuelito

Bearbeitung von 0xdeadbeef:

Ich hab mir mal erlaubt, den Tippfehler in der using-Direktive zu entfernen.


--
Verstand ist das, was am gerechtesten unter den Menschen verteilt ist.
Jeder glaubt, er hätte genug davon.
-- unbekannt

Dieser Post wurde am 25.10.2005 um 00:09 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
25.10.2005, 00:18 Uhr
0xdeadbeef
Gott
(Operator)


cout ist kein Befehl, sondern ein Objekt. Befehle gibt es auf der Shell, C++ kennt Objekte, Funktionen, Methoden und so weiter. cout ist ein Objekt vom Typ ostream, und zum Beispiel

C++:
cout << "foo";


zum Beispiel macht nichts anderes, als die Methode ostream &ostream::operator<<(char const *) mit &cout als this-Argument und "foo" als Parameter aufzurufen.

Operatoren sind in C++ stinknormale Funktionen mit einer alternativen Schreibweise beim Aufruf, man könnte da auch

C++:
cout.operator<<("foo");


schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
25.10.2005, 11:45 Uhr
Pler
Einer von Vielen
(Operator)


Das mit dem cout würd ich mal nicht so eng sehen.
Am ende wird da doch auch blos ne Methode aufgerugen. Und ne Methode ist wie ne Funktion. Und Funktionen werden schon mal als Befehl bezeichnet.
???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
25.10.2005, 16:35 Uhr
(un)wissender
Niveauwart


Nein
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
25.10.2005, 20:11 Uhr
Pler
Einer von Vielen
(Operator)


Wie "nein"?
nich?
Wo ist der Fehler?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: