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

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

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

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

Процедуры в Паскале

пупс

Новые
Регистрация
22 Июл 2010
Сообщения
14
Реакции
0
Баллы
0
Процедуры в Паскале

Привет. ПОМОГИТЕ РЕШИТЬ ОДНУ ПРОБЛЕМУ. Вот условие программы:
Напечатать все целые числа из отрезка [1,100], сумма цифр которых является четным числом. Подсчет суммы цифр числа и определение их четности оформить в процедуре (входной параметр: целое число; выходной параметр: логическая переменная)
А вот решение:
Код:
uses 
  crt;
var 
  i:integer;
function sum(a:integer):boolean;
  var 
    s:integer;
begin
  s:=0; 
  while a<>0 do 
  begin 
    s:=s+a mod 10;
    a:=a div 10;
  end;
  sum:=s;
end;
begin
  clrscr;
  for i:=1 to 100 do if not odd(sum(i)) then write(i,' ');
  readln
end.
Когда я её компилирую, мне выдается ошибка под названием НЕСООТВЕТСТВИЕ ТИПОВ, и показывает на что именно:
.......
end;
sum:=s;
end;
.......
Мне бы хотелось узнать, что именно здесь не так и как устранить эту ошибку.
 
Последнее редактирование модератором:
Во - первых, оформляйте исходный текст программы правильно, используя тег форума code и отступы.
Во-вторых, вы пытаетесь в логическую переменную (boolean), записать целое значение (integer), что вызывает ошибку.
В-третьих, ваша процедура не решает задачу - она вычисляет сумму цифр числа, но не определяет, четная она или нет.
 
Привет. ПОМОГИТЕ РЕШИТЬ ОДНУ ПРОБЛЕМУ. Вот условие программы:
Напечатать все целые числа из отрезка [1,100], сумма цифр которых является четным числом. Подсчет суммы цифр числа и определение их четности оформить в процедуре (входной параметр: целое число; выходной параметр: логическая переменная)
Программа, полностью удовлетворяющая поставленным условиям, выглядит, например, так:
Код:
uses
  crt;
var
  i:integer;
  b:boolean;
procedure sum(a:integer; var bs:boolean);
  var
    s:integer;
begin
  s:=0;
  while a<>0 do
  begin
    s:=s+a mod 10;
    a:=a div 10;
  end;
  If odd(s) then bs:=false else bs:=true;
end;
begin
  clrscr;
  for i:=1 to 100 do
   begin
    sum(i,b);
    if b then write(i,' ');
   end;
  readln
end.
 
Процедуры в Паскале

Спасибо огромное за помощь))))
Все ошибки я учту.))):)
 
Назад
Сверху