Tablica o wielkości podanej zmienną

0
 using System;
public class Program {
    public static int[] Puzzle(int n) {       
int[] tab;
tab = new int[n];
for (int i=0;i<=n;i++) 
        {
             tab[i]=i;
        }

     return tab;
    }
}

Taki kod mam i nie mogę pojąć dlaczego nie ustawia mi odpowiednio rozmiaru tablicy.
(Generalnie zadanie z codehunta)
W chwili gdy n = 1 dostaje błąd Index out of range exception

0

Nie powinno być czasem tak:

using System;
public class Program
{
    public static int[] Puzzle(int n)
    {       
    int[] tab;
    tab = new int[n];
    for (int i=0;i<n;i++) 
        {
             tab[i]=i;
        }
 
        return tab;
    }
}
4

jezeli ustawiasz rozmiar tablicy na 1 to w tablicy jest tylko jeden element, a odwolac sie do niego mozesz przez index 0.

 
int[] tab = new int[1];
tab[0] = 9;

a w twojej petli jest tak ze dla tablicy o rozmiarze 1 probujesz odwolac sie do elementu o indexie [1] ktorego twoja tablica nie ma :) i dlatego jest out of range exception.

ps. bezpiecznie jest ustawiac warunek w petli for odwolując sie do rozmiaru tablicy np:

 for (int i=0;i<tablica.Length;i++)
{
//...
} 

albo dla kolekcji generycznych

for (int i=0;i<lista.Count;i++)
{
//...
} 

Zawsze, w każdej tablicy, liscie lub jakiejs innej kolekcji o rozmiarze n, jej pierwszy element jest pod indexem 0 a ostatni pod indexem n-1.

0

@Varran i czego powtarzasz jak już napisałem odpowiedź?

0

Macie racje szukałem nie w tym miejscu co trzeba - dzięki wielkie za pomoc ;)

0

Moja odpowiedź wymagała, żeby pomyśleć.

@Varran dał gotowca.

@Sopelek @ne0

0

@ne0

Autor sam wybierze wartościowszą odpowiedź i ją doceni.

Czyli gotowca.

0

Droga Czarna Pało - Ty też dałeś gotowca.

A @Varran dał kod ładniejszy i wydajniejszy (przynajmniej druga wstawka w jego poście, bo trzecia jest bez sensu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1