Помогите, пожалуйста, решить задачу
Создать файл целых чисел. Определить суммы между локальными минимумами, записав их в новый файл.
ну с файлом все просто
type
TFile = file of integer;
...
var
f:tfile;
...
в условии задачи никакой интервал задан не был...
Так в чем проблема?
Локальный минимум - любая точка от второй до предпоследней такая, что оба ее соседа больше. Т.к. в задании употреблено слово "между", значит, сами эти локальные минимумы не включаются. Естественно, никакая окрестность (по всей видимости, именно она имелась в виду, а не интервал) к данной задаче никакого отношения не имеет.
хееелп
В чем проблема ? Пока не достигли конца файла пытаетесь читать по три значения от текущего (пользуйтесь seek), если удалось прочитать 3 значения и если второе прочитанное меньше 1-го и третьего, значит оно - лок. мин.
все наши мысли можна проверить если автор даст исходные и результируещее данные
Ну как бы файл можно заполнить и рэндомно, а потом посмотреть самим
файл итак надо заполнять рандомно...
Ну вот) Какие у самого мысли, попытки - делись ))
на счёт рандомно - я имел ввиду первоначальный файл... его я создал (с этим проблем нет)
а вот с нахождением суммы возникли проблемы
Program z1;
uses crt;
var f, f1: file of integer;
a, b, c, d, i, min, sum, k, l: integer;
begin
clrscr;
randomize;
assign (f1, 'f1.pas');
assign (f, 'f.pas');
rewrite (f);
b:=10;
for i:=1 to b do
begin
a:=random(50)+25;
write (f,a);
end;
while not eof(f) do
begin
read (f,a);
write (a:4);
end;
close (f);
l:=0;
reset(f);
i:=0;
While i<filesize(f)-4 do
begin
read (f, b, c, d);
if (c<b) and (c<d) then
begin
sum:=sum+b;
seek(f,i);
i:=i+2;
end
else if c>d then
begin
sum:=sum+b;
seek(f,i);
i:=i+1;
end
else
begin
sum:=sum+b+c;
seek(f,i);
i:=i+2;
end;
rewrite(f1);
write (f1,sum);
close (f1);
sum:=0;
end;
reset(f);
for i:=0 to filesize(f)-1 do
begin
read (f,a);
write (a:4);
end;
writeln;
reset (f1);
read (f1,a);
write (a:4);
readln;
end.
давай по порядку
все вот это
b:=10;
for i:=1 to b do
begin
a:=random(50)+25;
write (f,a);
end;
while not eof(f) do
begin
read (f,a);
write (a:4);
end;
close (f);
l:=0;
reset(f);
i:=0;
writeln('введите количество чисел ');
readln(b);
for i:=1 to b do
begin
a:=random(50)+25;
write (f,a);
write(a:4);
end;
readln; //дляя просмотра чисел, можно и не писать.
seek(f,0)
l:=0;
i:=0;
While i<filesize(f)-4 do
begin
read (f, b, c, d);
if (c<b) and (c<d) then
begin
sum:=sum+b;
seek(f,i);
i:=i+2;
end
else if c>d then
begin
sum:=sum+b;
seek(f,i);
i:=i+1;
end
else
begin
sum:=sum+b+c;
seek(f,i);
i:=i+2;
end;
rewrite(f1);
write (f1,sum);
close (f1);
sum:=0;
end;
if filesize(f)<3 then
begin
writeln('min nety');
readln;
halt;
end;
function my(a,b,c:integer):boolean;
begin
my:=false;
if (b<c) and (b<a) then my:=true
end;
i:=0;
while i<=filesize(f)-3 do
begin
read(f,a,b,c);
if my(a,b,c) then sum:=sum+b;
seek(f,i+2);
i:=i+1;
end;