Programm



  • Hallo leute 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;

    }

    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 .

    Wäre sehr dankbar dafür.



  • Hallo leute ich hab bisschen weiter probiert und folgendes Programm.

    Leider hat es anscheinend Fehler .

    Wollt euch fragen ob ihr mir helfen könnt.

    #include <iostream> 
    >   
    > using namespace std; 
    >   
    > int main() 
    >  { 
    >      char Auswahl; 
    >   
    > do{ 
    >   
    > cout<< " (A)Das Array mit der vorgegebenen Zahl der 
    > Elemente soll (neu) eingelesen werden."<< endl; 
    >     cout<< " (B)Der Tauschalgorithmus ist durchzuführen"<< 
    > endl; 
    >     cout<< " (C)Das Array soll gespiegelt werden 
    > (Reihenfolge umkehren)."<< endl; 
    >     cout<< " (D)Das Array soll am Bildschirm angezeigt 
    > werden"<< endl; 
    >     cout<< " (E)Das Programm beenden"; 
    >   
    > cin>> Auswahl; 
    >   
    > cout<< "Drücken sie eine Zahl zwischen 1 bis 5 "     
    > <<endl; 
    >      switch(Auswahl) 
    >   
    > { 
    >   
    > case(´A'): 
    >   
    > 
    > cout << " (1)Das Array mit der vorgegebenen Zahl wird 
    > eingelesen"; 
    >          for (int i=0;i<n;i++) 
    >          cin>>zahl; 
    > 
    > int Zahl[10] ={2, 4, 6, 8 , 10 , 12 , 14, 16 ,18 ,20} 
    > 
    > break; 
    > 
    > case('B´): 
    > 
    > cout << " Der Tauschalgorithmus wird durchgeführt"<< 
    > endl; 
    > 
    > int n; 
    >           int zahl[10]; 
    >          cout<<" Anzahl der einzulesenden Elemente/maximal 
    > 10 "; 
    >          cin>>n; 
    > 
    > 
    > 
    > 
    > 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:  "; 
    > 
    > break; 
    > 
    > default: 
    > 
    > 
    > 
    > } 
    > 
    > } 
    > 
    > 
    > case('C´): 
    > 
    > cout << " Das Array wird gespiegelt"<< endl; 
    >                int first=0; 
    >                int last=n-1; 
    >              while (first < last) 
    >              { 
    >                int hilf=zahl[first]; 
    > 
    > zahl[first]=zahl[last]; 
    >                   zahl[last]=hilf; 
    > 
    > first++; 
    >                  last--; 
    >        }
    


  • Der Fehler liegt wahrscheinlich an den ganzen '>'-Zeichen am Anfang der Zeilen. Das sagt dir aber der Compiler. (Liebe mods, macht bitte ein :troll:-Smiley)



  • crazy2 schrieb:

    Leider hat es anscheinend Fehler .

    Wollt euch fragen ob ihr mir helfen könnt.

    Formatiere den Code erstmal so, dass er lesbar ist. Was Du hier postest, ist eine Zumutung für jeden Leser.



  • 'C´
    

    Das finde ich typographisch sehr ansprechend. :troll:



  • crazy2 schrieb:

    Wollt euch fragen ob ihr mir helfen könnt.

    wahrscheinlich schon

    crazy2 schrieb:

    Leider hat es anscheinend Fehler .

    Ja stimmt, und welche Fehler wären das?

    Hier mal eine compilierbare Fassung:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int zahl[] ={ 2, 4, 6, 8 , 10 , 12 , 14, 16 ,18 ,20 }; // <== das muss vorher deklariert werden
        const int N = sizeof(zahl)/sizeof(zahl[0]); // <== Anzahl aus dem Feld übernehmen
        int n = N; // <== initiale Belegung der Anzahl
        char Auswahl;
        do
        {
            cout<< " (A)Das Array mit der vorgegebenen Zahl der Elemente soll (neu) eingelesen werden."<< endl;
            cout<< " (B)Der Tauschalgorithmus ist durchzuführen"<< endl;
            cout<< " (C)Das Array soll gespiegelt werden (Reihenfolge umkehren)."<< endl;
            cout<< " (D)Das Array soll am Bildschirm angezeigt werden"<< endl;
            cout<< " (E)Das Programm beenden";
            cout<< "Drücken sie eine Buchstaben von 'A' bis 'E' " <<endl; // <== diese Zeile noch vor(!) 'cin >> Auswahl'
            cin>> Auswahl;
    
            switch(Auswahl)
            {
            case('A'):
                cout << " (1)Das Array mit der vorgegebenen Zahl wird eingelesen"; 
                for (int i=0;i<n;i++) 
                    cin >> zahl[i]; // <== hier fehlte das [i]
                break; 
    
            case('B'):
                cout << " Der Tauschalgorithmus wird durchgeführt"<< endl;
                cout<<" Anzahl der einzulesenden Elemente/maximal " << N;
                cin >> n;
                { // <== eigenen Scope für Variable 'tausch'
                    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:  ";
                            break;
                        }
                    }
                }
            case('C'):
                cout << " Das Array wird gespiegelt"<< endl; 
                for (int first=0, last=n-1;first < last; ++first, --last ) // <=== bevorzuge for vor while! 
                { 
                    int hilf=zahl[first]; 
                    zahl[first]=zahl[last]; 
                    zahl[last]=hilf; 
                }
    
            case 'D': // <=== case D: fehlt
            default: // <=== default am Ende des switch-Statements
                break;
    
    // <=== alles ab hier fehlte
            } // switch(auswahl)
        } while( Auswahl != 'E' );
    } // main
    

    :xmas2: Werner



  • Hi danke Werner .

    Jetzt ist es wenigstens kompilierbar.

    Aber ich glaube inhaltlich ist noch nicht ganz ok oder?

    Ist eigentlich mein case c in ordnug?

    Ehrlich geagt beim case D weiss ich auch nicht wie ich das machen kann.

    HAst du eine Idee?

    Wäre dankbar dafür.



  • crazy2 schrieb:

    Aber ich glaube inhaltlich ist noch nicht ganz ok oder?

    das solltest Du beurteilen. Tut das Programm das, was Du erwartest?

    crazy2 schrieb:

    Ist eigentlich mein case c in ordnug?

    Ja - ich denke schon.

    crazy2 schrieb:

    Ehrlich geagt beim case D weiss ich auch nicht wie ich das machen kann.

    Mh.. das sollte der leichteste Part sein. Wie in Zeile 25 und 26. Nur statt einlesen von cin, ausgeben auf cout. Wo ist das Problem?

    :xmas2: Werner



  • Ah ja mein programm sieht jetzt so aus:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int zahl[] ={ 2, 4, 6, 8 , 10 , 12 , 14, 16 ,18 ,20 }; // <== das muss vorher deklariert werden. Wie soll ich das deklarieren?
        const int N = sizeof(zahl)/sizeof(zahl[0]); // <== Anzahl aus dem Feld übernehmen
        int n = N; // <== initiale Belegung der Anzahl Soll ich hier einfach für N die Zahl 10 nehmen?
        char Auswahl;
        do
        {
            cout<< " (A)Das Array mit der vorgegebenen Zahl der Elemente soll (neu) eingelesen werden."<< endl;
            cout<< " (B)Der Tauschalgorithmus ist durchzuführen"<< endl;
            cout<< " (C)Das Array soll gespiegelt werden (Reihenfolge umkehren)."<< endl;
            cout<< " (D)Das Array soll am Bildschirm angezeigt werden"<< endl;
            cout<< " (E)Das Programm beenden";
            cout<< "Drücken sie eine Buchstaben von 'A' bis 'E' " <<endl; // <== diese Zeile noch vor(!) 'cin >> Auswahl'
            cin>> Auswahl;
    
            switch(Auswahl)
            {
            case('A'):
                cout << " (1)Das Array mit der vorgegebenen Zahl wird eingelesen";
                for (int i=0;i<n;i++)
                    cin >> zahl[i]; // <== hier fehlte das [i]
                break;
    
            case('B'):
                cout << " Der Tauschalgorithmus wird durchgeführt"<< endl;
                cout<<" Anzahl der einzulesenden Elemente/maximal " << N;
                cin >> n;
                {   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:  ";
                            break;
                        }
                    }
                }
            case('C'):
                cout << " Das Array wird gespiegelt"<< endl;
                for (int first=0, last=n-1;first < last; ++first, --last ) // <=== bevorzuge for vor while!
                {
                    int hilf=zahl[first];
                    zahl[first]=zahl[last];
                    zahl[last]=hilf;
                }
    
            case 'D': 
    
            for (int i=0;i<n;i++)
                    cout >> zahl[i];
            default: // <=== default am Ende des switch-Statements
                break;
    
    // <=== alles ab hier fehlte
            } // switch(auswahl)
        } while( Auswahl != 'E' );
    } // main
    

    Stimmt mein programm soweit ?



  • crazy2 schrieb:

    Stimmt mein programm soweit ?

    .. beurteile es doch selbst. Compiliert es? Tut es das, was Du erwartest?

    :xmas1:



  • Der Tauschalgorithmus wird leider nicht richtig dargestellt. Und mir wird immer noch kein Array auf der Konsole angezeigt. Kompilieren tut es schon.

    Was meinst du den damit dass ich den Array vorher deklarieren soll.

    Wie denn genau?

    Danke für deine Geduld an dieser Stelle.



  • Kompilieren und debuggen "in der Cloud"...
    Ich weiss gar nicht welchen Smiley ich jetzt nehmen soll... 😉

    Crazy2 schrieb:

    Und mir wird immer noch kein Array auf der Konsole angezeigt.

    Die Ausgabe koenntest Du hinbekommen, wenn Du statt '>>' '<<' schreibst:

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


  • Oh man der Fehler war wirklich blöd.

    Danke

    Weisst du wie ich diesen Teil des Programms noch korrigieren kann?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int zahl[] ={ 2, 4, 6, 8 , 10 , 12 , 14, 16 ,18 ,20 }; // <== das muss vorher deklariert werden. Wie soll ich das deklarieren?
        const int N = sizeof(zahl)/sizeof(zahl[0]); // <== Anzahl aus dem Feld übernehmen
        int n = N; // <== initiale Belegung der Anzahl Soll ich hier einfach für N die Zahl 10 nehmen?
        char Auswahl;
        do
        {
    


  • Das ist alles okay so.
    Werner hat nur geschrieben was das ist, bzw. warum das da steht.
    Das waren keine "Arbeitsanweisungen" an Dich.
    Die Intention dahinter war, dass Du Dir Mühe gibst das "Was" und "Warum" zu verstehen...



  • Ah ok. Kannst du mir sagen warum mein Tauschalgorithmus nicht so richtig funktioniert . Hab ich es falsch erstellt?

    Und kannst du mir bitte den letzten Teil von Werners Programm erklären warum er da die While Schleife benutzt?



  • crazy2 schrieb:

    Ah ok. Kannst du mir sagen warum mein Tauschalgorithmus nicht so richtig funktioniert . Hab ich es falsch erstellt?

    Das weiss hier keiner ausser Dir.
    Ich kann Dir evtl. helfen, wenn Du mir erklärst, was
    a) der Tauschalgorithmus macht und
    b) der Tauschalgorithmus machen soll.

    crazy2 schrieb:

    Und kannst du mir bitte den letzten Teil von Werners Programm erklären warum er da die While Schleife benutzt?

    Werner hat das while ergänzt, dass zu einer do-while Schleife gehört, die Du angefangen hast.

    do{
      // Sachen einlesen
      // Dinge tun
    }while( bedingung_hier );
    


  • Er soll eigentlich das höhere array vertauscht darstellen.

    Naja ok ich glaubs euch einach das es richtig ist.

    War ja nur ne übung.

    Ansonsten ist das Programm in ordnung leute oder ?

    Dann lasse ich euch in Ruhe .



  • Ich verstehe nicht genau wie ich das testen soll.

    Ein vertausches array wird mir nicht angezeigt und gespiegelt wird mir der array auch nicht angezeigt.

    Es wird mir einfach nur eine Zahl angezeigt.

    Woher weiss ich das es gespiegelt ist?



  • crazy2 schrieb:

    Ein vertausches array wird mir nicht angezeigt und gespiegelt wird mir der array auch nicht angezeigt.

    Also macht das Programm nicht das, was Du willst?

    Kannst Du mal in klaren Worten (ruhig zweimal drüberlesen!) beschreiben, was beim tauschen passieren soll?
    Und wenn da wieder so ein schnoddriges, unpräzises "Er soll eigentlich das höhere array vertauscht darstellen." kommt bin ich für meinen Teil weg aus dem Thread.
    Du möchtest die Hilfe der Community, da ist klare und präzise Sprache nicht zuviel verlangt.


Anmelden zum Antworten