Компилятор выводит 0 в конце массива - PullRequest
0 голосов
/ 24 ноября 2018

Я кодирую программу, которая читает все числа из текстового файла.Но в конце массива он выводит также «0», но на самом деле у меня нет 0 в массиве.

В файле, который у меня есть это: 12 456 56 7 Но компилятор выводит это: 12 456 56 7 0

Вот код:

program p3;
uses crt;


 var i:integer;
     f:text;
     v:array[1..1000000] of integer;


 begin

  clrscr;
  assign(f,'numere.txt');
  reset(f);

  i:=1;

  repeat

    read(f,v[i]);
    write(v[i],' ');
    i:= i+1;
    until eof(f);

  readln
  end.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я тестировал код вашей исходной задачи в Free Pascal, используя входные данные из цифра.txt , и в этом нет ничего плохого.Он делает то, что должен делать.Итак, я уверен, что проблема заключается в вашем текстовом файле.Дополнительный разрыв строки или дополнительный забытый персонаж могут творить чудеса.

0 голосов
/ 24 ноября 2018

Я изучил вики Паскаля и попытался поэкспериментировать с SeekEOLn, и он работал, даже если были пустые переводы строк

Вот код:

program p3;
uses crt;
var f:text;
    a:array[1..99] of integer;
    i,j:integer;

begin
 clrscr;
 assign(f,'numere.txt');
 reset(f);
 i:=0;

  while not eof(f) do begin
    if not seekeoln(f) then begin

    inc(i);
    read(f,a[i]);

    end
    else readln(f);
    end;
    for j:= 1 to i do write(a[j],' ');
    close(f);
    writeln;


  readkey
  end.

Спасибо за вашу помощь!- При чтении файла код будет проверять, находится ли курсор в конце строки, если нет, он будет читать первое число, а затем второе и так далее, пока не достигнет конца строки, а затемон будет игнорировать любые пробелы, потому что он перейдет на новую строку.Я надеюсь, что это поможет любому с этой проблемой.

...