Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 16:58   #11
fastdeath
Новичок
Джуниор
 
Регистрация: 20.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
используя только +-*/ div mod
--------
хахаха . задача жесть
Код:
WriteLn('Value ',a-(a-b)*byte(a>b),' < ',b-(b-a)*byte(a>b));
а если оптимизировать код то:
Код:
WriteLn('Value ',a-(a-b),' > ',b-(b-a));
WriteLn('Value ',a-(a-b),' > ',b-(b-a));
неверно возвращает
тут даже если скобки раскрыть - будет b >a

Последний раз редактировалось fastdeath; 20.10.2011 в 17:01.
fastdeath вне форума Ответить с цитированием
Старый 20.10.2011, 18:35   #12
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

fastdeath
во первых в условии не сказано < >
во вторых, видимо с синтаксисом паскаля сложно
Цитата:
тут даже если скобки раскрыть - будет b >a
перевожу на русский язык с Паскаля (оптимизированный вариант):

WriteLn('ЗНАЧЕНИЕ (Value)',a-(a-b),' МЕНЬШЕ (словом) ',b-(b-a));
в оптмизированном варианте < читать как текст, а не как операцию
---
П.С. по ходу у меня используется только знак "-"
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 20.10.2011 в 18:39.
JUDAS вне форума Ответить с цитированием
Старый 20.10.2011, 18:52   #13
fastdeath
Новичок
Джуниор
 
Регистрация: 20.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
fastdeath
во первых в условии не сказано < >
во вторых, видимо с синтаксисом паскаля сложно

перевожу на русский язык с Паскаля (оптимизированный вариант):

WriteLn('ЗНАЧЕНИЕ (Value)',a-(a-b),' МЕНЬШЕ (словом) ',b-(b-a));
в оптмизированном варианте < читать как текст, а не как операцию
---
П.С. по ходу у меня используется только знак "-"
Я понял , что как читать , но не понял принцип работы вашего решения .
Она выводит неверное неравенство..
fastdeath вне форума Ответить с цитированием
Старый 20.10.2011, 22:41   #14
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
var a,b,a1,b1:word;
begin
 witete('Введите два натуральных числа');
 readln(a,b);
 a1:=a div b;
 a1:=((a1+2) div (a1+1)) mod 2;
 b1:=(a1+1) mod 2;
 writeln('Число ', a*a1+b*b1,' не меньше ',a*b1+b*a1);
end.
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 20.10.2011, 23:17   #15
fastdeath
Новичок
Джуниор
 
Регистрация: 20.10.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Step_UA Посмотреть сообщение
Код:
var a,b,a1,b1:word;
begin
 witete('Введите два натуральных числа');
 readln(a,b);
 a1:=a div b;
 a1:=((a1+2) div (a1+1)) mod 2;
 b1:=(a1+1) mod 2;
 writeln('Число ', a*a1+b*b1,' не меньше ',a*b1+b*a1);
end.
офигеть , даже смотря на решение переварить не могу
респект
fastdeath вне форума Ответить с цитированием
Старый 20.10.2011, 23:40   #16
fastdeath
Новичок
Джуниор
 
Регистрация: 20.10.2011
Сообщений: 8
По умолчанию

А можете вкратце разжевать , на чём базируется решение ?
fastdeath вне форума Ответить с цитированием
Старый 21.10.2011, 00:05   #17
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

a1, b1 - принимают 0 или 1. Единица - признак большего числа
при первом вычислении
Код:
a1:=a div b;
получаем:
0 - если а1 меньше b1
>0 - если больше либо равно b1
Если >0 необходимо установить в 1, при 0 - оставить 0
Код:
a1:=((a1+2) div (a1+1)) mod 2;
в делителе к а1 прибавляем 1, чтоб не получить ошибку при делении на 0.
В результате целочисленного деления мы получаем:
=2 , если а1 =0
=1 , если a1>0 . При взятии остатка от деления 2 => 1, 1 => 1
Если мы получили a1=1 (число а больше либо равно b), то b1 необходимо присвоить 1 и наоборот, что и делаем в выражении
Код:
b1:=(a1+1) mod 2;
- с этим перемудрил ...проще
Код:
b1:=1-a1;
на неконкретные вопросы даю неконкретные ответы ...

Последний раз редактировалось Step_UA; 21.10.2011 в 00:35.
Step_UA вне форума Ответить с цитированием
Старый 21.10.2011, 10:40   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от JUDAS
Код:
WriteLn('ЗНАЧЕНИЕ (Value)',a-(a-b),' МЕНЬШЕ (словом) ',b-(b-a));
ну, введите A= 2 и B=5
Код:
   a := 2;
   b := 5;
   WriteLn('ЗНАЧЕНИЕ (Value)',a-(a-b),' МЕНЬШЕ (словом) ',b-(b-a));
получится
Цитата:
ЗНАЧЕНИЕ (Value)5 МЕНЬШЕ (словом) 2
это не так. как правильно сказали. первое условие ВСЕГДА печатает B, второе - всегда A (откройте скобки, сократите одинаковые члены и убедитесь в этом), независимо от того, что больше, что меньше...


Step_UA, Супер!

Цитата:
Сообщение от Step_UA
Код:
a1:=((a1+2) div (a1+1)) mod 2;
соль решения тут!
я вчера я крутил a div b - ноль очевидно получается, когда A меньше B, а вот когда больше, нужно получить единичку, но я так и не придумал, как получить из него единицу!
А Вы смогли.
Респект и уважуха!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два файла demiancz Общие вопросы Delphi 22 16.02.2011 15:29
Ввод с клавиатуры два целых числа без знака и вывод на экран их сумму. gelya_17 Помощь студентам 5 18.10.2010 10:31
Сравнить два файла Aleksandr Microsoft Office Excel 6 07.10.2008 00:22
Два и более условий финкции If MAKEDON Общие вопросы Delphi 7 20.01.2008 09:39