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