Помощь - Поиск - Пользователи - Календарь
Полная версия: можно ли использовать другой оператор
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Mimosa
скажите,пожалуйста можно ли решить задачу,с помощью оператора For....do?

Задача
Найти сумму цифр числа.число трехзначное.

мисс_граффити
Можно, конечно.
Поскольку известно, что число трехзначное...
Sto
Цитата(мисс_граффити @ 13.05.2007 13:40) *

Можно, конечно.
Поскольку известно, что число трехзначное...

Пожалуйста, обьясни как это сделать. Немогу придумать wacko.gif
Мне кажется так будет проще
Var
Number, st, nd, rd : Integer;
Begin
Write('Please, enter three figures -> ');
ReadLn(Number);
st := Number div 100;
nd := (Number mod 100) div 10;
rd := Number mod 10;
Write('Suma = ',st + nd + rd);
ReadLn;
End.
volvo
Точно так же, как и с While(учитывая что число - трехзначное)
  for i := 1 to 3 do begin
s := s + n mod 10;
n := n div 10;
end;

Sto
volvo отличный способ good.gif
Mimosa
я не пойму,почему так:
For i:=1 to 3 do
begin
S:=s +n mod 10;
n:=n div 10;
Sto
У тебя есть число n.
Допустим это 539.
Начинается цыкл, повторений у нас три.

1 повторение
539 mod 10 = 9, так как ближайшее целое число которое делится на 10 это 530, значит 539-530=9;
539 div 10 = 59; Div - оставляет только целую часть в результате деления. 539/10=53,9 целая часть 53.
в результате у нас S=9, a n=53;

2 Повторение
53 mod 10 = 3, так как ближайшее целое число которое делится на 10 это 50, значит 53-50=3;
53 div 10 = 5; Div - оставляет только целую часть в результате деления. 53/10=5,3 целая часть 5.
в результате у нас S=9+3=12, a n=5;

3 Повторение
5 mod 10 = 5, так как ближайшее целое число которое делится на 10 это 0, значит 5-0=5;
5 div 10 = 5; Div - оставляет только целую часть в результате деления. 5/10=0,5 целая часть 0.
в результате у нас S=12+5=17, a n=0;

Конец цыкла

Старался обьяснить понятно, а получилось как всегда smile.gif

+ Таким способом можно найти суму чисел для любого целого числа, не только 3-х значного.
Mimosa
smile.gif спасибо,но я понимаю,что Mod -целочисл.,а div-нет. но я не могу понять,почему имеено от 1 до 3,и почему мы так делаем S:=s +n mod 10;
n:=n div 10
Sto
Цитата(Mimosa @ 14.05.2007 19:51) *

почему имеено от 1 до 3,и почему мы так делаем S:=s +n mod 10;
n:=n div 10


от 1 до 3 потомучто у нас трехзначное число, тоесть нам к переменной s нужно добавить три чила.
в начале когда ты обьявляеш переменную s ее значение равно 0.
потом цыкл
1. s=s+последняя цыфра чила. И предыдущего примера s=0+9=9
n:=n div 10 мы удаляем последнюю цыфру числа n, чило от 539 до 53
2. s=s+последняя цыфра чила. Тоесть s=9+3=12
n:=n div 10 мы удаляем последнюю цыфру числа n, от 53 до 5
2. s=s+последняя цыфра чила. Тоесть s=12+5=17
n:=n div 10 мы удаляем последнюю цыфру числа n, от 5 до 0
конец цыкла
в результате у нас сумма равна 17
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.