Der Komma-Operator hat folgende Bedeutung: Werte den ersten Teilausdruck (hier: feld) aus, verwerfe den Wert, werte den zweiten Teilausdruck (hier: 5) aus, das ist das Ergebnis des Komma-Ausdrucks.
Der ganze Rest des Programms ist dafür irrelevant. Vielleicht hast du vergessen, die Funktion aufzurufen.
viertel
Senior Dabei seit: 04.03.2003 Mitteilungen: 27689
Herkunft: Hessen
Beitrag No.4, eingetragen 2020-11-20
Nochmal in aller Deutlichkeit:
C++
// stattcout<<(feld, 5)<< endl;// hättest du auch schreiben könnencout<<5<< endl;// denn (feld, 5) ist quasi eine Liste,// von der nur das letzte Element verwendet wird// was du wohl eigentlich meintest warcout<< inv(feld, 5)<< endl;// was aber definitiv dem Compiler nicht gefällt// denn der Aufruf von inv muß separat erfolgen
inv(feld, 5);// und dann müssen in einer Schleife die Elemente von Feld ausgegeben werdenfor(...) ... // das überlasse ich dir
Kajam
Aktiv Dabei seit: 18.02.2020 Mitteilungen: 316
Beitrag No.5, vom Themenstarter, eingetragen 2020-11-21
Wieso funktioniert das jetzt nicht? Ich habe ein komisches Gefühl bei der ganzen Sache. Ich habe jetzt den Teil des Programms von oben in die main-Funktion kopiert. Das ist doch alles doppel-gemoppel. Ich will doch nur, dass das Programm läuft. Ich verstehe das nicht ... 🤯
DerEinfaeltige
Senior Dabei seit: 11.02.2015 Mitteilungen: 2596
Beitrag No.6, eingetragen 2020-11-21
1. Überlege dir die Struktur deines Programms, schreibe es als Pseudocode und spiele es von Hand (Bleistifttest) durch
2. Implementiere die benutzten Funktionen/Prozeduren/etc. und kommentiere den Code!
3. Teste dein Programm
4. Korrigiere Compilerfehler
5. Teste dein Programm
6. Suche, finde und korrigiere Bugs (auch hier hilft wieder der Bleistifttest)
7. Steigt die Komplexität des Programmes, zerlegt man es in Unterprogramme bzw. nutzt Hilfsfunktionen/-prozeduren
Im Folgenden eine etwas strukturiertere Musterlösung:
C++
#include <iostream>// Vertausche die Elemente an Position i und j// arr: Array mit Länge > max(i,j)// i,j: Indizes der zu vertauschenden Elementevoid swap(int arr[], int i, int j){int t = arr[i];
arr[i]= arr[j];
arr[j]= t;}// Invertiere das Array// arr: Array mit Länge >= n// n: Länge des zu invertierenden Abschnittsvoid invertArray(int arr[], int n){for(int i =0; i < n/2;++i){// Vertausche das Element der unteren Hälfte // mit seinem Partner
swap(arr,i,n-i-1);}}// Gibt das Array in der Form [a1, a2, a3, ...] // an die Standardausgabe aus// arr: Array mit Länge >= n// n: Länge des auszugebenden Abschnittsvoid printArray(int arr[], int n){
std::cout<<"[";// Öffnende Klammer ausgebenfor(int i =0; i < n-1;++i){// Gib Elemente mit Nachfolger aus
std::cout<< arr[i]<<", ";}// Gib das letzte Element aus, schließe die // Klammer und beende die Zeile
std::cout<< arr[n-1]<<"]\n";}int main(){int myArray[7]={2, 7, 1, 8, 2, 8, 1};// Array definieren
printArray(myArray,7);// ursprüngliches Array ausgeben
invertArray(myArray,7);// Array invertieren
printArray(myArray,7);// invertiertes Array ausgebenreturn0;}
----------------- Why waste time learning when ignorance is instantaneous?
- Bill Watterson -
viertel
Senior Dabei seit: 04.03.2003 Mitteilungen: 27689
Herkunft: Hessen
Beitrag No.8, eingetragen 2020-11-21
Noch eine Anmerkung
Stell deinen Code hier nicht immer als Bild rein. Den kann man nicht kopieren, sondern muß abtippen.
Nutze stattdessen den [Quelltextbereich] (findest du unter dem Eingabefenster).