Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 066
от 12.12.2002, 09:40

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 114
Отправлено ответов: 306
Активность: 268.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Tancho
Статус: Начальный
Общий рейтинг: 128
[Подробней >>]
X-RayMan
Статус: Начальный
Общий рейтинг: 144.44
[Подробней >>]
Pinman
Статус: Опытный
Общий рейтинг: 149.03
URL: Программирование и заработок
[Подробней >>]
 
Ace
Статус: Доверительный
Общий рейтинг: 148.48
[Подробней >>]
Necro
Статус: Доверительный
Общий рейтинг: 111.14
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.41
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
 
Vadim
Статус: Доверительный
Общий рейтинг: 145.65
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.08
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 113. Помогите пожалуйста! Нужно написать прогу, с метками получается, но НУЖНО БЕЗ меток. Задание: Даны д... (ответов: 8)
Вопрос № 114. Доброго времени суток, уважаемые эксперты. Скажите мне, как эксперты - эксперту :). Как организовать... (ответов: 4)

Вопросов: 2, ответов: 12


 Вопрос № 113

Помогите пожалуйста!
Нужно написать прогу, с метками получается, но НУЖНО БЕЗ меток.
Задание: Даны действительные числа a, b, c, d. Если a ≤ b ≤ c ≤ d, то каждое число заменить наибольшим из них; если a > b > c > d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.
Написал без меток, но при этом выдет два ответа.
Как сделать без меток?
P.S. только не сильно заумным языком, не давно начал паскаль изучать.


Приложение:


Вопрос отправлен: 08.12.2002, 13:54
Отправитель: MadMan (madman@pisem.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tancho

Добрый день, MadMan!
Смотри в Приложению несколько видоизмененая
твоя прога!Здесь все как тебе нужно! Нет никаких меток!


Приложение:

Ответ отправлен: 11.12.2002, 12:01
Отправитель: Tancho


Отвечает X-RayMan

Доброго времени суток, MadMan!
Смотри приложение.
Зачем проверять все три условия? Тем более, что при одном из них числа не меняются. Надо проверять только те при которых эти самые числа меняютя. Т.е. условие a≤b≤c≤d, и если НЕ выполняется условие a>b>c>d.

Приложение:

Ответ отправлен: 08.12.2002, 23:26
Отправитель: X-RayMan


Отвечает Pinman

Добрый день, MadMan!
См. приложение.

Приложение:

Ответ отправлен: 08.12.2002, 21:55
Отправитель: Pinman


Отвечает Ace

Приветствую Вас, MadMan!
А что такое ? Если <=, то твоя задача решается следующим образом (см. приложение).

Приложение:

Ответ отправлен: 09.12.2002, 19:17
Отправитель: Ace


Отвечает Necro

Добрый день, MadMan!
Убери goto exit;и поставь после следующего за ним енда else вместо точки с запятой.

Ответ отправлен: 08.12.2002, 14:11
Отправитель: Necro


Отвечает Sensey

Доброе время суток, MadMan!
Держи, с минимальными исправлениями


Приложение:

Ответ отправлен: 08.12.2002, 14:13
Отправитель: Sensey


Отвечает Vadim

Доброе время суток, MadMan!
У тебя все правильно! Судя по заданию у тебя и должен два раза выводится результат :)). См. приложение, программа bol.
А вот если задание сформулировать немного по другому, например так:
Задание:
Даны действительные числа a, b, c, d.
Если a <= b <= c <= d, то каждое число заменить наибольшим из них;
ИНАЧЕ, если a > b > c > d, то числа оставить без изменения;
в противном случае все числа заменяются их квадратами.
См. приложение, программа bol1.
Т.е. все дело в том, КАК СФОРМУЛИРОВАНО ЗАДАНИЕ. Без метки ты правильно выполнил задание, с меткой - НЕ ПРАВИЛЬНО.
В твоем задании, по-логике, у тебя две отдельные проверки данных, в том задании, которое сформулировал я, проверка КАСКАДНАЯ, т.е. ЕСЛИ не выполняется первое условие, ТО проверяется второе услоие. В результате получается ответ в едиственном числе.
Теперь посмотрим формулировку задания у тебя. ЕСЛИ выполняется первое условие, ТО печатаем результат первый раз. Вне зависимости от проверки первого условия проверяем второе и ЕСЛИ оно выполняется (или не выполняеися, а оно обязательно не выполняется, если выполняется первое условие) печатаем результат второй раз. Вот такие пироги с котятами :)).


