Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.034 c
4-1115309163
Гость_01
2005-05-05 20:06
2005.06.29
Как запустить программу и получить handle ее окна ?


14-1117275248
Igorek
2005-05-28 14:14
2005.06.29
Длительное чтение с монитора


1-1117622042
Веталь
2005-06-01 14:34
2005.06.29
Не выполняются строки кода


1-1118017641
dp200
2005-06-06 04:27
2005.06.29
OpenDialog , открытие нескольких файлов


1-1117790059
sofs
2005-06-03 13:14
2005.06.29
Как преодразовать HEX-число в символ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский