Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C++: Zahlenkette und beschriebene Funktionen implementieren
Druckversion
Druckversion
Autor
Universität/Hochschule J C++: Zahlenkette und beschriebene Funktionen implementieren
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-11-10


Hallo,

es geht um folgende Aufgabe:





Mein Ansatz stimmt mit der Lösung überein. Allerdings funktioniert das nicht in C++ in Codeblocks. Kann mir jemand helfen, wie das zu lösen ist?

Codeblocks:




Liebe Grüße, Kajam






Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Primentus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.02.2016
Mitteilungen: 1222
Herkunft: Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-11-10


Hallo Kajam,

falls Du das fehlerlose Kompilieren und die Ausführung Deiner Funktion sehen willst, musst Du folgendes tun:

1. Nach einer geschlossenen geschweiften Klammer, die eine Funktionsdefinition abschließt, kommt niemals ein Semikolon.

2. Du musst zusätzlich noch ein Hauptprogramm hinzufügen, die sogenannte main-Funktion, welche einen Integerwert als Status zurückgibt. Es empfiehlt sich die Rückgabe von 0 im Sinne des Status "erfolgreich". Zudem muss in dieser main-Funktion die Funktion add aufgerufen werden, etwa so:
C++
cout << add(3,5) << endl;

Eine reine Funktionsdefinition wie
C++
int add(int a, int b)
{
    return a+b;
}
gibt erstmal nur die Funktion add bekannt, ohne sie aber mit konkreten Übergabewerten auszuführen.

LG Primentus



Wahlurne Für Primentus bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2020-11-11


Hast du Codeblocks inklusive C/C++-Compiler korrekt installiert und das "Hello World"-Tutorial aus dem wiki durchgearbeitet?

Falls nein, würde ich das unbedingt empfehlen.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2020-11-11


Hallo Leute,

1. In der Lösung steht ein Semikolon nach der geschlossenen geschweiften Klammer. Das finde ich auch sehr merkwürdig. Ist das ein Fehler in der Lösung?

Die Lösung:



2. Wieso steht bei dir "add(3,5)"? Woher kommt diese "3,5" in den Klammern?

Vielleicht gehört Aufgabe a) dazu. Soll ich erstmal das Programm in a) in Codeblocks implementieren?

Ich poste mal hier die ganze Aufgabe:


 



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2020-11-11


2020-11-11 10:07 - DerEinfaeltige in Beitrag No. 2 schreibt:
Hast du Codeblocks inklusive C/C++-Compiler korrekt installiert und das "Hello World"-Tutorial aus dem wiki durchgearbeitet?

Falls nein, würde ich das unbedingt empfehlen.

Ich weiß es nicht. Wie finde ich heraus, ob ich Codeblocks inklusive C/C++ Compiler korrekt installiert habe? Das "Hello World"-Programm habe ich schon implementiert.



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2020-11-11


2020-11-10 18:51 - Primentus in Beitrag No. 1 schreibt:
Hallo Kajam,

falls Du das fehlerlose Kompilieren und die Ausführung Deiner Funktion sehen willst, musst Du folgendes tun:

1. Nach einer geschlossenen geschweiften Klammer, die eine Funktionsdefinition abschließt, kommt niemals ein Semikolon.

2. Du musst zusätzlich noch ein Hauptprogramm hinzufügen, die sogenannte main-Funktion, welche einen Integerwert als Status zurückgibt. Es empfiehlt sich die Rückgabe von 0 im Sinne des Status "erfolgreich". Zudem muss in dieser main-Funktion die Funktion add aufgerufen werden, etwa so:
C++
cout << add(3,5) << endl;

Eine reine Funktionsdefinition wie
C++
int add(int a, int b)
{
    return a+b;
}
gibt erstmal nur die Funktion add bekannt, ohne sie aber mit konkreten Übergabewerten auszuführen.

LG Primentus

Habe ich das so gemacht, wie du es meinst? Wo ist nun der Fehler?



Diese Aufgabe fällt mir gerade irgendwie schwer



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Diophant
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.01.2019
Mitteilungen: 5738
Herkunft: Rosenfeld, BW
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2020-11-11


