Dynamische Speicherallokation: Aufgabe
-
Wooow geht das hier schnell

Danke für den Tipp.
Modulo ? Ist dass das mit dem % Zeichen oder so ähnlich ?
Grüße
silent1297
-
silent1297 schrieb:
Modulo ? Ist dass das mit dem % Zeichen oder so ähnlich ?
Genau.
-
Jetzt müsste ich nur noch wissen wie das funktionierte :p habe davon nur mal nebenbei in einem Thread gelesen

-
silent1297 schrieb:
Jetzt müsste ich nur noch wissen wie das funktionierte :p habe davon nur mal nebenbei in einem Thread gelesen

if(Variable % 2) { //Variable ist ungerade } else { //Variable ist gerade }
-
Viel zu wissen gibts da eigentlich nicht: Der %-Operator gibt den Rest einer Division zurück.
8 % 3ist z.B.2.Wenn du nun modulo 2 rechnest, ist das Ergebnis immer 0 oder 1. Das kannst du für die Abwechslung ausnutzen.
-
silent1297 schrieb:
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.
Nun frage ich mich aber was mit "lege nun abwechselnd....." gemeint ist.
Kann mir jemand auf die Sprünge helfen ?Ich verstehe das so, daß die Ausgabe der Elemente des Arrays dann so aussehen soll:
0,1,0,1,0,1,0,etc.silent1297 schrieb:
Aufgabe: Erstellen Sie eine C++-Anwendung,
Das Array, was du verwendet hast, ist eigentlich ein C-Array, keins aus C++.
Unter C++ wäre das ein vector.
z.B. wird mit#include <vector> using namespace std; int main() { vector<int>test; return 0; }ein Array test mit int-Werten angelegt, welches in Bezug auf die Anzahl der Elemente beliebig verändert werden kann.
Weitere Infos kann man unter http://www.cplusplus.com/reference/stl/vector/ nachlesen
oder einfach mal nach "vector tutorial" googlen.
-
redrew99 schrieb:
Unter C++ wäre das ein vector.
Ich würde eher auf
std::tr1::arrayverweisen.
-
Ich glaube dass das mit dem Array schon so gemeint ist, da in dem dazugehörigen Tutorial http://www.highscore.de/cpp/einfuehrung/index.html
es so verwendet wird.
Für mich klingt die Aufgabenstellung auch eher nach: ungerade Zahlen: 0
gerade Zahlen:1 nur wie soll ich das ausgeben ? einfach als Zahlenkette ( 01010101..) ?Grüße
silent1297
-
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 zuPS: 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 TippsGrüße
silent12