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 einem int x[s]; den Index s-1 (das Element x[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;
    }
    

Anmelden zum Antworten