Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 16:37   #1
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
Смущение Целочисленная арифметика

Помогите.

Такая вот мудреная тема, а задание такое:

Дано натуральное чиcло N. Найти наибольшее число M (M>1), на которое сумма цифр в цифровой записи числа N делится без остатка. Если такого числа нет, то вывести "нет". Пример. N=12 345, M=5. Сумма цифр числа N, равная 15, делится 5.

С чего начать?
Что использовать?
Doublefaced вне форума Ответить с цитированием
Старый 21.03.2009, 16:48   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ничего мудреного.
Ищете сумму цифр исходного числа
Код:
S := 0;
while N>0 do
 begin
 S := S + N mod 10;
 N := N div 10;
 end;
Затем присваиваете M числа, на которые S делится без остатка, пока не дойдем до S.
Код:
i:=1;
M := 1;
while i<S do
 begin
 if S mod i = 0 then M:=i;
 inc(i);
 end;
И все.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.03.2009, 17:08   #3
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Вау! И это всё?
Какие типы у переменных?
Doublefaced вне форума Ответить с цитированием
Старый 21.03.2009, 17:21   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Какие типы у переменных?
Целочисленные. Для N лучше взять longint, чтобы числа подлиннее можно было использовать.
А если сделать N строкой (и потом конвертить и складывать цифры), то вообще хорошо будет. )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.03.2009, 09:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Кстати, коллеги, Вы заметили "дырку" в условии задачи?!!
(Sazary, в Вашем коде Вы её успешно обошли ;-)

Цитата:
Найти наибольшее число M (M>1)
для ЛЮБОГО числа, наибольшее число, на которое оно делится без остатка - ЭТО САМО ЧИСЛО! ;-)

p.s. безусловно, в задаче подразумевается, найти M>1 и не равное самому числу! :-)
Doublefaced, не забудьте в конце проверить, и если вычисленное M равно 1 = выдать сообщение, что "такого числа нет."
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2009, 12:55   #6
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Вроде всё написал.
Ничего не происходит.
Напишите пож - та готовую прогу, я даже задание не особо понимаю!
Doublefaced вне форума Ответить с цитированием
Старый 22.03.2009, 15:18   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вроде всё написал.
Ничего не происходит.
выкладывайте Ваши потуги - посмотрим, что у Вас не работает...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2009, 18:06   #8
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var n:longint;
s,i:integer;
begin

S := 0;
while N>0 do
begin
S := S + N mod 10;
N := N div 10;
end;

i:=1;
M := 1;
while i<S do
begin
if S mod i = 0 then M:=i;
inc(i);
end;

end.
Doublefaced вне форума Ответить с цитированием
Старый 22.03.2009, 18:10   #9
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

И что бы вы хотели увидеть в результате работы своей программы? Где вывод на экран результата?
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 22.03.2009, 19:15   #10
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var n:longint;
m,s,i:integer;
begin
write('n=');
readln(n);
S := 0;
while N>0 do
begin
S := S + N mod 10;
N := N div 10;
end;

i:=1;
M := 1;
while i<S do
begin
if S mod i = 0 then M:=i;
inc(i);
end;
writeln('i=',i);
readln(i);
end.
Так верно?
Doublefaced вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дана целочисленная прямоугольная матрица Jet-Tea Общие вопросы C/C++ 9 02.06.2010 16:41
Длинная арифметика (нужна помощь) RAVAL)) Паскаль, Turbo Pascal, PascalABC.NET 7 25.10.2008 15:13
Дана целочисленная квадратная матрица... kitty Помощь студентам 1 05.12.2007 07:40
Длинная арифметика DmT Помощь студентам 2 06.10.2007 22:43