Array2



  • Hallo leute ich habe folgende Aufgabe
    Es ist ein Programm zu erstellen, welches zunächst ein Array von maximal 20 Zahlen einliest
    (Tastatur oder Datei) und nach der Eingabe zur Kontrolle am Bildschirm in einer Zeile formatiert
    ausgibt.
    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.
    Dies soll der Reihe nach vom ersten bis zum vorletzten Element durchgeführt werden.
    Weiterhin soll die Anzahl der Vertauschungen gezählt werden.
    Nach jedem Tausch sollen alle Elemente des Arrays am Bildschirm angezeigt werden inkl. der
    Anzahl der bisher durchgeführten Vertauschungen
    Beispiel:
    Eingelesen: 3 4 2 1 5 3
    1. Tausch : 3 2 4 1 5 3
    2. Tausch : 3 2 1 4 5 3
    3. Tausch : 3 2 1 4 3 5

    Gelöst habe ich sie so:

    #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;

    }

    for (int i=0;i<n;i++){
    cout<<zahl<<" ";
    }
    cout << endl;

    int tausch=0; // gibt die Anzahl der Tausche an.

    for (int j=0; j < n-1; j++)
    {
    if (zahl[j] > zahl[j+1])
    {
    int hilf=zahl[j];

    zahl[j]=zahl[j+1];
    zahl[j+1]=hilf;
    tausch++;

    cout << tausch << ". Tausch: ";

    for (int i=0;i<n;i++){
    cout<<zahl<<" ";
    }
    cout << endl;
    }

    Aber es scheint immer noch nicht die ZAhlen vertauscht bei visual studio darzustellen .

    Kann mir bitte jemand helfen .



  • Es scheint noch nicht mal zu kompilieren. Und ich habe auch Visual Studio.

    Mach aus jedem "zahl" ein "zahl[i]"

    Und nutz nächstes mal deinen Debugger oder die Ausagabe deine Programms. Ist das soo schwer... ? 🙄



  • Hallo leute ich hab das programm korrigiert und jetzt versucht mit devc++ auszuführen ,aber es zeigt immer noch ein Fehler bei der letzen Klammer unten an.

    #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];

    }

    for (int i=0;i<n;i++){
    cout<<zahl[i]<<" ";
    }
    cout << endl;

    int tausch=0; // gibt die Anzahl der Tausche an.

    for (int j=0; j < n-1; j++)
    {
    if (zahl[j] > zahl[j+1])
    {
    int hilf=zahl[j];

    zahl[j]=zahl[j+1];
    zahl[j+1]=hilf;
    tausch++;

    cout << tausch << ". Tausch: ";

    for (int i=0;i<n;i++){
    cout<<zahl[i]<<" ";
    }
    cout << endl;
    }

    Ich verstehe nicht was genau falsch daran ist?



  • crazybaby schrieb:

    Ich verstehe nicht was genau falsch daran ist?

    Würdest du deinen Code ordentlich einrücken, würdest du es selbst sehen:

    Du hast 6 {, aber nur 4 }.



  • crazybaby schrieb:

    Ich verstehe nicht was genau falsch daran ist?

    1. verwende bitte Code-Tags
    2. "ein Fehler" ist keine gute Fehlerbeschreibung
    3. Bitte rücke deinen Code ordentlich ein, dann siehst du fehlende Klammern recht schnell

    Wenn ich das jetzt richtig überblicke, fehlen schließende "}" zu zwei for-Schleifen im unteren Teil.



  • #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]; 
    
    }
    
     for (int i=0;i<n;i++){ 
     cout<<zahl[i]<<" "; 
     } 
     cout << endl; 
    
     int tausch=0; // gibt die Anzahl der Tausche an. 
    
     for (int j=0; j < n-1; j++) 
     { 
     if (zahl[j] > zahl[j+1]) 
     { 
     int hilf=zahl[j]; 
    
     zahl[j]=zahl[j+1]; 
     zahl[j+1]=hilf; 
     tausch++; 
    
     cout << tausch << ". Tausch:  "; 
    
     for (int i=0;i<n;i++){ 
     cout<<zahl[i]<<" "; 
     } 
     cout << endl;    
    } 
     }
      }
    

    Jetzt funktioniert das programm leute danke, aber es zeigt immer noch nicht die höhere Zahl vertauscht an.

    Ist mein programm inhaltlich falsch oder wie?



  • crazybaby schrieb:

    Jetzt funktioniert das programm

    Wenn ein Programm nicht tut, was es soll, spricht man in der Regel nicht von "funktionieren".

    crazybaby schrieb:

    Ist mein programm inhaltlich falsch oder wie?

    Ja.

    Du machst nur einen "Bubble"-Durchgang. Du musst das solange wiederholen, bis du nichts mehr zum Vertauschen findest.

    Und die Einrückung ist immer noch wie Kraut und Rüben.



  • Könnt ihr mir nicht sagen wie das Programm richtig aussehen soll?

    Ich habe meine Ansätze ja gepostet .



  • crazybaby schrieb:

    Könnt ihr mir nicht sagen wie das Programm richtig aussehen soll?

    Ich habe meine Ansätze ja gepostet .

    MFK schrieb:

    ...

    Du machst nur einen "Bubble"-Durchgang. Du musst das solange wiederholen, bis du nichts mehr zum Vertauschen findest.

    ...



  • Hey leute danke das programm funktioniert jetzt.

    Könnt ihr mir nicht sagen was ich in dem programm einbauen könnte , damit das programm überpruft ob der nutzer maximal
    20 Werte eingibt.

    Ich habs mal so gemacht:

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

    return zahl[i];

    }

    Kann ich das so machen?



  • Nein.

    Kauf dir ein Buch, oder google wenigstens nach irgendeinem E-Book. Hier im Forum gibt es irgendwo einen C++-Bücher Thread -> SuFu benutzen.
    Was du da machst hat nichts mit Programmieren zu tun oder damit, es zu lernen. Das ist eher trial & error, mal sehen was bei raus kommt und dann im Forum posten falls es zufällig auch noch kompiliert.



  • Ich hab es ja geggogelt aber nichts gefunden .

    Kann mir nicht mal jemand einen tipp geben?



  • Wäre es so in ordnung?

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {
    int n;
    int zahl[20];

    do
    {
    cout<< "Eingabe maximal 20 Zahlen"<<endl;
    ...
    } while ( n < 1 || n > 20);
    for (int i=0;i<n;i++)
    {
    cin>> zahl[i];

    }

    for (int i=0;i<n;i++){
    cout<<zahl[i]<<" ";
    }
    cout << endl;

    int tausch=0; // gibt die Anzahl der Tausche an.

    for (int j=0; j < n-1; j++)
    {
    if (zahl[j] > zahl[j+1])
    {
    int hilf=zahl[j];

    zahl[j]=zahl[j+1];
    zahl[j+1]=hilf;
    tausch++;

    cout << tausch << ". Tausch: ";

    for (int i=0;i<n;i++){
    cout<<zahl[i]<<" ";
    }
    cout << endl;
    }
    }
    }



  • Ja das wäre es - vorausgesetzt du willst undefiniertes Verhalten und zu 99% eine Endlosschleife die dir immer wieder "Eingabe maximal 20 Zahlen" ausgibt 🤡



  • Ihr werdet's mir sowieso nicht sagen aber ich Versuchs wie soll ich das denn dann genau machen?



  • crazybaby schrieb:

    Ihr werdet's mir sowieso nicht sagen aber ich Versuchs wie soll ich das denn dann genau machen?

    dir ein Buch kaufen und C++ lernen



  • Kann mir nicht jemand wenigstens sagen wo ich die Schleife dann genau einbauen kann damit ich endlich fertig werde?


  • Mod

    crazybaby schrieb:

    Kann mir nicht jemand wenigstens sagen wo ich die Schleife dann genau einbauen kann damit ich endlich fertig werde?

    Ich wüsste zwar wo, aber da du immer noch keine Codetags benutzt, kann ich leider nicht sagen, welche Zeile es ist.

    Nein, im Ernst: Wenn dir nach ein paar Beiträgen nicht mehr geholfen wird, sondern nur noch gesagt wird, du sollst etwas lernen, dann könnte da vielleicht was dran sein. Siehe auch den ersten Link in meiner Signatur und den Thread mit dem schönen Namen:
    RTFM! oder warum dir keiner helfen will...



  • Aber ich meine helfen könnt ihr ja trotzdem öde? Wenn ihr mir nicht sagt was ich falsch mache lerne ich ja auch nichts. War die Schleife falsch oder wie? Könnt ihr das Programm nicht einfach korrigieren?

    Ich wollte ja nur das das Programm ein wenig schöner aussieht.



  • Ich nehme mir mal die Freiheit, dein Programm aus obrigen Post in Code-Tags zu packen und verünftig einzurücken, das macht es auch für Leute, die dir helfen wollen ein wenig einfacher :xmas1:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int n;
        int zahl[20];
    
        do
        {
            cout<< "Eingabe maximal 20 Zahlen"<<endl;
            // ...
        } while ( n < 1 || n > 20);
    
        for (int i=0;i<n;i++)
        {
            cin>> zahl[i];
        }
    
        for (int i=0;i<n;i++)
        {
            cout<<zahl[i]<<" ";
        }
        cout << endl;
    
        int tausch=0; // gibt die Anzahl der Tausche an.
    
        for (int j=0; j < n-1; j++)
        {
            if (zahl[j] > zahl[j+1])
            {
                int hilf=zahl[j];
    
                zahl[j]=zahl[j+1];
                zahl[j+1]=hilf;
                tausch++;
    
                cout << tausch << ". Tausch:  ";
    
                for (int i=0;i<n;i++)
                {
                    cout<<zahl[i]<<" ";
                }
                cout << endl;
            }
        }
    }
    

Anmelden zum Antworten