[Pascal] Wczytywanie n liczb za jednym razem

0

Witam,
mam następujący problem:
w pierwszym wierszu wejścia Pascal pobiera liczbę n, a w następnym wierszu wejścia zawiera n liczb,
i w związku z tym mam pytanie. Jak te liczby zapisać do odzielnych zmiennych??? Myślałm o tablicach, ale wtedy na początku programu muszę podawać ilość rekordów, a skąd mam wiedzieć ile wyniesie liczba n??? W zadaniu jest podane, że jest to liczba wieksza od 1. Od razu podaję przykład:
7
5 6 8 6 21 87 3

Aha jeżeli ktoś chce zaspokoić swoją ciekawość po co mi to, to trenuje przed olimpiadą (zadania z poprzednich lat) algorytm i resztę programu napisałem poprawnie ale nie umiem wprowadzić danych w takiej postaci. Ale wstyd!, Pomóżcie!

0

Poczytaj o tablicach dynamicznych.

0
  1. Skoro nie wiesz ile bedziesz miał liczb to wybitnie prosi się o struktury dynamiczne.
  2. Skoro już wiesz że musza to być struktury dynamiczne to trzeba rozważyć która nadaje sie najlepiej. W tym celu warto sie zastanowić jaką strukturę byś użył gdyby ilosc danych była stała, oraz jakich operacji będziesz używał na tych danych.
  3. Skoro dane aż proszą sie o tablicę, to warto sprawdzić czy jest tablica dynamiczna i okazuje się że jest. Problem rozwiązany.

To tylko schemat rozumowania - uproszczony, a jednak skuteczny. Sugeruję w przyszłości w podobny sposób rozwiązywać problemy tej rangi.

0

No niestety Daban2, w Pascalu nie ma dynamicznych tablic (chyba, że używamy różnych pascali :-) ). Wg mnie lepiej byłoby się zastanowić czy problem wymaga, aby tworzyć zmienne dynamiczne. Bo jeśli rozpiętość przedziału ile może być danych liczb wynosi kilkanaście (np. napisane jest że max 30) to lepiej zrobić stałą tablicę i drugą zmienną, która będzie zawierać liczbę elementów. A jeśli może być danych liczb 2 albo tysiąc to lepiej by było zrobić stos, albo kolejkę.

0

Force, nie ma?

type 
    pTablica= ^ tTablica;
    tTablica=array[0..moltobello] of integer;
var
    pTab: pTablica;
begin
    getmem(ptab, sizeof(integer)*ileTrzeba);
    ptab^[13]:=-9
0

Rzeczywiście, tworzone jest dynamicznie, jedank nie jestem pewien czy pamięć jaka jest przydzielana jest różna w zalezności od tego ile chcemy mieć rekordów. Jak sprawdzałem używając sizeof(pTab^) to podawał wielkość taką jaką by zajmował gdyby rekordów było maltobello.

0

Ale przecie wiesz ile to było: ?ileTrzeba?. Wystarczy.
A ?sizeof()? wie tylko tyle, co wie w chwili kompilacji!!! Pamiętaj!

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