Arrays und Funktionen
-
@mene137 sagte in Arrays und Funktionen:
bekomme ich für die Arrays einfach nicht den Funktionsaufruf hin
Tja; weil ein an eine Funktion als Argument übergebenes Array in der Funktion dann kein Array mehr ist.
Ist von den Machern von C so gewollt.
Wenn du keinen Code posten willst, wird dir auch keiner helfen können;
wir sind hier in einem Programmiererforum und nicht bei social media.
-
@mene137 sagte in Arrays und Funktionen:
Kann mir jemand weiterhelfen?
Ja. Hast du noch weitere Fragen?
-
@mene137 wobei hast du Probleme? Daten (Arrays) in die Funktionen rein zu bekommen oder raus?
Wenn du deinen Original-Code nicht zeigen willst, zeig einen mit demselben Fehler.
Wie wäre es mit einer Funktion, die den Mittelwert berechnet.
-
Einzige was mir einfällt, aber auch nicht wirklich sauber ist, das wäre wenn Du Dein Array global definierst, dann kannst Du von überall darauf zugreifen. Wie schon gesagt das ist nicht die Sauberste Art das Problem zu lösen
-
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.