|
Помогите с решение данных Delphi задач. - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
24.01.2012, 14:15
|
#1
|
|
|
|
Пехотинец
|
Регистрация: 28.06.2010
Сообщений: 73
Популярность: 242
Сказал(а) спасибо: 59
Поблагодарили 30 раз(а) в 21 сообщениях
|
Помогите с решение данных Delphi задач.
1. Имеются две переменные "a" и "b" - выдать наибольшее значение не используя: if, case и while.
|
|
|
25.01.2012, 06:10
|
#2
|
|
|
|
Разведчик
|
Регистрация: 24.01.2012
Сообщений: 1
Популярность: 49
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Помогите с решение данных Delphi задач.
ну если задача стоит именно так, то используй функцию max(a,b) из модуля Math. она возвращает максимальное из двух чисел и в коде не будет видно никаких if, case и while
|
|
|
25.01.2012, 09:43
|
#3
|
|
|
|
Сержант
|
Регистрация: 20.07.2010
Сообщений: 137
Популярность: 26409
Сказал(а) спасибо: 52
Поблагодарили 566 раз(а) в 197 сообщениях
|
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, соответственно выражение оставляет ту из переменных, для которой выполнено условие.
Последний раз редактировалось Рэйзор; 25.01.2012 в 09:46.
|
|
|
25.01.2012, 12: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 в 12:59.
Причина: Добавлено сообщение
|
|
|
25.01.2012, 14: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 в 14:06.
Причина: Добавлено сообщение
|
|
|
Пользователь сказал cпасибо:
|
|
25.01.2012, 14:53
|
#6
|
|
|
|
Сержант
|
Регистрация: 20.07.2010
Сообщений: 137
Популярность: 26409
Сказал(а) спасибо: 52
Поблагодарили 566 раз(а) в 197 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Быстро взять учебник по Паскалю и идти учить.
|
|
|
01.02.2012, 09: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, 19:04
|
#8
|
|
|
|
Сержант
|
Регистрация: 20.07.2010
Сообщений: 137
Популярность: 26409
Сказал(а) спасибо: 52
Поблагодарили 566 раз(а) в 197 сообщениях
|
Re: Помогите с решение данных Delphi задач.
Пжлста, можно еще и минимум найти:
Код:
max := (a+b+abs(a-b)) div 2;
min := (a+b-abs(b-a)) div 2;
|
|
|
Пользователь сказал cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 18:01.
|
|