Hallo,

du definierst hier innerhalb der Funktion main eine weitere Funktion, das kann nichts werden, egal mit welchem Compiler und mit welchen Einstellungen.

Die Funktion add muss außerhalb von main stehen.

(Du solltest dich mit der C++-Syntax vertrauter machen.)


Gruß, Diophant



Wahlurne Für Diophant bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2020-11-11


2020-11-11 15:40 - Kajam in Beitrag No. 3 schreibt:

1. In der Lösung steht ein Semikolon nach der geschlossenen geschweiften Klammer. Das finde ich auch sehr merkwürdig. Ist das ein Fehler in der Lösung?


Ob ein Fehler vorliegt, sollte sich doch leicht überprüfen lassen.
Was kommt dir denn merkwürdig vor?
Semikolons dürfen in C/C++ doch fast überall stehen, wo gerade Platz ist.
Beispielsweise zwischen Blöcken und Statements.

2020-11-11 15:40 - Kajam in Beitrag No. 3 schreibt:

2. Wieso steht bei dir "add(3,5)"? Woher kommt diese "3,5" in den Klammern?


Die Funktion add hat zwei Parameter.
Denen werden die Werte 3 und 5 übergeben.




[Die Antwort wurde nach Beitrag No.4 begonnen.]


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Primentus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.02.2016
Mitteilungen: 1222
Herkunft: Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2020-11-11


Hallo Kajam,

die Funktionen add und main müssen hintereinander stehen, nicht ineinandergeschachtelt, wie schon gesagt wurde.

Und beim Aufruf der Funktion add in der Funktion main darfst Du nicht wieder a und b übergeben, denn da würde nichts sinnvolles passieren. Stattdessen übergibst Du eben einfach zwei (beliebige) ganzzahlige Werte, die addiert werden sollen.
Oder Du machst alternativ noch zwei Variablendefinitionen in der Funktion main
C++
int a = 3;
int b = 5;
Dann kannst Du die Funktion add auch in der Form
C++
add(a, b)
aufrufen.

LG Primentus



Wahlurne Für Primentus bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2020-11-12


Ich kriege immer noch keine "32"(a+b) ausgegeben. Woran liegt das nun?






Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, vom Themenstarter, eingetragen 2020-11-12


2020-11-11 16:04 - Diophant in Beitrag No. 6 schreibt:
Hallo,

du definierst hier innerhalb der Funktion main eine weitere Funktion, das kann nichts werden, egal mit welchem Compiler und mit welchen Einstellungen.

Die Funktion add muss außerhalb von main stehen.

(Du solltest dich mit der C++-Syntax vertrauter machen.)
Bin dabei :)

Gruß, Diophant




Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2020-11-12


Wie und wo soll er denn 32 ausgeben?

Dein Code ergibt größtenteils auch wenig Sinn.
In der add-Funktion steht eine Anweisung hinter return.
Und die max-Funktion ist inhaltlich falsch implementiert.

Versuche außerdem wenn möglich, Quelltext in der Quelltextumgebung zu posten.

Hier wäre ein kurzes Beispiel, wie man add und max für int implementieren könnte. Dafür braucht man auch kein Profiwerkzeug wie Codeblocks. Ein einfacher Onlineeditor und Compiler reicht völlig aus.
C++
#include <iostream>
 
using namespace std;
 
int add(int,int);
int max(int,int);
 
int max(int a, int b){
    return (a>=b)?a:b;
}
 
int add(int a, int b){
    return a+b;
}
 
int main()
{
    int x = 10;
    int y = 22;
 
    cout << "max(x,y) = " << max(x,y) << endl;
    cout << "add(x,y) = " << add(x,y) << endl;
    return 0;
}
 



-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, vom Themenstarter, eingetragen 2020-11-13


2020-11-12 17:04 - DerEinfaeltige in Beitrag No. 11 schreibt:
Wie und wo soll er denn 32 ausgeben?

Dein Code ergibt größtenteils auch wenig Sinn.
In der add-Funktion steht eine Anweisung hinter return.
Und die max-Funktion ist inhaltlich falsch implementiert.

