Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ можно ли использовать другой оператор

Автор: Mimosa 13.05.2007 17:20

скажите,пожалуйста можно ли решить задачу,с помощью оператора For....do?

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


Автор: мисс_граффити 13.05.2007 17:40

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

Автор: Sto 13.05.2007 18:38

Цитата(мисс_граффити @ 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 13.05.2007 18:56

Точно так же, как и с While(учитывая что число - трехзначное)

  for i := 1 to 3 do begin
s := s + n mod 10;
n := n div 10;
end;


Автор: Sto 13.05.2007 19:05

volvo отличный способ good.gif

Автор: Mimosa 14.05.2007 23:42

я не пойму,почему так:
For i:=1 to 3 do
begin
S:=s +n mod 10;
n:=n div 10;

Автор: Sto 14.05.2007 23:46

У тебя есть число 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 14.05.2007 23:51

smile.gif спасибо,но я понимаю,что Mod -целочисл.,а div-нет. но я не могу понять,почему имеено от 1 до 3,и почему мы так делаем S:=s +n mod 10;
n:=n div 10

Автор: Sto 15.05.2007 0:05

Цитата(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