Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 23.07.2010, 03:36   #1 (permalink)
пупс
Member
 
Регистрация: 22.07.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Процедуры в Паскале

Привет. ПОМОГИТЕ РЕШИТЬ ОДНУ ПРОБЛЕМУ. Вот условие программы:
Напечатать все целые числа из отрезка [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;
.......
Мне бы хотелось узнать, что именно здесь не так и как устранить эту ошибку.

Последний раз редактировалось Long Cat; 23.07.2010 в 04:41
пупс вне форума   Ответить с цитированием

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

Стоит обратить внимание на аналогичные темы

Двумерные массивы и процедуры PASCAL
Оформление процедуры с массивами
Оформить в виде процедуры. Паскаль

Старый 23.07.2010, 04:44   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Во - первых, оформляйте исходный текст программы правильно, используя тег форума code и отступы.
Во-вторых, вы пытаетесь в логическую переменную (boolean), записать целое значение (integer), что вызывает ошибку.
В-третьих, ваша процедура не решает задачу - она вычисляет сумму цифр числа, но не определяет, четная она или нет.
Long Cat вне форума   Ответить с цитированием
Старый 23.07.2010, 10:32   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от пупс Посмотреть сообщение
Привет. ПОМОГИТЕ РЕШИТЬ ОДНУ ПРОБЛЕМУ. Вот условие программы:
Напечатать все целые числа из отрезка [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.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.07.2010, 12:33   #4 (permalink)
пупс
Member
 
Регистрация: 22.07.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Процедуры в Паскале

Спасибо огромное за помощь))))
Все ошибки я учту.)))
пупс вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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