Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2015, 15:06   #1
roman0495
Новичок
Джуниор
 
Регистрация: 11.05.2015
Сообщений: 2
По умолчанию Неправильный тип параметров подпрограммы split

Не могу понять в чем ошибка
Код:
type
   index=record
      L:char;
      P:integer;
    end;
 
var
  idx:array[1..1000] of index;
  ti:index;
  f:text;
  s:array [0..50] of string;
  t,a:string;
  i,n,j,m,y:integer;
  b:boolean;
 
procedure split(delimeter:string;s:string;var sr:array of string;var count:integer);
var
  i:integer;
  t:string;
procedure additem;
begin
 if t<>'' then begin
  inc(count);
  sr[count-1]:=t;
  t:='';
 end;
end;
begin
  count:=0;t:='';
  for i:=1 to length(s) do
    if pos(s[i],delimeter)=0 then t:=t+s[i] else additem;
    additem;
end;
 
function str2int(s:string):integer;
var
  c,r:integer;
begin
  Val(s,r,c);
  str2int:=r;
end;
 
procedure printNline(var vf:text;n:integer);
var
  t:string;
begin
  reset(vf);
  for n:=1 to n do readln(vf,t);
  writeln(t);
  close(vf);
end;
 
begin
  assign(f,'books.txt');
  reset(f);
  i:=0;
  b:=false;
  write('Введите фамилию автора:');readln(a);
  writeln('Список книг автора "',a,'" за период с 1960 по 1980гг:');
  while not eof(f) do begin
    readln(f,t);
    m:=m+1;
    split(' ',t,s,n);
    idx[m].L:=s[0][1];
    idx[m].P:=m;
     y:=str2int(s[n-1]);
     if (a=s[0]) and ((y>=1960) and (y<=1980)) then begin writeln(t);b:=true;end;
  end;
  close(f);
    if not (b) then writeln('Ничего не найдено:');
  readln;
  for i:=1 to m-1 do
    for j:=i to m do
      if idx[i].L>idx[j].L then begin
        ti:=idx[i];idx[i]:=idx[j];idx[j]:=ti;
      end;
  writeln('Список книг, упорядоченный по первой букве:');
  j:=0;
  for i:=1 to m do begin
    j:=j+1;
    if j=23 then begin writeln('Нажмите "Enter" для продолжения...');j:=1;readln;end;
    printNline(f,idx[i].P);
  end;
  readln;
end.

Последний раз редактировалось Stilet; 13.10.2015 в 17:11.
roman0495 вне форума Ответить с цитированием
Старый 13.10.2015, 17:46   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

roman0495, задавая вопрос, всегда поясняйте для какого диалекта Паскаля у вас "ошибка". Этот код нормально отрабатывает в fpc. В pabc.net действительно выдает такую ошибку. Как ее исправить, вам уже показали.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не правильный тип параметров подпрограммы Tpogih Помощь студентам 4 29.05.2014 17:44
Функции с переменным количеством параметров. Функция, как тип данных. Кудаив Помощь студентам 0 27.05.2012 14:21
PostMessage и тип Integer параметров WParam/LParam 3D Hunter Общие вопросы Delphi 3 20.09.2011 22:24
Split(); Alex_sim Общие вопросы .NET 2 08.05.2010 20:03