Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » C++,finde die Lösung nicht für ein Taschenrechnerprogramm

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 ]
000
12.12.2006, 21:25 Uhr
~x-r4y
Gast


Hallo liebe C++ Community ;-)
Ich bin dabei ein taschenrechner mit den 4 Grundfunktionen(Addieren,subtrahieren....ect.)
zu schreiben.
Leider bekomme ich von meinem Compiler immer 8 Fehler angeziegt,die ich nicht weiß zu berichtigen.

Code:
#include <iostream.h>

int add (int a, int b)
{
int c = a+b;

  return c;
}
int Sub (int a,int b)
{
int c = a-b;
return c;
}
int Mal (int a,int b)
{
int c =a*b;
return c;
}
int Div (int a, int b)
{
int c = a/b;
return c;
}
int main()
{
cout<<"Willkommen zum Taschenrechner von x-r4y!\n";
cout<<"Geben Sie einen Wert ein>!\n";
int Zahl1;
cin >>Zahl1;
cout <<"Geben Sie den nächsten Wert ein!\n";
int Zahl2;

cin >> Zahl2;
cout <<"Wert1= "  <<Zahl1<<"\n";
cout <<"Wert2= " <<Zahl2<<"\n";
cout<< "\n\n"  ;
cout<<"Geben Sie die Rechenoperaton ein! \n";
cout<<"Zahl Addition =1\n";
cout<<"Zahl Subtraktion =2\n";
cout<<"Zahl Multiplikation=3\n";
cout<<"Zahl Division=4\n";
cout<<"--------------\n\n";
cout<<"Ihre Eingabe....: " ;

int op;
cin>>op ;
if (op==1)
{
cout<<"Die Summe der Zahlen betraegt:";
cout<<"add (Zahl1,Zahl2);
cout<< "\n\n\n";
}

else if (op==2)
{
cout<<"Die Subtraktion der Zahlen betraegt:  ";
cout<<"Sub (Zahl1,Zahl2);
cout<<"\n\n\n";
}
else if (op==3)
{
cout<< "Die Multiplikation der Zahlen betraegt: " ;
cout<<"Mal (Zahl1,Zahl2);
cout<<"\n\n\n";
}
else if (op==4)
{
cout<< "Die Division der Zahlen betraegt: " ;
cout<<"Div (Zahl1,Zahl2)
cout<<"\n\n\n";
}
else if (op>4)
{
cout<<"Falsche Eingabe!\n";
}

cout<<"Danke by x-r4y\n";

return 0 ;
}


Das ist mein Code.
Fehler sind:

Zitat:
51 Tschenrechner.cpp
stray '\' in program

51 Taschenrechner.cpp
stray '\' in program

51 Taschenrechner.cpp
stray '\' in program

51 Taschenrechner.cpp
stray '\' in program

56 Taschenrechner.cpp
parse error before `Subtraktion'

64 Taschenrechner.cpp
stray '\' in program

64 Taschenrechner.cpp
stray '\' in program

64 Taschenrechner.cpp
stray '\' in program

68 Taschenrechner.cpp
parse error before `Division'

51 Taschenrechner.cpp
stray '\' in program




Würde mich echt freuen ,wenn ihr mir sagt ,wie ich das berichtigen muss.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.12.2006, 21:31 Uhr
ao

(Operator)



C++:
cout<<"Sub (Zahl1,Zahl2);


Hier müssen die Gänsefüßchen weg. Bei Add, Mal und Div auch.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.12.2006, 07:58 Uhr
NewZealandkiwi



hiho,
ähm naja ich hoffe mal dass ich nichts falsches erzähle:

aber das hier dürfte wenns keine netten zahlen sind, auf probleme stoßen:

Code:

int c = a/b;


da du "c" als einen integer deklarierst aber die division auch floats zurück geben kann, was in den meisten fällen so sein wird.

Das andere was mir aufgefallen ist, du hast 4 verschiedene rechenoperationen... ich weis nicht ob das einfach nur eine style frage ist oder nicht, aber ich würde das ganze einfach mit switch() überprüfen...dann kannst du gleich noch einen defaultwert abfragen, sodass der user nur zwischen 1-4 eine antwort bekommt, bei allem anderen (zahl oder buchstabe) dann eine fehlermeldung,wie du das machst oder machen willst, ist dann immer noch deine sache.

ja und in den funktionen würde ich das ganze nicht in einer neuen variable speichern sondern gleich "return (a+b);" machen, aber wiederum ist das nur mein vorschlag

... bin selber ja noch anfänger, wenn mich jemand korrigieren sollte, dann nur zu
lg Manuel
--
It's the difference which makes us same.

Dieser Post wurde am 13.12.2006 um 08:00 Uhr von NewZealandkiwi editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.12.2006, 08:35 Uhr
Blubber2063



Also das ist beides nicht wirklich wichtig. Zu deinem ersten Punkt, aller operanden sind int und damit ist auch das Ergebnis int (überladener Operator), würde der Compiler auch anmahnen wenn der Rückgabetyp anders wäre.
Er muss sich halt nur im klaren darüber sein das hier auf bzw. Abgerundet wird.

Das mit dem gleich return (a+b) zu schreiben mag bei der Funktion OK sein, ist aber nicht unbedingt immer besser lesbar, solche Geschichten optimiert ein guter Compiler aber im Zweifel eh. Deswegen immer schaun das man noch gut lesen kann was man da geschrieben hat. Sonst wird die Fehlersuche zur farce.

Dieser Post wurde am 13.12.2006 um 08:36 Uhr von Blubber2063 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.12.2006, 08:59 Uhr
KFC Embryo
Ein Huhn


Hi,

so gehts, zwar nicht optimal aber funktioniert:


Code:

#include <iostream>
#include <stdio.h>


using namespace std;

int add (int a, int b)
{
    return (a+b);
}

int Sub (int a,int b)
{
    return (a-b);
}

int Mul (int a,int b)
{
    return(a*b);
}

int Div (int a, int b)
{
    return(a/b);
}

int main()

{
cout<<"Willkommen zum Taschenrechner von x-r4y!\n";
cout<<"Geben Sie einen Wert ein!\n";

int a;
cin >>a;

cout <<"Geben Sie den nächsten Wert ein!\n";

int b;
cin >> b;

cout <<"Wert1= "  <<a<<"\n";
cout <<"Wert2= " <<b<<"\n";
cout<< "\n\n"  ;
cout<<"Geben Sie die Rechenoperaton ein! \n";
cout<<"Zahl Addition =1\n";
cout<<"Zahl Subtraktion =2\n";
cout<<"Zahl Multiplikation=3\n";
cout<<"Zahl Division=4\n";
cout<<"--------------\n\n";
cout<<"Ihre Eingabe....: " ;

int op;
cin>>op ;

if (op==1)
{
cout<<"Die Summe der Zahlen betraegt:";
cout<<add (a,b);
cout<< "\n\n\n";
}

else if (op==2)
{
cout<<"Die Subtraktion der Zahlen betraegt:  ";
cout<<Sub (a,b);
cout<<"\n\n\n";
}
else if (op==3)
{
cout<< "Die Multiplikation der Zahlen betraegt: " ;
cout<<Mul (a,b);
cout<<"\n\n\n";
}
else if (op==4)
{
cout<< "Die Division der Zahlen betraegt: " ;
cout<<Div (a,b);
cout<<"\n\n\n";
}
else if (op>4)
{
cout<<"Falsche Eingabe!";
}
}




--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.12.2006, 09:56 Uhr
NewZealandkiwi



hmm naja ok mag sein, dass das ganze nicht notwendig ist was ich sagte,
meinte es ja nur gut, und habe ja hinzugefügt, dass ich das halt so machen würde..
genauso würde ich die rechenoperationen nicht in eine eigene funktion schreiben sondern
in die verschiedenen cases der switch funktion. Aber klar so wie es ist, funktioniert es auch.
Und wenn ich ehrlich bin, ist ein taschenrechner programm genau das richtige um funktionen auszuprobieren und zu lernen, wie man sie nutzt..etc. Naja mache ja gerade das selbe, da ich mich in dlls einarbeiten will

lg Manuel
--
It's the difference which makes us same.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.12.2006, 15:29 Uhr
xXx
Devil


Hmm also nen switch wäre schon ordentlicher wenn es vllt. auch noch mehr rechenoperationen werden sollen ...


C++:
#include <iostream>
#include <stdio.h>
#include <conio.h>


using namespace std;

int add (int a, int b)
{
    return (a + b);
}

int sub (int a, int b)
{
    return (a - b);
}

int mul (int a, int b)
{
    return (a * b);
}

float div (int a, int b)
{
    return (a / b);
}

int main()
{
    int a = 0;
    int b = 0;
    int nOperation = 0;

    std::cout << "Willkommen zum Taschenrechner von x-r4y!" << std::endl;
    std::cout << "Geben Sie bitte einen Wert ein: ";
    std::cin >> a;
    std::cout << "Geben Sie bitte einen Zweiten Wert ein: ";
    std::cin >> b;
    std::cout << "Geben Sie bitte die Rechenoperation ein:" << std::endl;
    std::cout << "\t(1) Addition" << std::endl;
    std::cout << "\t(2) Subtraktion" << std::endl;
    std::cout << "\t(3) Multiplikation" << std::endl;
    std::cout << "\t(4) Division" << std::endl;
    std::cout << "=> ";
    std::cin >> nOperation ;

    switch (nOperation)
    {
        case 1:
        {
            std::cout << "Die Summe der Zahlen ist: " << add(a, b) << std::endl;
        } break;
        case 2:
        {
            std::cout << "Die Subtraktion der Zahlen ergibt: " << sub(a, b) << std::endl;
        } break;
        case 3:
        {
            std::cout << "Die Multiplikation der Zahlen ergibt: " << mul(a, b) << std::endl;
        } break;
        case 4:
        {
            std::cout << "Die Division der Zahlen ergibt: " << div(a, b) << std::endl;
        } break;
        default:
        {
            std::cout << "Die selektierte Rechenoperation steht nicht zur Verfuegung!" << std::endl;
        } break;
    }
    std::cout << "Eine beliebige Taste beendet das Programm!" << std::endl;
    getch();
    return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.12.2006, 16:42 Uhr
BoBtheREapER
kein job für nen BoB


ich würde in der divisions funktion noch eine fehlerabfrage einbauen, dass b ungleich 0 ist, weil man ja nicht durch 0 teilen darf.
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.12.2006, 17:00 Uhr
xXx
Devil


aja das
C++:
using namespace std;
hatte ich vergessen bei mir rauszunehmen ... sry ... hab ich beim korrigieren übersehen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.12.2006, 17:36 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#ifdef __WIN32__
#include <cstdlib>
#endif

#include <iostream>

double add (double a, double b) { return a + b; }
double sub (double a, double b) { return a - b; }
double mul (double a, double b) { return a * b; }
double div (double a, double b) { return a / b; }

typedef double (*rechop_ptr)(double, double);

static rechop_ptr rechops[] = { NULL, add, sub, mul, div };
static char const *const rech_label[] = { NULL,
                      "Die Summe",
                      "Die Differenz",
                      "Das Produkt",
                      "Der Quotient" };

int main() {
  double a, b;
  int op;

  std::cout << "Willkommen zum Taschenrechner von x-r4y!\n"
               "Geben Sie bitte einen Wert ein: "         << std::flush;
  std::cin >> a;
  std::cout << "Geben Sie bitte einen zweiten Wert ein: " << std::flush;
  std::cin >> b;

  std::cout << "Geben Sie bitte die Rechenoperation ein:\n"
               "\t(1) Addition\n"
               "\t(2) Subtraktion\n"
               "\t(3) Multiplikation\n"
               "\t(4) Division\n"
               "=> "
        << std::flush;
  std::cin >> op ;

  std::cout << rech_label[op] << " der Zahlen ist: " << rechops[op](a, b) << std::endl;

#ifdef __WIN32__
  std::system("PAUSE");
#endif
}


Eine ggf. gewünschte Abhandlung von fehlerhaften Eingaben wird als Übungsaufgabe belassen
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 13.12.2006 um 17:37 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: