array hilfe
-
ich will a1[s]={0,1,2,3,...,s,-1} , a2[s]={0,0,0,....,-2} und a3[s]={0,0,0,....,-3}
ich find den fehler aber nicht ....int i,s,a1[s],a2[s],a3[s]; scanf("%d",&s); for(i=0;i<=s+1;i++) { a1[i]=i;a2[i]=0;a3[i]=0;a1[s]=-1;a2[s]=-2;a3[s]=-3; }
-
n3s schrieb:
ich will a1[s]={0,1,2,3,...,s,-1} , a2[s]={0,0,0,....,-2} und a3[s]={0,0,0,....,-3}
ich find den fehler aber nicht ....Tolle Fehlerbeschreibung.
Folgendes ist in C89 nicht möglich:int foo(int s) { int arr[s]; // Fehler, s muss konstant sein }
War das das Problem?
-
Erstens: Auch bei einem VLA muß die Größe bekannt sein in dem Moment, wo es angelegt wird - d.h. erst definieren und danach den Nutzer nach der Arraygröße fragen funktioniert so nicht (für sowas benötigst du schon dynamischen Speicher).
Zweitens: Die Array-Indizes beginnen bei 0 und bei der Definition gibst du die Größe an - damit hat das letzte Element in einemint x[s];
den Index s-1 (das Elementx[s]
liegt nicht mehr im Array).
Drittens: Wenn du uns schon um Hilfe bittest, dann hätten wir gerne eine genauere Fehlerbeschreibung als "finde den Fehler nicht".
-
Wenn du unbedingt VLA benutzen willst, dann geht das so natürlich nicht.
int i,s; scanf("%d",&s); { int a1[s],a2[s],a3[s]; for(i=0;i<s-1;i++) { a1[i]=i;a2[i]=0;a3[i]=0; } a1[s-1]=-1;a2[s-1]=-2;a3[s-1]=-3; }