Versuche außerdem wenn möglich, Quelltext in der Quelltextumgebung zu posten.

Hier wäre ein kurzes Beispiel, wie man add und max für int implementieren könnte. Dafür braucht man auch kein Profiwerkzeug wie Codeblocks. Ein einfacher Onlineeditor und Compiler reicht völlig aus.
C++
#include <iostream>
 
using namespace std;
 
int add(int,int);
int max(int,int);
 
int max(int a, int b){
    return (a>=b)?a:b;
}
 
int add(int a, int b){
    return a+b;
}
 
int main()
{
    int x = 10;
    int y = 22;
 
    cout << "max(x,y) = " << max(x,y) << endl;
    cout << "add(x,y) = " << add(x,y) << endl;
    return 0;
}
 


Hinter return darf nie eine Anweisung stehen? Return steht also immer an letzter Stelle ganz unten, und davor können die Anweisungen stehen?

Die max-Funktion habe ich aus der Aufgabe a) übernommen. Wieso ist das falsch :(



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Diophant
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.01.2019
Mitteilungen: 5738
Herkunft: Rosenfeld, BW
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2020-11-13

\(\begingroup\)\(\newcommand{\ba}{\begin{aligned}} \newcommand{\ea}{\end{aligned}} \newcommand{\bpm}{\begin{pmatrix}} \newcommand{\epm}{\end{pmatrix}} \newcommand{\bc}{\begin{cases}} \newcommand{\ec}{\end{cases}} \newcommand{\on}{\operatorname} \newcommand{\ds}{\displaystyle}\)
Hallo Kajam,

die return-Anweisung beendet eine Funktion mit dem Rückgabewert, den man ihr als Parameter mitgibt. Anweisungen, die auf der gleichen Ebene dahinterstehen, sind mithin sinnlos, da sie niemals ausgeführt werden.

Deine max-Funktion prüft weder auf Gleichheit, noch berücksichtigt sie den Fall \(n<m\). In beiden Fällen

- gibt sie nichts aus
- liefert sie den Wert 0 zurück.


Gruß, Diophant


[Verschoben aus Forum 'Informatik' in Forum 'Programmieren' von Diophant]
\(\endgroup\)


Wahlurne Für Diophant bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, eingetragen 2020-11-13


"return" bewirkt, dass die Funktion beendet und der Funktionswert (sofern es einen gibt) zurückgegeben wird.

Danach dürfen Anweisungen stehen, sie können jedoch nicht ausgeführt werden.
Dein Compiler sollte daher auch eine Warnung ausspucken, dass der dahinterstehende Code nicht erreicht/ausgeführt werden kann.


Was an deiner max-Funktion falsch ist, sollte ein einfacher "Bleistifttest" sofort zeigen:


max(2,1) gibt "2" an die Konsole aus und den Wert 2 zurück.
Was passiert bei max(1,2)?

Spiele es Schritt für Schritt bzw. Zeile für Zeile mit Papier und Bleistift durch.





PS.: Hast du tatsächlich das "Hello World"-Beispiel durchgearbeitet bis du eine schöne Meldung vom Compiler und eine Ausgabe an die Konsole erhalten hast?

[Die Antwort wurde nach Beitrag No.12 begonnen.]


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, vom Themenstarter, eingetragen 2020-11-13

\(\begingroup\)\(\newcommand{\ba}{\begin{aligned}} \newcommand{\ea}{\end{aligned}} \newcommand{\bpm}{\begin{pmatrix}} \newcommand{\epm}{\end{pmatrix}} \newcommand{\bc}{\begin{cases}} \newcommand{\ec}{\end{cases}} \newcommand{\on}{\operatorname} \newcommand{\ds}{\displaystyle} \newcommand{\ba}{\begin{aligned}} \newcommand{\ea}{\end{aligned}} \newcommand{\bpm}{\begin{pmatrix}} \newcommand{\epm}{\end{pmatrix}} \newcommand{\bc}{\begin{cases}} \newcommand{\ec}{\end{cases}} \newcommand{\on}{\operatorname} \newcommand{\ds}{\displaystyle}\)
2020-11-13 11:10 - Diophant in Beitrag No. 13 schreibt:
Hallo Kajam,

die return-Anweisung beendet eine Funktion mit dem Rückgabewert, den man ihr als Parameter mitgibt. Anweisungen, die auf der gleichen Ebene dahinterstehen, sind mithin sinnlos, da sie niemals ausgeführt werden.

Deine max-Funktion prüft weder auf Gleichheit, noch berücksichtigt sie den Fall \(n<m\). In beiden Fällen

- gibt sie nichts aus
- liefert sie den Wert 0 zurück.


Gruß, Diophant


[Verschoben aus Forum 'Informatik' in Forum 'Programmieren' von Diophant]

Das stimmt. Diese Fälle interessieren mich auch nicht, denn in Aufgabe a) steht nur "n>m". Wenn ich das Programm ausführe, wird mir "n=20" im Terminal ausgegeben. Hier wird der Wert von "a=20" an "n" übergeben, sodass a=n=20 gilt.
\(\endgroup\)


Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, vom Themenstarter, eingetragen 2020-11-13


2020-11-13 11:20 - DerEinfaeltige in Beitrag No. 14 schreibt:
"return" bewirkt, dass die Funktion beendet und der Funktionswert (sofern es einen gibt) zurückgegeben wird.

Danach dürfen Anweisungen stehen, sie können jedoch nicht ausgeführt werden.
Dein Compiler sollte daher auch eine Warnung ausspucken, dass der dahinterstehende Code nicht erreicht/ausgeführt werden kann.


Was an deiner max-Funktion falsch ist, sollte ein einfacher "Bleistifttest" sofort zeigen:


max(2,1) gibt "2" an die Konsole aus und den Wert 2 zurück.
Was passiert bei max(1,2)?

Spiele es Schritt für Schritt bzw. Zeile für Zeile mit Papier und Bleistift durch.





PS.: Hast du tatsächlich das "Hello World"-Beispiel durchgearbeitet bis du eine schöne Meldung vom Compiler und eine Ausgabe an die Konsole erhalten hast?

[Die Antwort wurde nach Beitrag No.12 begonnen.]

Bei max(1,2) wird auch 2 an die Konsole ausgegeben.
Bei meiner max-Funtion wird "20" ausgegeben. Ich sehe nicht, was daran falsch ist 🥵



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, vom Themenstarter, eingetragen 2020-11-13


Ich denke, dass Aufgabe a) und b) doch nicht zusammen gehören. Ich habe die max-Funktion raus genommen. Hier habe ich einen neuen Programm ansatz:



Es wird tatsächlich eine 32 ausgegeben:



Und ich habe hier nirgendwo return a+b; stehen. Braucht man das jetzt überhaupt? Ist es notwendig?



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.18, vom Themenstarter, eingetragen 2020-11-13


Hier habe ich das mit return a+b;. Das gehört wohl zu Funktion und ist Pflicht?




Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.19, eingetragen 2020-11-13


Der letzte Post ist so wie gemeint.

Natürlich gibt auch der vorherige das richtige Ergebnis aus.
Allerdings sind dort die Funktion "add" und die Variable "c" ohne jede Funktion.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.20, vom Themenstarter, eingetragen 2020-11-13


2020-11-13 12:09 - DerEinfaeltige in Beitrag No. 19 schreibt:
Der letzte Post ist so wie gemeint.

Natürlich gibt auch der vorherige das richtige Ergebnis aus.
Allerdings sind dort die Funktion "add" und die Variable "c" ohne jede Funktion.

Das nehme ich so zu Kenntnis, danke!



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.21, vom Themenstarter, eingetragen 2020-11-13


Kannst du mir vielleicht nochmal den Programmcode in c) erklären?
Wie gebe ich hier den maximalen Wert der Feldelemente aus?










Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.22, eingetragen 2020-11-13


Du hast vergessen, in der main-Funktion der Funktion max Argumente zu übergeben.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.23, vom Themenstarter, eingetragen 2020-11-13


