Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Задачка для любителей математики   Найти похожие ветки 

 
Pearled   (2005-06-01 14:50) [0]

Как с помощью одного оператора типа ShowMessage(....) вывести сумму от суммы от суммы ...(и т.д. , пока не останется 1-значное число) цифр целого числа заданного в edit1.text ? Вызывать нестандартные функции, естественно, запрещается..


 
TUser ©   (2005-06-01 14:53) [1]

Нет такого оператора


 
12DFBDDh ©   (2005-06-01 14:55) [2]

Pearled   (01.06.05 14:50)  
где ты промежуточное значение будеш хранить?


 
Pearled   (2005-06-01 14:57) [3]

TUser

> Нет такого оператора

Есть

12DFBDDh

> где ты промежуточное значение будеш хранить?

Попробуйте без него обойтись..


 
Думкин ©   (2005-06-01 14:58) [4]

Это МВо ссылку даже давал. :)


 
TUser ©   (2005-06-01 15:01) [5]

> Есть

В каком языке есть оператор ShowMessage() ?


 
Pearled   (2005-06-01 15:06) [6]

Я разве сказал опреатор ShowMessage() ? Я имел в виду оператор подобного типа. Или ты хочешь сказать что строка ShowMessage(""); не является оператором?


 
TUser ©   (2005-06-01 15:10) [7]

Не является


 
КаПиБаРа ©   (2005-06-01 15:15) [8]

TUser ©   (01.06.05 15:10) [7]
Это как то влияет на решение самой задачи?
Меня всегда интересовало зачем люди, которым нечего сказать по существу вопроса начинают придираться к второстепенным моментам. Может Вы мне разъясните это?


 
MBo ©   (2005-06-01 15:16) [9]

Не надо мудрить с ShowMessage и с Edit1.Text.
Тебе нужна такая функция:
function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
?
ее тело займет одну строчку.


 
Pearled   (2005-06-01 15:24) [10]


> Тебе нужна такая функция:
> function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
> ?
> ее тело займет одну строчку.
Да, именно это я и хотел сказать.

TUser
Может это и не совсем правильно, но иногда эту конструкцию называют отператором вызова процедуры.


 
12DFBDDh ©   (2005-06-01 15:24) [11]

MBo ©   (01.06.05 15:16) [9]
Вызывать нестандартные функции, естественно, запрещается


 
12DFBDDh ©   (2005-06-01 15:26) [12]

Pearled   (01.06.05 15:24) [10]
Вызывать нестандартные функции, естественно, запрещается
это true или
function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
или это true ?


 
Pearled   (2005-06-01 15:28) [13]

MBo
Только не одну строчку, а один оператор присваивания.


 
Pearled   (2005-06-01 15:30) [14]

12DFBDDh
я так понял, что MBo не дал ответ, а просто переформулировал постановку задачи


 
Alexander Panov ©   (2005-06-01 15:33) [15]

Pearled   (01.06.05 15:30) [14]

Ничего он не переформулировал.
Сформулируй снова. Иначе ничего не понятно.


 
MBo ©   (2005-06-01 15:34) [16]

>Только не одну строчку, а один оператор присваивания.
Угу, присваиваиние будет одно. И строчка между begin-end тоже одна.


 
MBo ©   (2005-06-01 15:39) [17]

>Alexander Panov ©   (01.06.05 15:33) [15]
>Сформулируй снова. Иначе ничего не понятно.
Написать короткую функцию, принимающую целое число, и вычисляющую

while количестводесятичныхцифр(N)>1 do begin
 N:=суммецифр(N)
end

но более коротким способом


 
Pearled   (2005-06-01 15:41) [18]

Короче:
Дано число, пусть это будет x типа word. Надо найти сумму цифр от суммы цифр ... числа. Например 987 -> 9+8+7 = 24 -> 6
И это нужно вычислить в выражении, не используя нестандартные функции (стандартные можно).
То есть чтобы можно было например записать showmessage(IntToStr(...)), где ... - искомое выражение.
Надеюсь более понятно теперь объяснил.


 
TUser ©   (2005-06-01 15:52) [19]

> MBo ©   (01.06.05 15:39) [17]

function A (I: integer): integer;
begin
 if I < 10 then A:=I else A:=A((I mod 10)+A(I div 10));
