Дана строка символов до точки. Определить является ли она записью десятичного числа, кратного трем.
volvo
30.11.2005 21:14
Mitek, признак делимости на 3 помнишь? Вот и складывай до точки значения всех цифр... Если хотя бы один из символов НЕ является цифрой или сумма значений цифр НЕ делится нацело на 3, то ответ "НЕТ"... Иначе - "ДА"
hiv
30.11.2005 21:16
Критерий делимости числа на 3: сумма всех его цифр должна нацело делиться на 3. В чем твоя проблема конкретнее?
Mitek
30.11.2005 21:23
Когда пытаюсь найти сумму, то он пишет не совпадение типов, это же строка.
hiv
30.11.2005 21:33
ord('0')=48 ord('1')=49 ... ord('9')=57
Соответственно перевод цифр из символа в число: число=ord(символ)-48
Mitek
30.11.2005 21:40
Честно говоря, не очень понял, как это применить.
hiv
30.11.2005 21:56
Вот так:
program MUL;
var i,c,l :integer; s :string;
begin write('Vvedite chislo='); readln(s);
l:=1; while (l<length(s)) and (s[l] in ['0'..'9']) do inc(l);
if (s[l]='.') and (l>1) then begin c:=0; for i:=1 to l-1 do inc(c,ord(s[i])-48);
if (c mod 3)=0 then writeln('Chislo delitsja na 3.',c) else writeln('Chislo ne delitsja na 3.',c); end else writeln('Chislo vvedeno ne verno!'); end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.