Zum Inhalt springen

klassen


hund555

Empfohlene Beiträge

Hallo, ich fange erst mit Klassen zu arbeiten und weiß nicht ob das programm so weit richtig ist.

ich hab ein programm berechnung geschrieben, und will bei void summe die summe der eingegeben zahlen ausrechnen.

wie kann ich jetzt bei meinem Programm im main die Summe ausgeben?


#include<iostream.h>
#include<stdlib.h>

class berechnung
{
public:


berechnung(int zahlen[20], int i=0)
{
cin >> zahlen[i];

while(zahlen[i]!=0)
{
i++;
cin >> zahlen[i];
};
pri = i;
przahlen[20] = zahlen[20];
}

void summe()
{
int sum=0;
for (int j=0; j<pri; j++)
{
sum=sum+przahlen[j];

}
cout << sum << endl;
}

private:
int pri;
int przahlen[];


};


void main(void)
{




cout << endl;
system("pause");
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

nein, du benutzt deine Klasse wie eine Funktion, und das ist nicht Sinn und Zweck der Geschichte. Eine Einführung in die Objektorientierte Programmierung würde jetzt mit Sicherheit zu weit führen, aber du solltest dir nochmal deine Unterlagen ansehen bzw. ein Tutorial durcharbeiten:

http://tutorial.schornboeck.net/oop.htm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Etwas objektorientierter wäre dieses Beispiel:


#include <iostream>
using namespace std;

class berechnung
{
int i, summe; // Standardmäßig sind alle Variablen private
public:
// Konstruktor, initialisiert i und summe mit 0
berechnung() : i(0), summe(0) {};
~berechnung() {}; // Destruktor, tut nix...

void zaehleBis(int zahl){
for(; i<zahl; i++){
cout << "Zahl" << i << endl;
summe = summe + i;
}
}

void gibSumme(){
cout << "Summe:" << summe << endl;
}
};


int main()
{
berechnung Berechnung; // Instanz erstellen

Berechnung.zaehleBis(20); // Memberfunktionen aufrufen...
Berechnung.gibSumme();
}
[/php]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich will mich da mal Carsten anschließen. Bevor du hier weiter auf Fehlersuche gehst, bzw. etwas krampfhaft zum Laufen bringen willst solltest du dir ein paar Grundlagen aneignen. Als Stichworte fallen mir bei diesem Beispiel sofort ein:

- Was ist eine Prozedur?

- Was ist eine Funktion?

- Was ist ein Rückgabewert?

- Was ist überhaupt eine Klasse?

- Was ist der Unterschied zwischen Klasse und Objekt?

Denn erst wenn du aufrecht stehen kannst macht es Sinn, das Laufen zu lernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich will mich da mal Carsten anschließen. Bevor du hier weiter auf Fehlersuche gehst, bzw. etwas krampfhaft zum Laufen bringen willst solltest du dir ein paar Grundlagen aneignen. Als Stichworte fallen mir bei diesem Beispiel sofort ein:

- Was ist eine Prozedur?

- Was ist eine Funktion?

- Was ist ein Rückgabewert?

- Was ist überhaupt eine Klasse?

- Was ist der Unterschied zwischen Klasse und Objekt?

Denn erst wenn du aufrecht stehen kannst macht es Sinn, das Laufen zu lernen.

ich weiß was funktionen, etc. sind, ich möchte mich jetzt mit klassen auseinander setzten und damit üben!

deswegen wollte ich eine Programm mit klassen schreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich weiß was funktionen, etc. sind, ich möchte mich jetzt mit klassen auseinander setzten und damit üben!

deswegen wollte ich eine Programm mit klassen schreiben.

dann solltest du aber wissen, dass ein Programm, in der das Wort "Klasse" ("Class") vorkommt, noch lange kein objektorientiertes Programm ist.

Du musst das Konzept verstehen, ansonsten kannst du dir den Einsatz von Klassen sparen und weiterhin prozdual programmieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wo ist denn dein Problem? Ich hab doch einen überarbeiteten Code geliefert, wo er auch überhaupt nicht drauf eingegangen ist. Dass sein Code und seine Art mit Klassen zu programmieren nicht richtig ist, war doch auch schon geklärt.

Ich sehe auch keine konkreten Fragen, sondern der OP verlangt quasi eine Kompletteinführung in die objektorientierte Programmierung. Deswegen habe ich einen Link zu einem sehr guten Tutorial gepostet.

Also was soll man noch tun?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich weiß was funktionen, etc. sind, ich möchte mich jetzt mit klassen auseinander setzten und damit üben!

deswegen wollte ich eine Programm mit klassen schreiben.

Nein ich unterstelle dir hier, dass du eben nicht genau weisst, was beispielsweise der Unterschied zwischen einer Funktion und einer Prozedur ist, oder was eine Methode mit einer Funktion gemeinsam hat.

Objektorientierte Programmierung ist ein komplexer Bereich, den man nicht mal eben mit ein paar Übungen und ein paar Kommentaren erklären kann. Deshalb wird dir wirklich nur helfen, dir ein Tutorial zu schnappen (den Link hast du hier ja bekommen), dich damit zu beschäftigen und Schritt für Schritt zu verstehen, was der Knackpunkt bei OOP ist, wo sie genau sich von "klassischer" imperativer Programmierung unterscheidet, bzw. welche Konzepte beide gemeinsam haben.

Wenn du dann konkrete Fragen hast, wird dir hier garantiert auch wieder geholfen - nur den Rundumschlag solltest du nicht erwarten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

sorry für umstände...

meine kontrette frage war auch : wie kann ich jetzt bei meinem Programm im main die Summe ausgeben?

und einen Rundumschlag wollte ich nicht haben, und habe auch danach nicht gefragt.

mit OOP hab ich mich beschäftigt (c++ in 21 tagen) - wollte wissen bwz. probieren ob man arrays übergeben kann, wie man es in meinem beispiel sieht - sonst nichts, da braucht man auch nicht viel darüber zu diskutieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du solltest, wenn du wirklich mit deinem Programm weiterarbeiten willst, zuerst ein paar grundlegende Probleme beheben. Das hat nichts mit OOP zu tun.

#include<iostream.h>

Das ist veraltet. Nach dem aktuellen Standard heißt der Header iostream, ohne h.

#include<stdlib.h>

Gleiches gilt hier. Der Header heißt cstdlib. Die Funktionen und Objekte liegen aber im namespace std, d.h. du musst entweder vor alle verwendeten Funktionen std:: schreiben, oder, wie in carstenjs Beispiel:

using namespace std;

berechnung(int zahlen[20], int i=0)

Die Methode ist falsch benannt. Sie berechnet nichts, sondern sie liest ein. Du könntest sie Eingabe nennen.

Zudem ist nicht klar, warum du das Array zahlen und den int i als Parameter übergibst. Wenn die Funktion die Werte einlesen soll, brauchst du sie nicht zu übergeben. Wozu übergibst du i? Wozu dient der Defaultwert?

while(zahlen!=0)

Was ist, wenn schon vorher eine Null in zahlen steht?

i++;

cin >> zahlen;

Was ist, wenn der Benutzer mehr als 20 Zahlen eingibt?

};

Das Semikolon kann weg.

przahlen[20] = zahlen[20];

zahlen ist ein Array mit 20 Elementen. Daher gehen die gültigen Indizes von 0 bis 19. przahlen hat gar keine Größenangabe. Du greifst also mit einem ungültigen Index auf die Arrays zu. Ich vermute, du willst das ganze Array mit dieser Anweisung kopieren. Das geht aber nicht ohne eine Schleife.

void summe()

Auch diese Methode ist schlecht benannt. Bei diesem Namen würde ich erwarten, dass die Methode die Summe zurückgibt. Deine Methode gibt nichts zurück, sondern sie berechnet die Summe und gibt sie aus.

Die Berechnung selbst ist zumindest korrekt (wenn in przahlen richtige Werte stehen würden).

int przahlen[];

Wenn du vermutest, dass du damit ein Array mit flexibler Größenanpassung deklarierst, muss ich dich enttäuschen.

Zusammenfassend: Du hast da ein paar echte dicke Klöpse in deinem Code, die mich zweifeln lassen, dass du dich mit den Grundlagen auskennst. Vielleicht solltest du zunächst mal diese Defizite aufarbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...