Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fehler bei OOP (Program= Taschenrechner)

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 <
000
22.12.2006, 15:58 Uhr
GeForce



Versuch mich gerade an Objekt Orientiertes Programmieren, allerdings funktioniert das nicht so. Meiner Meinung nach sollte das Funktionieren, das Programm ist aber leider andere Meinung.

Es gibt eine Fehlermeldung, diese sagt aber nicht wirklich was aus

Zitat:
Diese Anwendung wird aufgrund einen Ungültigen Beitrages geschlossen.


Das ganze Passiert nachdem ich den Wert für Summand1 Eingeben und Anschliesend Enter betätige

C++:
#include <stdio.h>
#include <conio.h>
class rechner
{
  public:
    float addition();
    void set(float summand1, float summand2);
  
  private:
    float a;
    float b;
};

float rechner::addition()
{
  float c = a + b;
  return c;
}

void rechner::set(float summand1, float summand2)
{
  a = summand1;
  b = summand2;
}

int main()
{
  int sum1, sum2;
  
  printf ("Erster Summand ");
   scanf ("%d", sum1);
  printf ("\nZweiter Summand ");
   scanf ("%d", sum2);
  
  rechner make;
  make.set(sum1, sum2);
  float ergebnis = make.addition();
  
  printf("%d", ergebnis);
  getchar();
  return 0;
}


--
Für Rechtschreibfehler haftet mein Deutschlehrer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.12.2006, 16:23 Uhr
0xdeadbeef
Gott
(Operator)


Ngh...C mit Klassen...

Ganz direkt ist der Fehler, dass du bei scanf nicht die Adressen übergibst, und bei printf %d statt %f benutzt. Aber...scanf und printf in C++-Code zu benutzen ist äußerst unschön, und streng genommen ist der header stdio.h in C++ nicht standardkonform. Das Äquivalent aus der C-Kompatibilitätsbibliothek nennt sich cstdio, dann befinden sich die Symbole auch direkt im namespace std. So oder so, besser wäre:

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

class calculator {
public:
  void set(double x, double y);
  double result() const;

private:
  double x_, y_;
};

void calculator::set(double x, double y) {
  x_ = x;
  y_ = y;
}

double calculator::result() const {
  return x_ + y_;
}

int main() {
  double a, b;
  calculator calc;

  std::cout << "Zwei Zahlen eingeben: " << std::flush;
  std::cin >> a >> b;

  calc.set(a, b);
  std::cout << "Summe: " << calc.result() << std::endl;

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


Im Übrigen sieht mir das alles sehr gut in Standard-C++ behandelbar aus, also:

Bearbeitung:

Dreckigen Hack für nutzlose Windows-IDEs eingefügt, damit du auch was damit anfangen kannst.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.12.2006 um 16:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.12.2006, 13:30 Uhr
kronos
Quotenfisch
(Operator)



Zitat:
Diese Anwendung wird aufgrund einen Ungültigen Beitrages geschlossen.

Dachte, das bekommt man wenn man versucht, einen Windalf-Thread mit dem IE zu öffnen...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: