C++ Array


  • Mod

    Icemann schrieb:

    Habe ich hiermit das einlesen erreicht?

    Ja. Willst du jetzt bei jeder Zeile nachfragen? Probier dein Programm doch einfach aus.

    Danach soll jedes Element des Arrays überprüft werden, ob es größer als das nächste Element ist.
    Trifft dies zu werden diese beiden Elemente vertauscht.

    Und kann mir jemand tipps geben wie ich das machen kann?

    Du machst eine Schleife über alle Elemente (bis auf das letzte) und prüfst ob die Bedingung wahr ist. Falls ja, führst du den Tausch durch. Außerdem sollst du mitzählen.

    Vermutlich soll der nächste Schritt darin bestehen, die Schleife so oft durchzuführen, bis keine Vertauschungen mehr stattfinden. Dies erreichst du, indem du eine weitere schleife um die Sortierschleife machst, die diese Bedingung prüft.



  • du nutzt eine for schleife, in dieser fragst per if ein array element ab und vergleichst es mit seinem rechten nachbarn



  • Könnte die if bedingung so aussehen:

    if ( i< i++; ) {
    hier weiss ich nicht was ich genau machen soll.

    }



  • dann versuch das doch mal auf dem papier zu lösen, so mit einigen beispiel zahlen.
    ich denke du wirst schnell merken wie der hase läuft.

    und sobald du das merkst, versuchst du jeden einzelnen schritt so genau wie möglich aufzuschrieben (ruhig in einer menschlichen sprache wie deutsch oder englisch).

    und wenn du uns das hier postest, dann gucken wir mal alle zusammen nach deinem c++ programm. ist das ein angebot?


  • Mod

    Icemann schrieb:

    Könnte die if bedingung so aussehen:

    if ( i< i++; ) {
    hier weiss ich nicht was ich genau machen soll.

    }

    Nein, das ist sogar ein undefinierter Ausdruck. Du bist hier gleich in mehrfacher Weise auf dem Holzweg:
    1. Du greifst nicht auf deine Daten zu
    2. Die Zahl die um 1 größer als i ist, ist i + 1. Der Ausdruck i++ hat zwar auch einen Wert (nämlich i), aber in erster Linie wird dadurch i selbst verändert, was du sicherlich nicht willst.

    Ansonsten stimme ich Skym0sh0 voll zu: Ordne erst einmal deine Gedanken. Es ist zwar an sich eine sehr gute Idee, ein Problem in Teilprobleme zu zerlegen, aber du übertreibst es. So schwer ist die Aufgabe nun auch wieder nicht.



  • SeppJ schrieb:

    Es ist zwar an sich eine sehr gute Idee, ein Problem in Teilprobleme zu zerlegen, aber du übertreibst es. So schwer ist die Aufgabe nun auch wieder nicht.

    was heisst schwer? es ist für etwas geübtere sehr einfach. aber klar als anfänger steht man da auch erstmal wie der Ochs vorm Berge. Also nicht verzagen (ist auch nicht böse gemeint) und einfach überlegen, nachdenken und versuchen



  • Also leute ich weiss net wie es euch geht , aber für mich ist das schwer .

    Ich hab jetzt die Vermutung, dass ich das irgendwie so machen kann:

    for( int i= 0; i<n; i++) {

    return n;

    }

    Ich weiss nicht so genau was ich in die Bedingung schreiben muss um das vertauscht darzustellen.

    Der Vertauschte wert muss ja um 1 größer sein . Ich hab gedacht ich gebe return n ein , dann wird er die höhere Zahl darstellen.

    Ich hoffe die Idee ist nicht zu blöd.


  • Mod

    Icemann schrieb:

    Der Vertauschte wert muss ja um 1 größer sein . Ich hab gedacht ich gebe return n ein , dann wird er die höhere Zahl darstellen.

    Erklär doch mal, was return macht.



  • Return gibt doch etwas zurück . Müsste es dann nicht stimmen?


  • Mod

    Icemann schrieb:

    Return gibt doch etwas zurück . Müsste es dann nicht stimmen?

    Was willst du zurück geben und warum?

    Mir geht aber gerade die Geduld aus. Pass gefälligst im Unterricht auf, arbeite deine Vorlesungsmitschrift auf, lies zur Not Sekundärliteratur. Dies sind absolute Grundlagen, du weißt nicht einmal, was die einfachsten Schlüsselwörter bedeuten und scheinst nur zu raten, wie es wohl gehen könnte. Raten ist nicht Programmieren. Programmieren ist das genaue Gegenteil davon.



  • Ich will ja die Zahlen 1 bis 20 jeweils vertauscht zurück geben .
    Kannst du mir sagen was ich machen kann damit ich die. Zahlen vertauschen kann ?



  • ausgeben ist nicht zurückgeben.

    überleg dir mal, wie man 2 Variablen vertauschen könnte. Tipp: du brauchst eine dritte Variable.

    //edit nein. nicht überlegen, ausprobieren!


  • Mod

    Du hast eine rote Tasse voller Zucker und eine blaue Tasse voller Salz. Kreative Aufgabe: Wie bekommst du allen Zucker in die blaue Tasse und alles Salz in die rote Tasse?



  • Mein Programm sieht im moment so aus:

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {
    int n;
    int zahl[20];
    cout<<" Anzahl der einzulesenden Elemente maximal 20 ";
    cin>>n;
    cout<<" Elemente eingeben ";

    for (int i=0;i<n;i++)
    cin>>zahl[i];

    if( int i= 0; i<n; i++) {

    i= n;

    }

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Ist es überhaupt richtig soweit?



  • weiß nicht. was wolltest du mit dem Code erreichen? (unabhängig davon, ass man dir bereits auf der letzten Seite gesagt hast, dass das if keinen Sinn hat).

    Es bringt dich nicht weiter, nach jder Zeile zu fragen, ob das so richtig ist. Es bringt dich nicht weiter.



  • Ich wollte ja zuerst einmal ein Array einlesen.

    Naja so kommen wir wohl nie weiter , aber eine frage hätte ich noch.

    Könnt ihr mir sagen was ich machen muss , damit mir überhaupt ein Array angezeigt wird?



  • Es auf die selbe Art ausgeben, wie du es eingelesen hast?



  • Könnt ihr mir das nicht ein wenig genauer sagen ich bin ja noch ein Anfänger .

    Wenigstens ein wenig verständnis.



  • Morgen leute kann mir jemand für euch bitte vielleicht einen kleinen Ansatz geben , damit ich weiss wie ich weiter vorgehen soll.

    Weil ich stecke leider im moment ein wenig fest.

    Gruß

    Icemann



  • Warum verwendest du ein array und keinen std::vector?

    Zum Ausgeben des Arrays musst du über das array iterieren und jedes einzelne Element ausgeben.


Anmelden zum Antworten