IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Типизированный файл
MayBe
сообщение 13.03.2009 19:10
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Помогите, пожалуйста, решить задачу
Создать файл целых чисел. Определить суммы между локальными минимумами, записав их в новый файл.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 15)
amega
сообщение 13.03.2009 19:55
Сообщение #2


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


ну с файлом все просто

type
TFile = file of integer;
...
var
f:tfile;
...



Цитата
Определить суммы между локальными минимумами


незнаю как по руски но какой "окіл"?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 13.03.2009 23:25
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
незнаю как по руски но какой "окіл"?

Ну уж мы то тем более не знаем, что это на русском.. Может ты имел в виду интервал, на котором нужно искать минимум?

Сообщение отредактировано: Айра - 13.03.2009 23:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 14.03.2009 16:41
Сообщение #4


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Цитата
Ну уж мы то тем более не знаем


Просто я с украин и у мну лекции на укр идут по вышке дак вспомнил определение типа лок минимуму, там типа знайдеться такий дельта окил(типа промежуткана котором расматривается).....

Цитата
Может ты имел в виду интервал

ага ток мне слово интервал роишло в голову когда прочитал сабж blum.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MayBe
сообщение 14.03.2009 17:11
Сообщение #5





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


в условии задачи никакой интервал задан не был...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 14.03.2009 19:08
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Так в чем проблема?
Локальный минимум - любая точка от второй до предпоследней такая, что оба ее соседа больше. Т.к. в задании употреблено слово "между", значит, сами эти локальные минимумы не включаются. Естественно, никакая окрестность (по всей видимости, именно она имелась в виду, а не интервал) к данной задаче никакого отношения не имеет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MayBe
сообщение 22.03.2009 14:40
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


хееелп cray.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 22.03.2009 20:59
Сообщение #8


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


В чем проблема ? Пока не достигли конца файла пытаетесь читать по три значения от текущего (пользуйтесь seek), если удалось прочитать 3 значения и если второе прочитанное меньше 1-го и третьего, значит оно - лок. мин.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 22.03.2009 21:59
Сообщение #9


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Цитата
пытаетесь читать по три значения от текущего (пользуйтесь seek)
да но после сравнения нужно на 2 значения вернутся назад, и начинать считовать с 2 елемента
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 22.03.2009 22:07
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
да но после сравнения нужно на 2 значения вернутся назад, и начинать считовать с 2 елемента


И что ? Юзая seek это не вызовет никаких трудностей с реализацией по крайней мере. Да и не надо никуда возвращаться. В каждый момент мы будем хранить номер текущего (первого в тройке) элемента.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 22.03.2009 23:16
Сообщение #11


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


все наши мысли можна проверить если автор даст исходные и результируещее данные smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 22.03.2009 23:26
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Ну как бы файл можно заполнить и рэндомно, а потом посмотреть самим smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MayBe
сообщение 23.03.2009 15:31
Сообщение #13





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


файл итак надо заполнять рандомно...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 23.03.2009 17:06
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Ну вот) Какие у самого мысли, попытки - делись ))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MayBe
сообщение 23.03.2009 22:07
Сообщение #15





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


на счёт рандомно - я имел ввиду первоначальный файл... его я создал (с этим проблем нет)
а вот с нахождением суммы возникли проблемы

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 23.03.2009 22:29
Сообщение #16


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


давай по порядку
все вот это

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;


тоесть нужно сначала провеку зделать вдруг там 2 или 1 число;
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;

и потом sum записіваеш в файл

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"