Другие языки программирования и технологии
Помогите решить задачу на Delphi
Известно, что натуральное число делится на 11, если знакопеременная сумма составляющих его цифр делится на 11. Используя этот факт, проверить делимость на 11 данного натурального N.
Доброго времени суток.
У Vic несколько не верно считается знакопеременная сумма. Вернее, она вообще не считается. Попробуйте так.
n := 1;
for i:=1 to Length(Edit1.Text) do begin
S := S + n * StrToInt(Edit1.Text[ i ]);
n := - n;
end;
И еще. Условие на равенство этой суммы нулю не надо добавлять, т. к. в этом случае и целая и дробная часть, которую возвращает функция Frac, равны тоже нулю. Правда, поскольку Frac возвращает действительное число, возможны ошибки из-за какой-нить единички в далеком знаке после запятой. Лучше проверять на меньше некоторого достаточно малого числа (допустим, одной миллионной) . Примерно так.
if Abs(Frac(S / 11) ) < 1E-6 then Caption := 'Делится! ' else Caption := Не делится! ';
А можно просто посмотреть чему равен остаток от деления суммы на 11. Вот так.
if S mod 11 = 0 then Caption := 'Делится! ' else Caption := Не делится! ';
Удачи!
У Vic несколько не верно считается знакопеременная сумма. Вернее, она вообще не считается. Попробуйте так.
n := 1;
for i:=1 to Length(Edit1.Text) do begin
S := S + n * StrToInt(Edit1.Text[ i ]);
n := - n;
end;
И еще. Условие на равенство этой суммы нулю не надо добавлять, т. к. в этом случае и целая и дробная часть, которую возвращает функция Frac, равны тоже нулю. Правда, поскольку Frac возвращает действительное число, возможны ошибки из-за какой-нить единички в далеком знаке после запятой. Лучше проверять на меньше некоторого достаточно малого числа (допустим, одной миллионной) . Примерно так.
if Abs(Frac(S / 11) ) < 1E-6 then Caption := 'Делится! ' else Caption := Не делится! ';
А можно просто посмотреть чему равен остаток от деления суммы на 11. Вот так.
if S mod 11 = 0 then Caption := 'Делится! ' else Caption := Не делится! ';
Удачи!
Виктор Клевцов
Большое спасибо!
И в чём проблема? Цифры посчитать не дано? Арифметику не проходили?
prinf ("%d %s на 11\n", N, (N % 11) ? "не делится" : "делится");
А что такое знакопеременная сумма составляющих цифр?
22 на 11 делится, а знакопеременная сумма это 2-2 что ли?
Тогда еще надо условие добавить: или ноль
319 по этому признаку делится на 11
22 на 11 делится, а знакопеременная сумма это 2-2 что ли?
Тогда еще надо условие добавить: или ноль
319 по этому признаку делится на 11
Виктор Клевцов
Я знаю, что надо добавить условие "или 0" (If Frac(s/11) = 0 or if s=0), но появляется сообщение об ошибке в строке else caption := 'Не делится!'; - Operator not applicable to this operand type.
Виктор Клевцов
А что такое знакопеременная сумма ответ здесь
Похожие вопросы
- Помогите решить задачу в Delphi срочно! буду очень благодарен.
- помогите решить задачи в delphi пожалуйста))
- Помогите плз решить задачу в Delphi.
- Помогите составить задачу в Delphi
- программисты помогите срочно задача на Delphi
- Помогите решить задачу по программированияю на delphi
- помогите пожалуйста решить задачу по Delphi
- Помогите решить задачу на Турбо паскале
- Помогите составить задачу в Delphi
- Помогите решить задачу.