Консультация № 108249
06.11.2007, 13:37
0.00 руб.
0 5 5
Pleassss!Помогите решить эту задачу!Ну вот времени нету, а заставляют!
"С клавиатуры вводится целое число n.Выведите "0", если n равно нулю, и "1" в противном случае.Разрешается использовать только арифмитические операции."

Обсуждение

Неизвестный
06.11.2007, 14:59
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, Чабаненко Владислав Дмитриевич!
не очень понял, что имеется в виду под "использовать только арифметические операции"
ну а так, возможно, решение будет следующее:
var
chislo:integer;
begin
Write(‘Vvedite chislo: ‘);
ReadLn(chislo);
if chislo+chislo=chislo then WriteLn(‘0‘) else WriteLn(‘1‘);
readLn
end.<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Решение неверное, поскольку не соответствует условию.</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/14422 target=_blank>Gh0stik</a></b> (Профессор)
<b>• Дата редактирования:</b> 06.11.2007, 23:32</font></fieldset>
Неизвестный
06.11.2007, 17:16
общий
это ответ
Здравствуйте, Чабаненко Владислав Дмитриевич!
Видимо, использовать операцию сравнения нельзя. Тогда можно поступить так: чтобы в случае n<>0 получать единицу надо число поделить на само себя. Но, чтобы избежать деления на 0 в случае n=0, добавляем в делитель операцию n or 1 - она вернёт n при n<>0 и 1 при n=0. В вывод дбавим форматирование, чтобы не появлялось дробное число (результат деления).
<code>
var n: integer;
begin
readln (n);
writeln (‘Otv: ‘, <b>(n/(n or 1)):1:0</b>);
end.
</code>
Удачи!
Неизвестный
06.11.2007, 18:31
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, Чабаненко Владислав Дмитриевич!
Если также можно включить операцию округления, то можно использовать формулу:
int(2*n/(2*n+1)).
Касательно же ответа эксперта Verena, я думаю, что or - это логическая операция. вдобавок к тому, что она искажает число n, если оно будет четное, то оно увеличиться на единицу. :(<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Ответ неверный! Поскольку функция <b>int(x)</b> - возвращает целую часть от параметра x.
А в ответе используется формула <b>|2*n/(2*n+1)|</b> легко увидеть что результат такого вычисления будет находится в интервале [0, 1) соответственно и результат int(2*n/(2*n+1)) будет равен ТОЛЬКО НУЛЮ, что протеворечит условию задачи!</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/14422 target=_blank>Gh0stik</a></b> (Профессор)
<b>• Дата редактирования:</b> 06.11.2007, 23:23</font></fieldset>
Неизвестный
06.11.2007, 21:44
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, Чабаненко Владислав Дмитриевич!
Решил Вашу задачу используя кострукцию if then;
Смотрите код в приложении.<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Решение неверное, поскольку не соответствует условию.</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/14422 target=_blank>Gh0stik</a></b> (Профессор)
<b>• Дата редактирования:</b> 06.11.2007, 23:32</font></fieldset>

Приложение:
{108249} uses crt; var n:integer; begin clrscr; write(‘введите натуральное число n =‘); readln(n); if n=0 then writeln(0) else writeln(1); readln; end.
Неизвестный
07.11.2007, 09:50
общий
это ответ
Здравствуйте, Чабаненко Владислав Дмитриевич!

Чтож уважаемые эксперты, вот я все-таки нашел достаточно простой способ решения с использованием ТОЛЬКО арифметических операций и функции нахождения модуля числа.

<code><b>var</b> n:integer;
<b>begin</b>
   write(‘Input n=‘); read(n);
   n:=abs(n);
   writeln((2*n+1) <b>div</b> (n+1) <b>mod</b> (n+1));
<b>end.</b></code>

Легко удостоверится, что данная программа выдает результат <font color=purple><b>0</b></font> только при n=0, и <font color=purple><b>1</b></font> когда n<>0.

Good Luck!!!
Форма ответа