 |
Помогите с решение данных Delphi задач. - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
24.01.2012, 15:15
|
#1
|
|
|
|
Пехотинец
|
 Регистрация: 28.06.2010
 Сообщений: 73
 Популярность: 242
 Сказал(а) спасибо: 59
Поблагодарили 30 раз(а) в 21 сообщениях
|
Помогите с решение данных Delphi задач.
1. Имеются две переменные "a" и "b" - выдать наибольшее значение не используя: if, case и while.
|
|
|
25.01.2012, 07:10
|
#2
|
|
|
|
Разведчик
|
 Регистрация: 24.01.2012
 Сообщений: 1
 Популярность: 49
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Помогите с решение данных Delphi задач.
ну если задача стоит именно так, то используй функцию max(a,b) из модуля Math. она возвращает максимальное из двух чисел и в коде не будет видно никаких if, case и while
|
|
|
25.01.2012, 10:43
|
#3
|
|
|
|
Сержант
|
 Регистрация: 20.07.2010
 Сообщений: 138
 Популярность: 26409
 Сказал(а) спасибо: 52
Поблагодарили 567 раз(а) в 198 сообщениях
|
Re: Помогите с решение данных Delphi задач.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
ну если задача стоит именно так, то используй функцию max(a,b) из модуля Math. она возвращает максимальное из двух чисел и в коде не будет видно никаких if, case и while
|
|
 |
|
 |
|
Функция Max реализована условиями:
Код:
function Max(const A, B: Integer): Integer;
begin
if A > B then
Result := A
else
Result := B;
end;
Вот мой вариант, вроде бы проще некуда.
Код:
var
max, a, b: integer;
begin
a:=10;
b:=1;
max := a * ord(a > b) + b * ord(a <= b);
end;
выполниться может только одно логическое выражение. Ord(true) = 1 | Ord(false) = 0, соответственно выражение оставляет ту из переменных, для которой выполнено условие.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось Рэйзор; 25.01.2012 в 10:46.
|
|
|
25.01.2012, 13:56
|
#4
|
|
|
|
Пехотинец
|
 Регистрация: 28.06.2010
 Сообщений: 73
 Популярность: 242
 Сказал(а) спасибо: 59
Поблагодарили 30 раз(а) в 21 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
max, a, b: integer;
begin
a:=10;
b:=1;
max := a * ord(a > b) + b * ord(a <= b);
readln;
end;
function max(const a, b: integer): Integer;
begin
if A > B then
Result := A
else
Result := B;
end.
Что я не так делаю? Не выполняется условие, да и я добавил задержку "readln;" А то быстро скрывалось...
Добавлено через 2 минуты
Мне нужно, чтоб в интерпретатор(командная строка) выдалось наибольшее значение, из этих переменных..
Последний раз редактировалось Stalkerr; 25.01.2012 в 13:59.
Причина: Добавлено сообщение
|
|
|
25.01.2012, 15:04
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 17.11.2011
 Сообщений: 7
 Популярность: 100
 Золото Zhyk.Ru: 15
 Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b,max:integer;
begin
a:=10;
b:=1;
max := a * ord(a > b) + b * ord(a <= b);
writeln(max);
readln;
end.
Добавлено через 2 минуты
все работает, только ты забыл написать writeln(max);
а строки
Код:
function max(const a, b: integer): Integer;
begin
if A > B then
Result := A
else
Result := B;
end.
ты вообще можешь убрать, они низачем
Последний раз редактировалось InFixion; 25.01.2012 в 15:06.
Причина: Добавлено сообщение
|
|
|
Пользователь сказал cпасибо:
|
|
25.01.2012, 15:53
|
#6
|
|
|
|
Сержант
|
 Регистрация: 20.07.2010
 Сообщений: 138
 Популярность: 26409
 Сказал(а) спасибо: 52
Поблагодарили 567 раз(а) в 198 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Быстро взять учебник по Паскалю и идти учить.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
01.02.2012, 10:55
|
#7
|
|
|
|
Пехотинец
|
 Регистрация: 28.06.2010
 Сообщений: 73
 Популярность: 242
 Сказал(а) спасибо: 59
Поблагодарили 30 раз(а) в 21 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b,max:integer;
begin
a:=10;
b:=1;
max := a * ord(a > b) + b * ord(a <= b);
writeln(max);
readln;
end.
А можно это как-то уменьшить, то есть заменить операторы сравнения: >, <, >=, <=
|
|
|
01.02.2012, 20:04
|
#8
|
|
|
|
Сержант
|
 Регистрация: 20.07.2010
 Сообщений: 138
 Популярность: 26409
 Сказал(а) спасибо: 52
Поблагодарили 567 раз(а) в 198 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Пжлста, можно еще и минимум найти:
Код:
max := (a+b+abs(a-b)) div 2;
min := (a+b-abs(b-a)) div 2;
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
Пользователь сказал cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 15:42.
|
 |