2020-11-13 17:53 - StrgAltEntf in Beitrag No. 22 schreibt:
Du hast vergessen, in der main-Funktion der Funktion max Argumente zu übergeben.

Wie mach ich das? Das steht doch schon alles drüber in der max-Funktion 😐



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.24, eingetragen 2020-11-13


... außerdem finde ich es sehr hässlich, innerhalb der Definition der Funktion max eine Variable mit dem Namen max zu definieren. (Aber erlaubt ist das schon.)

[Die Antwort wurde nach Beitrag No.22 begonnen.]



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.25, eingetragen 2020-11-13


2020-11-13 18:02 - Kajam in Beitrag No. 23 schreibt:
Wie mach ich das? Das steht doch schon alles drüber in der max-Funktion 😐

Woher soll denn die max-Funktion wissen, welches Array sie verwenden soll und wie lang das Array ist?



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.26, vom Themenstarter, eingetragen 2020-11-13


2020-11-13 10:57 - Kajam in Beitrag No. 12 schreibt:
2020-11-12 17:04 - DerEinfaeltige in Beitrag No. 11 schreibt:
Wie und wo soll er denn 32 ausgeben?

Dein Code ergibt größtenteils auch wenig Sinn.
In der add-Funktion steht eine Anweisung hinter return.
Und die max-Funktion ist inhaltlich falsch implementiert.

Versuche außerdem wenn möglich, Quelltext in der Quelltextumgebung zu posten.

Hier wäre ein kurzes Beispiel, wie man add und max für int implementieren könnte. Dafür braucht man auch kein Profiwerkzeug wie Codeblocks. Ein einfacher Onlineeditor und Compiler reicht völlig aus.
C++
#include <iostream>
 
using namespace std;
 
int add(int,int);
int max(int,int);
 
int max(int a, int b){
    return (a>=b)?a:b;
}
 
int add(int a, int b){
    return a+b;
}
 
int main()
{
    int x = 10;
    int y = 22;
 
    cout << "max(x,y) = " << max(x,y) << endl;
    cout << "add(x,y) = " << add(x,y) << endl;
    return 0;
}
 


Hinter return darf nie eine Anweisung stehen? Return steht also immer an letzter Stelle ganz unten, und davor können die Anweisungen stehen?

Die max-Funktion habe ich aus der Aufgabe a) übernommen. Wieso ist das falsch :(

Ich soll etwas in die main-Funktion einfügen, richtig? Ich sehe aber nicht was ich einfügen könnte. Ich habe mich an dem obigen Beispiel/Bild orientiert. Ich habe doch ein Feld mit 5 Werten initialisiert



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2606
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.27, eingetragen 2020-11-13


Du musst das Feld und seine Größe der Funktion übergeben.

Also etwas der Form:
C++
int feld[5] = {2, 7, 1, 8, 2};
cout << max(feld,5) << endl;
 



-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Wahlurne Für DerEinfaeltige bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.02.2020
Mitteilungen: 316
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.28, vom Themenstarter, eingetragen 2020-11-13


2020-11-13 18:41 - DerEinfaeltige in Beitrag No. 27 schreibt:
Du musst das Feld und seine Größe der Funktion übergeben.

Also etwas der Form:
C++
int feld[5] = {2, 7, 1, 8, 2};
cout << max(feld,5) << endl;
 


Jetzt klappt es.
Kannst du mir aber noch Folgendes erklären:

 if (size==-1) return -7; // Kuckuck

Wie kann hier die Größe "-1" sein? Ich kann doch höchstens keine, also 0 Felder haben. Wie kann ich ins Minus gehen? Wie soll ich das verstehen? Was ist mit //Kuckuck gemeint?

if (feld == NULL)
throw std::runtime_error("nullptr not expected");

Das NULL kann ich auch mit dem "0" gleichsetzen? Und was heißt dann throw std::runtime_error("nullptr not expected") ? Wenn es also Null Felder sind, passiert was?

Und ist "*feld" das gleiche wie "feld[]" ?



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kajam hat die Antworten auf ihre/seine Frage gesehen.
Kajam hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]