• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Подпрограмма Pascal

  • Автор темы Автор темы Kristi
  • Дата начала Дата начала

Kristi

Ученик
Регистрация
1 Ноя 2011
Сообщения
11
Реакции
0
Баллы
0
Подпрограмма 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.
 
Исправьте, пожалуйста...
Хорошо, пожалуйста - но исправлять придется много:
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.
 
спасибо большое!
 
Назад
Сверху