Probleme bei Schulaufgabe



  • lappen schrieb:

    @jester: du meinst also mit ner for schleife ein feld füttern?

    Naja, eigentlich meinte ich hauptsächlich, daß Du das Problem mal in einzelne Teilprobleme zerlegen solltest und habe Dir eine Liste mit Teilproblemen, die Du lösen könntest gemacht.

    Das verschieben dürfte sich tatsächlich gut mit einer for-Schleife implementieren lassen. Die sollte wohl irgendwie rückwärts über das Feld laufen.



  • @kuldren: was ist mit dem Befehl p-- gemeint? Ich kenne den leider nicht.

    @chrische5: Also wir haben nur <iostream.h> kennengelernt und arbeiten auch nur damit.

    @jester: Ich glaub ich hab auf jeden Fall ein dickes Problem mit Felder (Arrays) und werde auch dieses Problem so wie Du es beschrieben hast angehen.
    Ich glaub ich hab zudem auch eine schwäche was for-Schleifen angeht. Und das in Kombination mit Feldern bricht mit z.Z logisch das Genick.



  • p-- decrementiert den Wert in p.

    int p = 5;  // in p steht 5
    p--;        // dekrementieren; in p steht jetzt 4
    

    Ist das Gleiche wie 'p = p - 1', nur halt ne kürzere Schreibweise.



  • na logisch. hätt ich auch von selbst draufkommen können. danke



  • Syntax der for-Schleife:

    for(INITIALISIERUNG; ABBRUCHBEDINGUNG; ANWEISUNG)
    {
        // mache was
    }
    

    Du musst aber nicht immer alle drei Sachen reinschreiben. Folgende 'Progrämmchen' machen alle das Gleiche:

    /* i wird mit 0 initialisiert. Die Schleife läuft so lange, wie i kleiner als 10 ist. i wird bei jedem Schleifendurchlauf um eins erhöht. In der Schleife wird immer der aktuelle Zählwert ausgegeben. */
    for(int i=0; i<10; i++)
    {
        cout << i << endl;
    }
    
    // 2. Variante
    for(int i=0; i<10; )
    {
        cout << i << endl;
        i++;
    }
    
    // 3. Variante
    int i=0;
    for(;i<10;)
    {
        cout << i << endl;
        i++;
    }
    
    // 4. Variante (Unschön, aber möglich)
    int i=0;
    for(;;)
    {
        cout << i << endl;
        i++;
    
        if(i>=10)
            break;
    }
    


  • also ich sitz jetzt schon wieder fast 1 1/2 std rum und probier rum. ich komm einfach nicht darauf. sorry wenn ich mich besonders und extrem dämlich anstelle, aber ich schaff es einfach nicht einen wert an eine stelle einzubringen und die darauffolgenden werte um jeweils einen speicherplatz zu verrücken. das kann doch nun wirklich nicht so schwer sein. vielleicht sollte ich bäcker werden!!!!!!!!!

    feld[5] => [0] [1] [2] [3] [4] das sind meine 5 Feldpositionen

    1 3 5 7 9 das sind meine werte(inhalte)

    ich hab keinen blassen schimmer wie ich die for-schleife aufbauen muß, damit der inhalt von position 2,also den wert 5, nach position 3 verschiebe kann.
    das die schleife rückwärtszählen muß ist mir eigentlich klar, aber den aufbau der verdammten wschleife krieg ich nicht hin.



  • Nein. Eher Maurer.

    Zeig doch mal deinen Code. Aber auf der anderen Seite haben wir dir mittlerweile 3 komplette Lösungen gepostet.



  • Hallo Lappen,

    es ist nun wirklich nicht bös gemeint, aber du solltest dir vielleicht ein Buch kaufen oder etwas der gleichen. Dieses dann durcharbeiten und dich mit dem Basiswissen vertraut machen.
    Ich glaube es bringt dir nichts, wenn du schon bei so grundlegenden Sachen rumfrickelst.

    Die Syntax der for-Schleife, Operatoren, usw gehören auf alle Fälle zu dem großen Bereich des Allgemeinwissens.

    Wie gesagt, ist nicht böse gemein, aber wenn du das Grundwissen schon nicht kannst wirst du irgendwann keine Lust mehr haben, oder auf die Nase fallen 🙂

    Lyrix

    Edit: auch hier gibts ne große Rubrik mit vielen Tutorials. Lad dir einfach mal eines runter und arbeite es durch...



  • Ich hab ein Buch. Eigentlich ein sehr gutes sogar. ausserdem auch ein skript von meinem lehrer. ich glaub das ganze liegt mir einfach nicht so gut wie andere sachen. aber du hast recht, ich werd mich jetzt nochmal hinsetzen und das ganze von vorne durch ackern.



  • lappen schrieb:

    Ich hab ein Buch. Eigentlich ein sehr gutes sogar. ausserdem auch ein skript von meinem lehrer. ich glaub das ganze liegt mir einfach nicht so gut wie andere sachen. aber du hast recht, ich werd mich jetzt nochmal hinsetzen und das ganze von vorne durch ackern.

    Gute Einstellung 👍

    Ich hoffe bei dir macht es bald *Klick* :). Aber keine Panic, am anfang war es auch hart für mich. Wünsch dir viel erfolg 🙂



  • Lyrix schrieb:

    lappen schrieb:

    Ich hab ein Buch. Eigentlich ein sehr gutes sogar. ausserdem auch ein skript von meinem lehrer. ich glaub das ganze liegt mir einfach nicht so gut wie andere sachen. aber du hast recht, ich werd mich jetzt nochmal hinsetzen und das ganze von vorne durch ackern.

    Gute Einstellung 👍

    Ich hoffe bei dir macht es bald *Klick* :). Aber keine Panic, am anfang war es auch hart für mich. Wünsch dir viel erfolg 🙂

    Nicht nur fuer Dich 😛
    Fuer mich ist es immernoch hart, obwohl Ich schon seit knapp 2 Jahren dabei bin 😞 😞



  • tH0RsT3n schrieb:

    Lyrix schrieb:

    lappen schrieb:

    Ich hab ein Buch. Eigentlich ein sehr gutes sogar. ausserdem auch ein skript von meinem lehrer. ich glaub das ganze liegt mir einfach nicht so gut wie andere sachen. aber du hast recht, ich werd mich jetzt nochmal hinsetzen und das ganze von vorne durch ackern.

    Gute Einstellung 👍

    Ich hoffe bei dir macht es bald *Klick* :). Aber keine Panic, am anfang war es auch hart für mich. Wünsch dir viel erfolg 🙂

    Nicht nur fuer Dich 😛
    Fuer mich ist es immernoch hart, obwohl Ich schon seit knapp 2 Jahren dabei bin 😞 😞

    Naja war eher so gemeint, dass er sich am anfang nciht "abschrecken" lassen soll 🙂



  • Ich habe mich heute auch mal mit deinem Problem beschäftigt und habe dabei eine ziemlich einfache, einleuchtende Lösung gefunden:

    [cpp]void addvalue(vector<int>& container, int element, int position) {
    
         // Überschreiben der Positionen, rückwärtslaufend
         for(int i = container.size() - 1; i > position; --i) {
                 container[i] = container[i-1];
         }
    
         // Überschreiben der definierten Position
         container[position] = element;
    }
    
    [/cpp]
    

    Dabei wird der Wert eines Elementes des Vectors an die Position des nachfolgenden Elementes kopiert.
    Die Gefahr, dass dabei ein Wert an eine Stelle kopiert wird, die nicht existiert, wird durch diesen Ausdruck vermieden:

    [cpp]int i = container.size() - 1;[/cpp]
    

    Die Schleife terminiert, wenn die Laufvariable 'i' die definierte Position erreicht. Dann muss nur noch der definierte Wert, der der Funktion übergeben wurde, an diese Stelle kopiert werden.
    Ich hoffe, diese Lösung ist leicht nachzuvollziehen.

    Grüße, Bobby - Karle


Anmelden zum Antworten