Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C++: Programm Ausgabe analysieren
Druckversion
Druckversion
Autor
Universität/Hochschule J C++: Programm Ausgabe analysieren
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-19


Hallo,

kann mir jemand erklären, wieso mir hier "5" ausgegeben wird? Das verstehe ich nicht... :(

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
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 3202
Herkunft: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-11-19


Es wird 5 ausgegeben, weil DU explizit 5 ausgibst:
C++
cout << (feld, 5)

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.



-----------------
⊗ ⊗ ⊗



Wahlurne Für ligning 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.2, vom Themenstarter, eingetragen 2020-11-20


Aso, es wird hier also immer die Anzahl der Felder zurückgegeben, stimmt.



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.3, eingetragen 2020-11-20


2020-11-20 12:26 - Kajam in Beitrag No. 2 schreibt:
Aso, es wird hier also immer die Anzahl der Felder zurückgegeben, stimmt.
Es wird immer 5 zurück gegeben. Unabhängig davon, wie viele Felder es sind.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27690
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2020-11-20


Nochmal in aller Deutlichkeit:
C++
// statt
cout << (feld, 5) << endl;
// hättest du auch schreiben können
cout << 5 << endl;
// denn (feld, 5) ist quasi eine Liste,
// von der nur das letzte Element verwendet wird
 
// was du wohl eigentlich meintest war
cout << 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 werden
for (...) ... // das überlasse ich dir

Gruß vom ¼


-----------------
Bild



Wahlurne Für viertel 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-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 ... 🤯




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.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 Elemente
void 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 Abschnitts
void 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 Abschnitts
void printArray(int arr[], int n){
    std::cout << "["; // Öffnende Klammer ausgeben
    for (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 ausgeben
    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.7, vom Themenstarter, eingetragen 2020-11-21


Das hat mich zum Nachdenken gebracht und ich habe einiges korrigiert. Jetzt funktioniert das:





Danke



Wahlurne Für Kajam bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27690
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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).



Wahlurne Für viertel 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]