Приложение:

Ответ отправлен: 09.12.2002, 08:20
Отправитель: Vadim


Отвечает vitya

Доброе время суток, MadMan!
Просто поставь перед вторым
if (a <= b) and (b <= c) and (c <= d) then
begin
...
end
else if (a > b) and (b > c) and (c > d) then
begin
...
end
else
begin
...
end;

Ответ отправлен: 09.12.2002, 11:09
Отправитель: vitya


 Вопрос № 114

Доброго времени суток, уважаемые эксперты.
Скажите мне, как эксперты - эксперту :). Как организовать неопределенный список параметров? Например как в write - сколько введу, столько и будет.



Вопрос отправлен: 09.12.2002, 01:46
Отправитель: X-RayMan (x_rayman@vinnitsa.com)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pinman

Доброе время суток, X-RayMan!
procedure MyWrite(var val:array of byte);
var i:byte;
begin
for i:=0 to High(val) do Write(val[i]);
end;
Учти, при этом индексация ВСЕГДА начинается с 0, а максимальный номер берем с помощью High.

Ответ отправлен: 09.12.2002, 22:01
Отправитель: Pinman


Отвечает Vadim

Добрый день, X-RayMan!
Боюсь, что просто так - никак. Дело в том, что Write - это не функция, это макрос (где-то в факах по паскалю об этом прочитал :). Неопределеный список параметров (кстати, что ты имел в виду - их количество или типы?) можно реализовать посылая в качестве параметра коллекцию объектов, типа:
Function MyFunc(C: PCollection): TypeOfResult;
Как ты вероятно знаешь, в коллекцию можно помещать указатели на что угодно, не только на объекты. Это по сути своей динамический массив указателей.
Как частный случай можно использовать массив неопределенной длины:
Function MyFunc(C: array of string): TypeOfResult;
или допустим
Function MyFunc(C: array of integer): TypeOfResult;
а дальше уже проводишь обработку элементов массива от 0 до High(C).
С массивами получается проще, но они должны быть всегда одного типа, а с коллекциями - универсальнее, объекты в них могут быть многотипны.


Ответ отправлен: 09.12.2002, 05:33
Отправитель: Vadim


Отвечает Necro

Добрый день, X-RayMan!
Я где-то читал, что write - это, в принципе, макрос, и поэтому ответ на твой вопрос - никак ^_^ Но есть выход - сделай параметром массив и число n - и первые n элементов массива считай параметрами.

Ответ отправлен: 09.12.2002, 07:52
Отправитель: Necro


Отвечает Sensey

Добрый день, X-RayMan!
В Паскале через левое плечо правой ногой :)
Можно передавать только массив
например
procedure p(a:array of pointer);
begin
end;
В этом случае ты сам должен контролировать кол-во параметров, например передавать первым...
И приводить к типу тоже вручную... Или передавать однотипные параметры...
В С++ это реализовано вроде, но по другому...


Ответ отправлен: 09.12.2002, 11:44
Отправитель: Sensey



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (41)
C / C++ (30)
Perl (7)
Delphi (23)
Pascal (26)
Basic / VBA (10)
Java / JavaScript (10)
PHP (5)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (22)
"Железо" (30)
Поиск информации (12)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (14)
Юристу
Гражданское право (10)
Семейное право (3)
Трудовое право (6)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное