Arrays und Funktionen
-
Auf die Arrays schreibend zugreifen kann man, wenn man sie als Referenz den Funktionen übergibt.
-
@Matze66 Nein, nein, nein, tu uns das nicht an, nein, nein ,nein, nein, nein.
-
@zeropage Es ist ja noch nicht einmal klar, ob std::array oder C-Arrays gemeint sind. (ich gehe von letzterem aus)
-
@DirkB Achso.
-
@zeropage sagte in Arrays und Funktionen:
Mit den Arrays kann man weiterarbeiten, wenn man sie als Referenz den Funktionen übergibt.
Das ist auch nicht im Sinne des Erfinders, weil du dann die Größe in der Funktion festlegen musst. Das sieht so aus:
void foo(double (&arr)[5])
Mach das nicht! Das müsstest du dann templaten, damit es für andere Zahlen passt. Nochmals: mach das nicht!Im C-Stil würdest du das Array, das zum Pointer wird, und die Länge des Arrays der Funktion übergeben.
Also so:void foo(double *arr, size_t length)
In C++ würdest du das anders lösen, angefangen dabei, gar nicht erst ein C-Array zu verwenden.
-
Dieser Beitrag wurde gelöscht!
-
@mene137 sagte in Arrays und Funktionen:
Ich wollte den Quellcode nur nicht hier reinstellen weil er relativ lang ist und ich dachte dass so niemand was damit anfangen kann
Ja! Richtig gedacht. Deswegen: kürze deinen Quelltext auf das Wesentliche! Brauchst du wirklich alle Arrays, um das Problem zu zeigen? Ein Array würde doch reichen! Und das Programm ist unvollständig (es fehlt das "main", die #includes usw). Außerdem sieht man in dem Ausschnitt auch keine Funktion/keinen Funktionsaufruf oder Versuch eines Funktionsaufrufs. Wo in diesem Snippet ist dein Problem?
PS: Das ganze sieht so aus, als bräuchtest du eine Klasse mit 2 Variablen x und y, deren Objekte man addieren&subtrahieren kann und mit Zahlen elementweise multiplizieren kann. Also ein typischer 2d-Vector (im mathematischen Sinne) - wie @SeppJ schon geschrieben hatte. Dein Einwand, dass du auch mal die Koordinaten einzeln brauchst, ändert daran nichts.
-
@mene137 sagte in Arrays und Funktionen:
double ySBaltt[3];
Wie viel Elemente enthält das Array ySBalt und welche Indizes haben diese?
for (int i = 0; i < 4; i++)
Welche Werte nimmt i in der Schleife an?
-
@DirkB sagte in Arrays und Funktionen:
Welche Werte nimmt i in der Schleife an?
Oh ja! Aber man braucht gar nicht so weit zu gehen, auch vorher schon in Zeile 20 steht:
ySneu = (1. / 4.) * (yneu[0] + yneu[1] + yneu[2] + yneu[3]);
Warum gibt es 5 alte und 3 neue Werte? Was bedeuten die [0]...[3]-Werte bei dir semantisch?
Vielleicht noch ein genereller Rat: du hast 3, 4, 5 als Konstanten in deinem Programm. Wann ist es 3, wann 4, wann 5? Was bedeuten diese Zahlen? Gib diesen Zahlen Namen! Nutze Konstanten! (siehe https://de.wikipedia.org/wiki/Magische_Zahl_(Informatik)#Magische_Zahlen_in_Code)
-
@mene137 sagte in Arrays und Funktionen:
ySalt = (1. / 4.) * (yalt[0] + yalt[1] + yalt[2] + yalt[3]);
Das wäre schon mal eine Anwendung für die Mittelwert-Funktion.
-
@DirkB sagte in Arrays und Funktionen:
@mene137 sagte in Arrays und Funktionen:
ySalt = (1. / 4.) * (yalt[0] + yalt[1] + yalt[2] + yalt[3]);
Das wäre schon mal eine Anwendung für die Mittelwert-Funktion.
Genau - und da es sowohl für x als auch y gemacht wird, wäre das auch super mit einer 2d-Vector-Klasse lösbar.
-
Dieser Beitrag wurde gelöscht!
-
Dieser Beitrag wurde gelöscht!
-
Ich bekomme es nicht hin ist keine Problembeschreibung.
-
@mene137 sagte in Arrays und Funktionen:
Was macht es für einen Unterschied ob ich eine Klasse einführe oder nur die Arrays die ich schon hab in Funktionen verpacke?
Im Idealfall verstehst Du Deinen Code noch in 3 Monaten. Im Moment brauchst Du nur einen kleinen Zahlen- oder Buchstabendreher und wirst dann lange nach dem Fehler suchen.
-
@mene137 Wir haben immer noch keinen Code mit einer Funktion von dir gesehen.
Also kann auch keiner genau sagen, was du falsch machst.
-
Dieser Beitrag wurde gelöscht!
-
@mene137 Das hat nichts mit Arrays zu tun. Du kannst Funktionen nicht innerhalb einer anderen Funktion definieren.
Und wenn eine Funktion behauptet, int zurückzugeben, muss sie das auch tun.
-
Dieser Beitrag wurde gelöscht!
-
@mene137 sagte in Arrays und Funktionen:
Ich wollte für die Funktion einen neuen Header sowie eine neue cpp anlegen. Ist es das was du meinst?
Nein.
Du darfst den Code einer Funktion nicht innerhalb einer anderen Funktion schreiben.
main ist auch eine Funktion.Und wie macht man das mit dem Rückgabewert?
Das ist nun die grundlegende Eigenschaft einer Funktion und steht in jedem noch so schlechtem Tutorial.