end;


 
Alx2 ©   (2005-06-01 15:55) [20]

TUser ©   (01.06.05 15:52) [19]
A(-10)=-10 :)


 
jack128 ©   (2005-06-01 15:57) [21]

Pearled   (01.06.05 15:41) [18]
где ... - искомое выражение.
- вот критический момент ;)  Нужно написано выражение , вычисляющее сумму цифр, так ты описал. При этом в выражении запрещено вызывать нестандартные функции. Я правельно понял??
TUser ©   (01.06.05 15:52) [19]
function A (I: integer): integer;
begin
if I < 10 then A:=I else A:=A((I mod 10)+A(I div 10));
end;

- это не выражение.


 
SergP.   (2005-06-01 16:05) [22]

showmessage(inttostr(MyVariable mod 9));

???


 
SergP.   (2005-06-01 16:07) [23]

showmessage(inttostr(((MyVariable-1) mod 9) + 1));

???


 
Alx2 ©   (2005-06-01 16:08) [24]

SergP.   (01.06.05 16:05) [22]
а числа, кратные 9?


 
Alx2 ©   (2005-06-01 16:09) [25]

SergP.   (01.06.05 16:07) [23]

работает :)


 
Pearled   (2005-06-01 16:12) [26]

SergP

> showmessage(inttostr(((MyVariable-1) mod 9) + 1));
>
> ???
Правильно :)


 
Alx2 ©   (2005-06-01 16:14) [27]

SergP.   (01.06.05 16:07) [23]

А как доказать?


 
pasha_golub ©   (2005-06-01 16:24) [28]

Alx2 ©   (01.06.05 16:14) [27]
Это вторая теорема Ферма ;0)


 
pasha_golub ©   (2005-06-01 16:25) [29]

Alx2 ©   (01.06.05 16:14) [27]
Это вторая теорема Ферма ;0)


 
Alx2 ©   (2005-06-01 16:25) [30]

Нашел доказательство. Вопрос снят :)


 
pasha_golub ©   (2005-06-01 16:41) [31]

Alx2 ©   (01.06.05 16:25) [30]
Рассказывай :)


 
Fredericco ©   (2005-06-01 16:58) [32]

2 pasha_golub ©   (01.06.05 16:41) [31]
Это же вторая теорема Ферма! :-))))


 
Alx2 ©   (2005-06-01 16:58) [33]

pasha_golub ©   (01.06.05 16:41) [31]
Запишем число M в виде M=sum(10^k*a[k],k=0..n)
а через f(M) обозначим (M-1) mod 9 + 1;
Тогда f(M)=(M - 1) mod 9 + 1 = (sum(a[k],k=0..n) mod 9 - 1) mod 9 +1=f(sum(a[k],k=0..n))

то есть f(M) совпадает с f(сумма цифр M) = >
f(сумма цифр M) совпадает с f(сумма цифр суммы цифр M)
и т.д.

В конце убеждаемся, что f(k)=k, где k=0..9

Доказано.


 
pasha_golub ©   (2005-06-01 17:09) [34]

Fredericco ©   (01.06.05 16:58) [32]
мадаг


 
SergP ©   (2005-06-01 20:28) [35]


> Тогда f(M)=(M - 1) mod 9 + 1 = (sum(a[k],k=0..n) mod 9 -
> 1) mod 9 +1=f(sum(a[k],k=0..n))


если кому не очевидно, то добавлю:
вышеуказанное  (остаток от деления числа на 9 равен остатку от деления его суммы цифр на 9) можно получить исходя из того, что:

(k*10^n) mod 9 = k mod 9


 
Думкин ©   (2005-06-02 06:43) [36]

Ну и память однако у людев. :((
Борис как-то давал задачку и потом ссылки. Ключевая фраза: цифровой корень.



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.046 c
1-1118306575
Koala
2005-06-09 12:42
2005.06.29
В чем ошибка?


4-1115042621
Rambo
2005-05-02 18:03
2005.06.29
Права доступа


6-1112244581
Илья
2005-03-31 08:49
2005.06.29
Операционная система


3-1116490231
msguns
2005-05-19 12:10
2005.06.29
Как задать регистр в ACCESS


14-1117466187
serg1231
2005-05-30 19:16
2005.06.29
Где можно достать библиотеку WinSock2?