WinFuture-Forum.de: C++ Funktion summe() - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C++ Funktion summe()

#1 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 17:26

Hey Leude,

wäre sehr Dankbar wenn mir jemand helfen könnte.


Laut Aufgabenstellung soll folgendes geschrieben werden:

Zitat

Die Eingabe von 3 ganze Zahlen, diese einliest, die eingelesenen Werte der Funktion summe() übergibt, die Summe der Werte als Rückgabewert der Funktion übernimmt und die eingelesenen Werte und die Summe ausgibt.


Ich dachte sofort an
summe = zahl1 + zahl2 + zahl3
, aber da im Thema derzeit Inkrement- /Dekrementausdrücke behandelt werden bin ich etwas nachdenklich.




Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

Anzeige

#2 Mitglied ist offline   TingoDingo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 121
  • Beigetreten: 25. Oktober 09
  • Reputation: 0

geschrieben 25. Oktober 2012 - 18:00

Wüsste nicht was daran falsch sein sollte.
int summe(z1, z2, z3)
{
  result z1 + z2 +z3;
}


0

#3 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 18:08

Ich bekomme als Fehlermeldung: error: 'z1' was not declared in this scope

http://codepad.org/Qc5xtOrb

Dieser Beitrag wurde von moneymaker bearbeitet: 25. Oktober 2012 - 18:17

Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#4 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.081
  • Beigetreten: 01. Juli 08
  • Reputation: 271

geschrieben 25. Oktober 2012 - 18:21

Du hast nur die Typen für die Argumente vergessen:

int summe(int z1, int z2, int z3)
{
  return z1 + z2 + z3;
}

Damit Dein Code funktioniert, mußt Du der Funktion die eingegebenen Zahlen natürlich auch noch übergeben. Im Moment wird einfach nur summe() aufgerufen. Die Funktion ohne Argumente würde ich entfernen. Überladung gehört sicher nicht zur Aufgabe. Wenn Du willst, daß die o.g. Funktion auch ohne Argumente was Sinnvolles ausgibt, kannst Du mit Defaultwerten arbeiten. Alle Argumente, die keinen Wert haben, werden dann mit der Vorgabe initialisiert:

int summe(int z1 = 0, int z2 = 0, int z3 = 0)
{
  return z1 + z2 + z3;
}

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 25. Oktober 2012 - 18:28

0

#5 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 18:46

http://codepad.org/WrX3lczP

Funktioniert irgendwie nicht. Der Wert wird falsch ausgegeben. Und wo ist ergebnis_summe nicht deklariert? Geht das nicht mit void()?

Ich steh komplett auf den Schlauch.
Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#6 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.081
  • Beigetreten: 01. Juli 08
  • Reputation: 271

geschrieben 25. Oktober 2012 - 19:03

Zitat

Und wo ist ergebnis_summe nicht deklariert?
Deklariert ist es ja, aber nicht initialisiert. In dem Programm sagst Du nur, es gibt eine Variable ergebnis_summe und dann gibst Du sie aus. Es fehlt aber völlig die Zuweisung eines Wertes. Genau das willst Du ja mit der Summenberechnung machen. Das ist alles etwas durcheinander - wahrscheinlich Dein erstes Programm :blush: Du mußt Dir klarmachen, was getan werden muß und was dafür gebraucht wird.

Du willst drei Zahlen einlesen, diese summieren und das Ergebnis ausgeben. Die eingelesenen Zahlen werden also der Funktion summe() übergeben, dort addiert und die Summe wird zurückgegeben. ergebnis_summe ist als Argument also überflüssig! Auf dem Papier würde man einfach folgendes schreiben:

ergebnis_summe = z1 + z2 + z3

Das Aufsummieren soll nun in eine gesonderte Funktion ausgelagert werden:

ergebnis_summe = summe(z1, z2, z3)

Nach dem Einlesen der Zahlen werden diese also erst summe() übergeben und das Ergebnis in ergebnis_summe gespeichert. Jetzt steht ein Wert in ergebnis_summe (eben die Summe) und Du kannst das Ganze ausgeben.

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 25. Oktober 2012 - 19:04

0

#7 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 19:29

http://codepad.org/cRDjKoBf

Ja hab mein Fehler entdeckt. Ich möchte aber das ganze in einer void() Funktion einpacken. So hab ich das mit den vorherigen Übungen auch immer hinbekommen.

Die nächste Aufgabe lautet das ganze folgend mit der Funktion produkt() auszustatten. Meine Frage dazu lautet ob ich nun die int z1 umbennen muss oder werden die einfach im Speicher überschrieben?
Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#8 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 19:59

http://codepad.org/CXgy2KZv

Ich hab soweit alles zum Laufen gebracht. Jetzt würde mich das ganze interessieren, wie ich das ganze mit einer void() Verteilung ausführen kann. Rein zur Übersichtlichkeit.

Ich habe es ausprobiert, aber immer wieder erscheint mir eine Fehlermeldung.

Danke für die Hilfen.




