Такая проблема возникла.
Задачка на поиск дублетов(пар слов, разнящихся между собой в одной букве) в считанном из файла словарике. Для того чтобы эти самые дублеты найти, необходимо, как я понимаю не раз погонять словарь. Соотвественно считать надо все это счастье в строковый массив. В условии оговорено, что размер словаря не должен превышать 25143 слова, каждое из которых не более 16 символов.
Вот тут и все проблемы начались. То, что я в статический массив не уложусь со своим словариком я поняла сразу . Сделала динамический вариант обработки.
w_max = 16;{это максимальная длина слова}
label 1, 2;{метки для проверок}
type
str_char = string[w_max];{это для динамического строкового массива}
TDynArr = array[1..1] of str_char;
PDynArr = ^TDynArr;
var f: text;{файл со словарем и парами для поиска}
t_wd2: str_char;
n, i, j: word;
p_arr: PDynArr;{динамический строковый массив}
begin
assign(f, 'input.txt');
{сначала выясняем количество слов для получения динамического массива}
reset(f);
n:= 0;
while not eof(f) do
begin
readln(f, t_wd2);
if (n > n_max) or (length(t_wd2) = 0) then goto 1;
n:= n + 1;
end;
1: close(f);
reset(f);
{этот самый динамический строковый массив объявляем}
GetMem(p_arr, n * SizeOf(str_char));
{зачитываем слова в словарь}
writeln('Производится считывание словаря...');
i:= 1;
n:= 0;
while not eof(f) do
begin
readln(f, t_wd2);
if (n > n_max) or (length(t_wd2) = 0) then goto 2;
n:= n + 1;
p_arr^[n]:= t_wd2;
end;
2: writeln('Найдено ', n, ' слов в словаре');
close(f);
{чистим собственно массив}
FreeMem(p_arr, n * SizeOf(str_char));
Вот когда производится зачитывание всего словарика около 20 тыс слов разной длины, то выходит при попытке вывода на экран полученного массива, какая-то белиберда. То есть почему-то первые элементы массива оказываются затертыми последующими с повторами, с вкраплениями каких-то непечатных символов и т.д. Хотя при считываниии когда вывожу каждый новый считанный элемент для контроля - все правильно. Что это? Игры с памятью?
Могу приложить полный код и словарик при необходимости.
Сообщение отредактировано: Carin -