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

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

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

> Типизированные файлы
mfractus
сообщение 4.03.2011 22:42
Сообщение #1


Новичок
*

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

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


Доброго времени суток! Прошу помощи в решении задачи. Заранее спасибо!

Текст задачи.

Сформировать файл G. Определить сумму и произведение наибольшего и наименьшего из значений компонент. Заменить значением суммы первую и последнюю компоненты, а на значение произведения – увеличить каждую третью компоненту файла. Файл вывести до и после преобразования.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 5.03.2011 13:57
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Интересно, как иногда совсем несложный вопрос становится интересным предметом для обсуждения.. smile.gif

Во-первых, должен признать, что вот тут:
Цитата(Lapp @ 5.03.2011 11:43) *
(Добавлено: ) хотя, else я все же оставил бы..
- я снова ощибся. Если вносить чтение первого элемента в цикл, то ELSE применять нельзя. Извиняюсь. Но это наводит на другие мысли (см. ниже)..

Цитата(TarasBer @ 5.03.2011 12:18) *
Для целых чисел можно обойтись -MaxInt-1, а для вещественных или строк или ещё чего придётся уже делать иначе. Но выносить первый элемент наружу всё равно не надо.
first := true;
while not Eof(f) do begin
read(f, buf);

if (buf > Max) or first then begin
first := false;
Max:=buf;
Imax:=i;
end;

if (buf < Min) or first then begin
first := false;
Min:=buf;
Imin:=i;
end;

end;

А мне не нравится добавление новой (логической) переменной и проверка ее на каждом проходе цикла..

Короче, я повторюсь, что в первом моем фрагменте кода есть ошибка, и ее необходимо исправить. Предложено два варианта, но в обоих есть некоторый недостаток - трата времени в цикле. Если мой код подправить вот так:
  reset(f);
if not eof(f) then begin
read(f,min);
max:= min;
while not eof(f) do begin
read(f,a);
if a<min then min:=a else if a>max then max:=a
end;
{обработка результатов}
end
else writeln('файл пуст');

- то, может, с потерей элегантности, исполняться он будет более эффективно smile.gif. Лишний код - не всегда лишняя работа (компьютера) smile.gif. И не надо забывать, что после нахождения макс и мин все равно придется обрабатывать ситуацию с пустым файлом при обработке результатов (см. задание). А в этом варианте она обрабатывается за один раз..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
mfractus   Типизированные файлы   4.03.2011 22:42
volvo   "Помощь" и "Получение готового кода...   4.03.2011 22:47
mfractus   "Помощь" и "Получение готового код...   4.03.2011 22:53
mfractus   Вот что еще написал. read(F,Min); write...   4.03.2011 23:37
Lapp   Просьба использовать теги! Правила Форума, п.5...   5.03.2011 6:34
mfractus   Спасибо за ответ! Да, два куска соединить. Вот...   5.03.2011 11:03
volvo   При чем тут, где стоит Read? Как только дойдешь до...   5.03.2011 11:13
Lapp   Зато ошибки не будет. Совершенно согласен, +1. Сгл...   5.03.2011 11:43
TarasBer   > Возник вопрос, read(F,buf); тоже стоит после ...   5.03.2011 11:43
TarasBer   > За что ей такая честь, быть прочитанной отдел...   5.03.2011 12:18
Lapp   Интересно, как иногда совсем несложный вопрос стан...   5.03.2011 13:57
TarasBer   > - то, может, с потерей элегантности, исполнят...   5.03.2011 14:16
mfractus   Спасибо всем, кто принял участие в дискуссии! ...   5.03.2011 16:51
mfractus   Вот что получилось, но где то ошибка, точнее код -...   5.03.2011 19:08


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

 



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