Dieser Beitrag wurde von moneymaker bearbeitet: 25. Oktober 2012 - 20:00

Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#9 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.081
  • Beigetreten: 01. Juli 08
  • Reputation: 271

geschrieben 25. Oktober 2012 - 20:09

Zitat

Ja hab mein Fehler entdeckt.
Leider nicht, die Funktion summe() wird in Deinem Code überhaupt nicht aufgerufen. Es müßte so aussehen:

summe(...)
{
  return ...
}

main(...)
{
  Variablen deklarieren
  Zahlen einlesen
  sum = summe(z1, z2, z3)
  Ergebnis ausgeben
}


Zitat

Ich möchte aber das ganze in einer void() Funktion einpacken.
Eine solche Funktion gibt aber nichts zurück! Ohne einen Rückgabetyp müßtest Du Zeiger verwenden. Bevor man so was einsetzt, sollten die Grundlagen allerdings sitzen.

Zitat

Meine Frage dazu lautet ob ich nun die int z1 umbennen muss oder werden die einfach im Speicher überschrieben?
Kommt drauf an, welches z1 Du meinst. Sagen Dir Gültigkeitsbereiche was, also lokale und globale Variablen? Nur weil Du die Variablen in der main() und in summe() gleich benannt hast, heißt das nicht, daß sie auch die gleichen Speicherbereiche benutzen - ganz im Gegenteil. Benenne sie lieber an einer Stelle um, dann wird auch klarer, was das Programm an welcher Stelle macht. Du stellst Dir sonst nur selbst ein Bein.
0

#10 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 25. Oktober 2012 - 21:02

Stimmt. Ich habe die Summe einfach in die Main Funktion eingesetzt. Somit war int und double überflüssig bzw. doppelt.

http://codepad.org/VaGM7i3M

Nun habe ich die Funktion umgeschrieben und in der Main Funktion den Aufruf hinzugefügt. Ich hoffe das ich das nun korrekt umgesetzt habe.

Wegen der Benennung habe ich einfach zur Übersicht für die jeweilige Rechnung andere Buchstaben genommen bzw. Buchstabe.

Gültigkeitsbereiche? Also Lokal wären doch Daten die innerhalb von Funktionen z.B. von main() definiert werden. Sprich Temporär und sobalb man die Funktion verlässt werden diese entfernt. Richtig?
Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#11 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 2.910
  • Beigetreten: 27. März 02
  • Reputation: 20

geschrieben 26. Oktober 2012 - 08:16

Beitrag anzeigenZitat (Mr. Floppy: 25. Oktober 2012 - 20:09)

Ohne einen Rückgabetyp müßtest Du Zeiger verwenden.

Oder besser eine Referenz :wink: . Verhindert NULL-Pointer und macht den Code innerhalb der Methode etwas leserlicher.

MfG TO
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

#12 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 01. November 2012 - 19:26

OK

Dieser Beitrag wurde von moneymaker bearbeitet: 01. November 2012 - 21:48

Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#13 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 15. November 2012 - 11:38

Hallo Leude,

ich brauche mal wieder Hilfestellungen.

Aufgabenstellung und derzeitige Entwicklung seht hier: http://codepad.org/ZKc8QSq7

Ich weiss nicht wie ich das ganze nun umschreibe und in Matrix umbauen kann mit Ausgabe. Blicke noch nicht ganz durch mit den Büchern.
Jeder Tipp wäre mir Hilfreich.

Danke
Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

#14 Mitglied ist offline   __42__ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 10. März 12
  • Reputation: 5

geschrieben 15. November 2012 - 13:05

// Initialisierung:
char[16] plainText
char[4][4] tmpMatrix
char[16] chipherText

// plainText in tempMatrix kopieren (zeilenweise, i := Zeile, j := Spalte)
for (int i = 0; i < 4; ++i)
    for (int j = 0; j < 4; ++j)
        tmpMatrix[i][j] = plainText[i * 4 + j]
        print tmpMatrix[i][j]
        if (j < 3) print separator
    print newline

// chipherText aus tmpMatrix generieren
for (int i = 0; i < 4; ++i)
    for (int j = 0; j < 4; ++j)
        chipherText[i * 4 + j] = tmpMatrix[j][i]

for (int i = 0; i < 16; ++i)
    print chipherText[i]



Ca. so müsste es aussehen.
Lässt sich natürlich drastisch vereinfachen.

Dieser Beitrag wurde von __42__ bearbeitet: 15. November 2012 - 13:06

0

#15 Mitglied ist offline   moneymaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.028
  • Beigetreten: 30. Januar 06
  • Reputation: 3

geschrieben 17. November 2012 - 13:47

Danke.

Ich habe es nun soweit hinbekommen das eine Ausgabe in verschlüsselter Form stattfindet. Nun war laut Aufgabenstellung noch die Anzeige der Zwischenmatrix gefordert.

Sollte doch normalerweise ja so aussehen: matrix [i] [j].

Das funktioniert bei mir jedoch nicht. Habe ich irgendetwas vergessen? Bestimmt.

Code:
http://codepad.org/hKhmlhKF
Man muss viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
Jean-Jacques Rousseau
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0