Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с файлом.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lyorri
Подскажите как решить задачу.Не могу понять. blink.gif

Дан файл целых чисел.Определить минимальное значение среди чисел.Определить среднее арифметическое чисел, лежащих за минимальным значением и минимальное значение заменить в файле на среднее арифметическое.

Добавлено через 5 мин.
Что смог написал. Дальше не знаю..В фигурных скобках из другой задачи.Пытался сравнивать..

program file_1;
uses
crt;
const
n=20;
var
f1:file of integer;
min,max,nmin,nmax,i,a:integer;

procedure SOZD_FILE;
begin
rewrite(f1);
for i:=1 to n do
begin
a:=random(200);
write(f1,a);
end;
close(f1);
end;

procedure VIVOD_FILE(t:string;c:byte);
begin
writeln;
writeln(t);
reset(f1);
while not eof(f1) do
begin
read(f1,a);
write(a:4);
end;
end;

BEGIN
clrscr;randomize;
assign(f1,'f1prim1.int');
SOZD_FILE;
VIVOD_FILE('Ishodniy file',1);
seek(f1,0);
{ min:=maxint;
max:=-maxint;
while not eof(f1) do
begin
read(f1,a);
if a>max then begin max:=a;
nmax:=filepos(f1)-1;
end;
if a<min then begin min:=a;
nmin:=filepos(f1)-1;
end;
end;
max:=max-min;
min:=2*min;
seek(f1,nmin);
write(f1,max);
seek(f1,nmax);
write(f1,min); }
VIVOD_FILE('File posle izmeneniya',2);
readkey;
end.
Malice
Основной кусок должен быть типа этого:
m:=maxint;  mi:=0; s:=0; n:=0;
while not (eof (f)) do begin
read (f,i);
if i<m then begin
m:=i; mi:=filepos (f); s:=0; n:=0;
end else begin
inc (n); s:=s+i; end;
end; dec (mi);

По окончании:
M-минимальное число,
S-сумма чисел после минимального,
N- их количество,
MI- индекс минимального элемента, туда записать (s div n) (если n>0 конечно..)
Lyorri
спасибо.сейчас проверю.
Lyorri
Что то никак не получается.какие-то ошибки странные выдает.Буду очень признателен,если вы напишите программку целиком.Буду разбираться от А до Я.У меня очень большие трудности со временем...и завтра сдача этой работы.
Lyorri
Ребята,помогите пожалуйста решить эту задачку.срочно надо.У меня через несколько часов сдача работы и зачета.сам разобраться не могу.
Malice
Сорри, просмотрел твои ответы..Если еще актуально, то держи:
uses crt;
var f:file of integer;
procedure create;
var i,a:integer;
begin
rewrite (f);
randomize;
for i:=1 to 10 do begin
a:=random (100);
write (f,a);
end;
close (f);
end;
procedure print;
var i:integer;
begin
reset (f); while not (eof(f)) do begin
read(f,i); write(i,' ');
end; writeln; end;

var
i,m,mi,s,n:integer;
begin
clrscr; assign (f,'test.ttt');
create; print; reset (f);
m:=maxint; mi:=0; s:=0; n:=0;
while not (eof (f)) do begin
read (f,i);
if i<m then begin
m:=i; mi:=filepos (f); s:=0; n:=0;
end else begin
inc (n); s:=s+i; end;
end;
write (m,' ', s,'/',n,'=');
if n=0 then s:=0 else s:=s div n;
writeln (s);
seek (f,mi-1); write (f,s); close(f);
print;
readln;
end.
Lyorri
поздновато конечно немного....но Всеравно СПАСИБО!сейчас проверю...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.