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

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

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

> Нахождение среднего из трех чисел, хочу узнать - можно ли сделать проще
Элис
сообщение 8.10.2005 0:51
Сообщение #1


Гость






Собственно - простейшая задача: есть три целых числа и надо найти среднее из них, то есть то, которое больше одного числа и меньше другого. все числа считаем разными.
Мне это дело пока с трудом дается, ну алгоритмы всякие и вот какой у меня родился код:

if (x > y) or (x > z) then
if(x < y) or (x < z) then
writeln(x)
else
if (y > z) then
writeln(y)
else
writeln(z)
else
if (y > z) then
writeln(z)
else
writeln(y);

Вроде работает правильно, при любых комбинациях чисел. Но у меня сомнения собственно по алгоритму - может быть можно сделать как-то проще, короче, красивее, может у меня запутанный и непонятный способ, а есть гораздо более просто, но я его не вижу...
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
kent
сообщение 8.10.2005 8:07
Сообщение #2


Пионер
**

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

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


если число целое, можно вот так:

uses Crt;

var x,i : Integer;
min,max,average : Integer;
begin
Clrscr;
min := Maxint;
max := -Maxint;
WriteLn('Input number:');
for i := 1 to 3 do begin
Write('number #',i,':');
ReadLn(x);
if (x < min) then begin
if (min <> Maxint) then
average := min;
min := x;
end;
if (x > max) then begin
if (max <> - Maxint) then
average := max;
max := x;
end;
if ((average = max) or (average = min)) and
(x < max) and (x > min) then
average := x;
end;
WriteLn('Srednee: ',average,';');
ReadKey;
end.

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

Сообщений в этой теме


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

 



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