Привет! Написал прогу, но она не работает (Delphi (console)).... Думаю, что ошибка где-то в конце. Задание такое: 1) прочитать массив чисел из файла(в моём случае массив чисел с названием файлы massiv.txt). 2) минимальное число увеличить на 1. 3) максимальное число уменьшить на 1. 4) полученный массив сохранить в другом файле. ругается в конце почему-то... procedure ReadArray(FileName:string; var A:array of integer; var N:integer); var f:textfile; begin AssignFile(f,FileName); Reset(f); N:=0; while not eof(f) do begin Readln(f,A[N]); N:=N+1; end; CloseFile(f); end;
procedure DecMax(var A: array of integer; N:integer); var max,j,i:integer; begin max:=a[0]; for i:=0 to N-1 do begin if a[i]>max then begin a[i]:=max; j:=i; end; end; max:=max-1; a[j]:=max; end;
procedure IncMin(var A:array of integer; N:integer); var min,j,i:integer; begin min:=a[0]; for i:=0 to N+1 do begin if a[i]<min then begin a[i]:=min; j:=i; end; end; min:=min+1; a[j]:=min; end;
procedure WriteArray(FileName:string; var A:array of integer; N:integer); var f:textfile; begin
end;
var b:array[0..10000-1] of integer; m:integer; begin ReadArray('test.txt', b, m); DecMax('test.txt', b, m); IncMin('test.txt', b, m); WriteArray('test.txt', b, m); end.
Member
Статус: Не в сети Регистрация: 13.03.2009 Откуда: Новокузнецк
ошибка у вас в ДНК шутка ))
procedure ReadArray(FileName:string; var A:array of integer; var N:integer); ... откомпилить нечем, но вроде норм.
procedure DecMax(var A: array of integer; N:integer); var max,j,i:integer; begin max:=a[0]; for i:=0 to N-1 do begin if a[i]>max then begin a[i]:=max; --- что вы здесь делаете? может быть поменять местами . скажем max:=a[i]; j:=i; end; end; max:=max-1; --- лишнее a[j]:=max; --- a[j]:=a[j]-1; (не помню как в дельфи декремент, но точно не -- ) end;
procedure IncMin(var A:array of integer; N:integer); var min,j,i:integer; begin min:=a[0]; for i:=0 to N+1 do begin if a[i]<min then begin a[i]:=min; --- аналогичная ошибка (смотри выше) j:=i; end; end; min:=min+1; --- сократи запись аналогично предидущей процедуре a[j]:=min; end;
var b:array[0..10000-1] of integer; m:integer; begin ReadArray('test.txt', b, m); DecMax('test.txt', b, m); --- неверный вызов процедуры (зачем здесь 'test.txt') IncMin('test.txt', b, m); --- неверный вызов процедуры (зачем здесь 'test.txt') WriteArray('test.txt', b, m); --- вы хотите переписать исходный файл? нет, дайте другое имя. end.
Такс, спасибо, что уделяете внимание! procedure DecMax(var A: array of integer; N: integer); var max:integer; i:integer; j:integer; begin max:=a[0]; for i:=0 to N-1 do begin if a[i]>max then begin max:=a[i]; j:=i; end; end; max:=max-1; почему лишнее? a[j]:=max; end;
procedure IncMin(var A: array of integer; N: integer);
var min:integer; i:integer; j:integer;
begin for i:=0 to N-1 do begin if a[i]<min then begin min:=a[i]; j:=i; end; end; min:=min+1; a[j]:=min; end;
procedure WriteArray(FileName: string; var A: array of integer; N: integer); var f:textfile; begin AssignFile(f, FileName); Reset(f); N:=0; while not eof(f) do begin readLN(f,A[n]); N:=N+1; end; CloseFile(f); end;
var A:array [0..10000] of integer; N:integer;
begin ReadArray('massiv.txt', a, n); DecMax('massiv.txt', ругается здесь a, n); IncMin('massiv.txt',ругается здесь a, n); WriteArray('otvet.txt', a, n); {WriteArray('massiv.txt', a, n);} readLN; end.
Не помните, как делать вставку, например, "Введите имя файла" ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения