Array und schleifen
-
hey,
ich versuche mich gerade mit c++ und habe auch gleich sofort ein problem.
ich will einfach nur ein array mit zufallszahlen füllen nd gleich sofort trat folgener fehler auf, folgender codeint main(){
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
a[n]=zufallszahl();
cout<<a[n]<<endl;
}
cout<<a[0]<<endl;
cout<<a[1]<<endl;
cout<<a[2]<<endl;
cout<<a[3]<<endl;}
was jetzt passiert ist folgendes... wenn ich bei jeder iteration in der schleife immer mein a[n] ausgeben lasse und irgentwelche werte bekomme, unterscheiden sich die einträge in der schleife, von denen außerhalb der schleife, bzw. cout in der schleife gibt mir andere werte als cout außerhalb der schleife, obwohl ich ja nur das aufrufe, was in dem array drinne steht. ich habe immer für n=4 getestet.
so in der art sieht mein quellcode aus, es geht wirklich nur um diese eine zeile. meine methode zufallszahl() gibt mir nur werte von 0-2.wäre froh wenn mir jemand helfen könnte.
gruß
-
Deine Schleifenvariable heißt i, nicht n! Das Anlegen eines Arrays mit einer Variablen als Größenangabe ist nicht Standardkonform.
Verwende std::vector und ein anständiges Buch.
-
int[n] ist kein gültiges C++, wenn n keine Compile-Time Konstante ist. Ansonsten setzt du a[n], was nicht gültig ist, du willst a[i] setzen.
-
oh man leute
ich hab vor lauter code nicht mehr erkannt was da abgeht, danke sehr, also das ist jetzt echt peinlich ^^
-
> int n;
> cin>>n;
> int a[n];ist laut C++ Standard nicht erlaubt. Die Größe eines rohen Arrays hat eine Compile-Zeit-Konstante zu sein. G++ unterstützt dies aber als Erweiterung.
> a[n]=zufallszahl();
Was glaubst du, was du hier tust? Wieso ist der Index n? Das Element a[n] gibt es doch gar nicht.
Wenn du das "richtig" machen willst, nimm std::vector.
-
danke für eure tipps. ich programmiere erst seit gestern mit c++ und bin noch nicht so weit drinne, aber auf jeden fall gute hilfe !
-
kannste mir mit std::vector ein beispiel geben ?
-
vendetta schrieb:
kannste mir mit std::vector ein beispiel geben ?
Du findest hier genug Beispiele, einfach mal auf eine Methode klicken und runterscrollen. Abgesehen davon sind wir nicht dazu da um dir C++ beizubringen.
-
vendetta schrieb:
kannste mir mit std::vector ein beispiel geben ?
Statt int[n] v; schreibst du std::vector<int> v(n);

-
wobei man ja auch mit nem "kleinen" vector anfangen kann
vector<int> foo;
und dann per push_back da Daten reinschieben kann.
foo.push_back(23);
-
"kleinen"
Meinst du leer?

-
sauber, danke euch.
@ sone, sry das es dich so stört 3 c++ wörter zu schreiben, wäre einfacher gewesen .
-
Sone schrieb:
"kleinen"
Meinst du leer?

Was hat denn das eine mit dem anderen zu tun? Damit meinte krümelkacker den reservierten Speicher und nicht die tatsächliche Größe des Containers.