[Pascal] Rosnąca tablica w ramach potrzeb


(system) #1

Witam

Chce stworzyć tablice która będzie przechowywać n liczb. Liczby będą podawane od użytkownika, nie wiem ile ich będzie, dlatego chce stworzyć tablice która będzie rosnąć wraz z nowymi liczbami.

Mam coś takiego

begin

Writeln('Podaj liczby');

Writeln('Aby zakonczyc podawanie liczb wcisnij 0');


i:=0;

repeat

read(a);

if a=0 then

break;

i:=i+1;

SetLength(Tablica,i);

Tablica[i]:=a;


until(false);

Niestety, ten kod jest błędny z takiego powodu, że SetLenght mi nadpisuje całość starej tablicy. Jak mogę zrobić coś takiego?


(Sawyer47) #2

Utworzyć kopię tablicy, zmienić rozmiar aktualnej i przekopiować stare wartości do nowej, tak łopatologicznie. Może jest elegantsze rozwiązanie, ale nie znam Pascala.


(Chablak) #3

taki problem można rozwiązać korzystając z listy jedno kierunkowej. W razie problemów z napisaniem jej możesz zgłosić sie do mnie na PW lub gg 8407190 tylko odpisz się:slight_smile:

Pozdrawiam


(somekind) #4

Zabrzmiało jak oferta matrymonialna ^^

O liście jednokierunkowej jest tutaj: http://4programmers.net/Turbo_Pascal/Podstawowe_struktury_danych

A o tablicach dynamicznych tutaj: http://4programmers.net/Turbo_Pascal/Tablice_dynamiczne_w_Pascalu

Chyba trzeba wybrać to, co lepsze dla rozwiązania tego problemu.

Albo zmienić technologię na taką, która pozwala programować, a nie zajmować się pierdołami typu wynajdywanie na nowo tego, co już od dawna jest.