Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 12.12.2011, 14:28   #1 (permalink)
Kristi
Новичок
 
Регистрация: 01.11.2011
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Подпрограмма Pascal

Исправьте, пожалуйста...
_Для делимости числа на 9 необходимо, чтобы сумма цифр числа делилась на 9. Написать подпрограмму-процедуру проверки делимости числа N на 9 по выше указанной технологии. Если число делится, то выдать результат деления, если не делится, то выдать сообщение "Число не делится без остатка на 9". Число N вводить с клавиатуры.

Program PP;
Var M,N,S:Longint;
Procedure DELEN (N1:Real);
Begin
If (N1 mod 9=0) Then Writeln ('N=',N) Else Writeln ('chislo ne delitsja bez ostatka na 9');
End;
Begin
Writeln ('N=');
Readln(N);
S:=0;
While N<>0 Do Begin
M:=N mod 10;
N:=N div 10;
S:=S+M;
N:=S mod 9;
End;
DELEN(N);
Write(N);
End.
Kristi вне форума   Ответить с цитированием

Старый 12.12.2011, 14:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На нашем форуме уже встречались похожие топики, посмотрите их

Pascal RGR
Pascal

Старый 12.12.2011, 15:10   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Kristi Посмотреть сообщение
Исправьте, пожалуйста...
Хорошо, пожалуйста - но исправлять придется много:
1. Как же это Вы параметр процедуры задаёте в формате Real, а потом пытаетесь его целочисленно (mod) делить? Нет, не пойдет: операции div и mod определены только для целочисленных форматов (Integer, LongInt, Word, Byte).
2. При обращении к процедуре вы подставляете параметр N - но только вот ведь беда какая: это самое N в процессе выполнения подсчета суммы цифр числа успевает уменьшиться аж до нуля! Как я понимаю, подставлять надо не N, а S.
3. Очень странный вывод ответа о делимости - либо "не делится", либо само число (или сумма цифр). Не лучше ли так и написать - дескать, делится? Или не делится.
Итого:
Код:
Var
 N:Longint;
 M,S:Byte;

Procedure DELEN(N1:Byte);
Begin
 If (N1 mod 9=0) Then
  Writeln ('chislo delitsja bez ostatka na 9')
 Else
  Writeln ('chislo ne delitsja bez ostatka na 9');
End;

Begin
 Write('N= ');
 Readln(N);
 S:=0;
 While N<>0 Do
  Begin
   M:=N mod 10;
   N:=N div 10;
   S:=S+M;
  End;
 DELEN(S);
 Readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 12.12.2011, 20:18   #3 (permalink)
Kristi
Новичок
 
Регистрация: 01.11.2011
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо большое!
Kristi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:27.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.