Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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]

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]

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.

  • Autor
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.

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.

Verdammt, gebt ihm doch dann lieber eine Hilfestellung, anstatt

blöde Zitate auszupacken...er hat ein Beispiel gegeben, also könnte

man ihm doch daraufhin einen Anhaltspunkt geben, oder nicht ?!

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?

Ja sorry, carstenj !

Mein Fehler, nehme alles zurück.

:D

Wird Zeit für Wochenende.

Wünsche ein schönes solches !

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.

  • Autor

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.

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.

mit OOP hab ich mich beschäftigt (c++ in 21 tagen)

Nichts für ungut, aber danach würde ich nicht sagen, dass man sich mit OOP beschäftigt hat.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.