Programm



  • Wofür genau ist dieses zweite Array? Wenn du ein Array mit einer Initialisierungsliste initialisierst (der {1, 2, 3, ...} Kram), dann brauchst du nicht unbedingt eine Größe angeben, da der Compiler die aus der Länge der Initialisierungsliste von selber herleiten kann.

    Der Grund, wieso dein Menü "nicht angezeigt wird" ist, dass das Programm sich sofort beendet. Das Menü wird schon angezeigt, aber das Programm beendet gleich darauf und so bekommst du nie mit, dass es angezeigt wird. Du wirst nach dem Anzeigen des Menüs wohl auf eine Eingabe warten wollen...



  • bist du der iceman aus dem thread hier?
    C++ Array falls nicht, nimm mir die vermutung nicht übel.

    und falls doch, dann mach doch mal das was wir dir auch schon dort geraten haben.
    selber recherchieren, selber denken und auch ausprobieren.

    SeppJ hat schonmal das prinzip dieser lösung hier gesagt, was erwartest du jetzt von uns?
    den code zu der aufgabe? (ich hoffe in solchen fällen ja immer wieder, dass so Typen wie Sone oder so kommen und die lösung posten - als Template Meta Programm mit gehörigem Nutzen der STL und Boost!)

    aber um dir vllt mal das grundprinzip des programmierens nahe zu legen:
    - man schreibst einzelne anweisungen als quellcode, diese werden nacheinander immer schön der reihe anch sequentiell vom pc agearbeitet
    - in vielen sprachen (wie eben C++) arbeitest du mit variablen, diese haben einen typ. und du musst sowohl den typ als auch den namen (und etwaige erstbelegungen) vor dem nutzen dieser variablen angeben (variablen deklaration nennt man das). es gelten heir so regeln wie eindeutigkeit, dass es in einem block keine 2 variablen mit gleichem namen geben darf

    das ist mal ganz simplifiziert. aber wenn du dies mal beherzigst und in dein programm reinschaust, kann das dann funktionieren?

    beantworte us doch mal folgende fragen:
    1.- wie erzeugst du dir eine variable (variablendeklaration)?
    2.- was macht cout? (und wie nutzt man es)
    3.- was macht cin? (und wie nutzt man es)
    4.- was bedeutet for?
    5.- was bedeutet if? (und wie nutzt man es)
    6.- wie erzeugst du ein array?
    7.- was ist ein array?
    8.- wie greifst du af ein aray zu?



  • 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?


Anmelden zum Antworten