Dynamische Speicherallokation: Aufgabe



  • Hat niemand eine Idee für die Ausgabe ? Oder muss ich am Ende noch mehr umstellen ? Mein Code:

    #include <string>
    #include <iostream>
    using namespace std;

    int main()
    {
    int i;
    short Array[i];

    cout << "Wie viele Array-Elemente moechten Sie speichern? " <<flush;
    cin >> i;

    short* arrays = new short[i];

    for (int b = 0; b < i; ++b)
    {
    if (b % 2)
    { b = 0;}
    else { b = 1;
    }
    }

    delete[] Array;

    system ("Pause");

    }



  • * das Array am Anfang der main()-Funktion ist überflüssig
    * in der Schleife solltest du besser nicht die Zählvariable kaputtmachen, sondern als Index im Array verwenden
    * die Ausgabe fehlt noch
    * delete greift auf die falsche Variable zu

    PS: sfds



  • Aha, du willst die Lösung:

    #include <iostream>
    int main()
    {
      std::cout << "Elementanzahl = ";
      std::size_t Size;
      std::cin >> Size;
      short* Array = new short[Size];
      for(std::size_t i = 0; i < Size; i++)
        std::cout << (Array[i] = i % 2) << ", ";
      delete[] Array;
    }
    


  • #include <string>
    #include <iostream>
    using namespace std;

    int main()
    {
    int i;
    short Array[i];

    cout << "Wie viele Array-Elemente moechten Sie speichern? " <<flush;
    cin >> i;

    short* arrays = new short[i];

    for (int b = 0; b < i; ++b)
    {
    if (b % 2)
    { b = 0;
    }
    else
    { b = 1;
    }
    cout << b <<endl;
    }

    delete[] arrays;

    system ("Pause");

    }

    Habe es jetzt erstmal so umgeschrieben (Überflüssige noch dringelassen), aber die Ausgabe klappt noch nicht! ?



  • OK, einer von vier Kritikpunkten ist umgesetzt, der Rest ist immer noch genauso falsch wie vorher

    for (int b = 0; b < i; ++b) 
      { 
        if (b % 2)
        {
          arrays[b] = 0; // hier wird der Inhalt des Arrays gefüllt
        }
        else 
        {
          arrays[b] = 1; // bzw. hier
        }
      }
    

    Für die Ausgabe kannst du in einer zweiten Schleife über das Array laufen.



  • Sry bin noch völliger Anfänger und weiß nicht was du mit der zweiten Schleife die über das Array laufen soll meinst :-/.



  • Du weißt aber schon, was eine Schleife ist? Dann kannst du eine Schleife verwenden, um nacheinander alle Elemente des Arrays auszugeben (funktioniert so ähnlich wie das Füllen des Arrays).



  • Ich habs jetzt erstmal so probiert:

    for (int i = 0; b < i; ++i)
    {
    cout << arrays[b] << ", " <<endl;
    }

    aber wo hat sich der Fehler/Denkfehler eingeschlichen ?



  • Der Denkfehler besteht darin, daß du besser darauf achten solltest, welche Variable welche Aufgabe bekommen soll. Oben hast du i für die Array-Größe und b als Zähler/Index verwendet, jetzt machst du es genau umgekehrt.
    (vernünftige Variablennamen könnten auch helfen - C++ erlaubt auch Bezeichner, die länger als ein Zeichen sind ;))



  • Ohman 😃 Das passiert wenn man zu schnell durchheizt 😉 aber jetzt geht alles 🙂 danke für alle Tipps

    Grüße
    silent12


Anmelden zum Antworten