Übungsaufgabe zur dynamischen Speicherallokation.



  • Aufgabe:

    Erstellen Sie eine C++-Anwendung, in der Sie dynamisch ein eindimensionales Array vom Typ short erstellen. Der Anwender Ihres Programms soll angeben können, aus wie vielen Elementen das Array bestehen soll. Legen Sie abwechselnd in alle Elemente des Arrays die Zahlen 0 und 1 hinein und geben Sie danach den Inhalt des Arrays auf den Bildschirm aus.

    Mein Quellcode:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int zahl;
    	cout << "Nennen sie die Größe des Felders:\n";
    	cin >> zahl;
    	short* b = new short[zahl];
    
    	b[0] = 0;
    
    	for (int i = 1; i < zahl; ++i)
    	{
    		if (i%2 == 0)
    		{
    			b[i] = 0;
    		}
    		else
    		{
    			b[i] = 1;
    		}
    	}
    	for (int i = 0; i < zahl; ++i)
    	{
    		cout << b[i];
    	}
    	delete[] b;
    	cout << endl;
    }
    

    Was sagt ihr?
    Ist alles korrekt?


  • Mod

    fehlerfrei.

    eine überprüfung ungültiger eingabewerte <= 0 wäre sinnvoll. warum wird b[0] gesondert behandelt?

    if (i%2 == 0)
            {
                b[i] = 0;
            }
            else
            {
                b[i] = 1;
            }
    

    ist ein bisschen eigenartig - vergleiche mal den wert von i%2 mit dem, den du jeweils b[i] zuweist. 😉



  • Hi!

    Die If Anweisung ist echt nich gerade schön, kürzer wäre zwar:

    b[ i ] = i%2 == 0 ? 0 : 1;
    

    Aber unsinnig. Es reicht nämlich ein einfaches:

    b[ i ] = i%2;
    

    grüße


Anmelden zum Antworten