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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 00:37   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание подпрограмма-функция нахождения четных чисел Pascal ABC

добрый вечер, программисты. помогите, пожалуйста, написать подпрограмму-функцию.

написать подпрограмму функцию, которая проверяет, есть ли целое число четным. Если число четное, то функция должна вывести true, если нечетное - false. В главной программе организовать циклическое введение входных даных и вивод результата роботы функции.(Pascal ABC)
программирование вне форума Ответить с цитированием
Старый 02.06.2013, 00:52   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
f := (a mod 2 = 0);
Функция f получает целое число a и возвращает результат.
(Не забудьте описать саму функцию)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.06.2013, 01:03   #3
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию

спасибо, но не могли бы написать полностью как выглядит программа. Заранее, огромное спасибо, тем, кто откликнится.

спасибо, но не могли бы написать полностью как выглядит программа. Заранее, огромное спасибо, тем, кто откликнится.

спасибо, но не могли бы написать полностью как выглядит программа. Заранее, огромное спасибо, тем, кто откликнится.

Последний раз редактировалось Stilet; 02.06.2013 в 16:06.
программирование вне форума Ответить с цитированием
Старый 02.06.2013, 14:51   #4
PhoenixPC
 
Аватар для PhoenixPC
 
Регистрация: 01.06.2013
Сообщений: 6
По умолчанию

Я не проверяла, но должно работать.

Код:
const n=10;

var a: array [1..n] of integer;
    i: integer;

function F(c: integer): boolean;  
  var b:boolean;
  begin
    b:=false;
    if (с mod 2 = 0) then b:=true;
    F:=b;
    writeln(F);
  end;

Begin
  for i:=1 to n do
    readln(a[i]);
  for i:=1 to n do
    F(a[i]);
  readln;
End.
Если использовать вариант, который Вам показали выше, то функция будет выглядеть так:
Код:
function F(c: integer): boolean;  
  begin
    F:=(с mod 2 = 0);
    writeln(F);
  end;
PhoenixPC вне форума Ответить с цитированием
Старый 02.06.2013, 16:18   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
f := (a mod 2 = 0);
Все гораздо проще:
Код:
f := not odd(a);
Ужас!
Все это:
Код:
    b:=false;
    if (с mod 2 = 0) then b:=true;
    F:=b;
легко заменяется на:
Код:
    f := not odd(a);
или, как было предложено BDA:
Код:
    F:=(с mod 2 = 0);
Не следует делать явно лишних действий, в особенности, если наши "дополнения" довольно ресурсоемки. А неверно предсказанный условный переход выполняется в десятки раз дольше, чем вычисляется логическое выражение.

Не понимаю, откуда желание вместо
Код:
a := b;
писать
Код:
if b = TRUE then
  a := TRUE
else
  a := FALSE;

Последний раз редактировалось Stilet; 03.06.2013 в 17:16.
s-andriano вне форума Ответить с цитированием
Старый 02.06.2013, 16:36   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

s-andriano, ну да, можно и odd. Просто мне это показалось совсем глупо - создавать функцию, которая возвращает отрицание другой функции. А так вроде как исследуем остаток от числа - всё "цивильненько".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 03.06.2013, 16:51   #7
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию ОШИБКА "НЕВЕРНОЕ ВЫРАЖЕНИЕ"

Код:
program zd;
uses crt;

const n=10;

var a: array [1..n] of integer;
    i: integer;

function F(c: integer): boolean;
  var b:boolean;
  begin
    b:=false;
    if (ñ mod 2 = 0) then b:=true;
    F:=b;
    writeln(F);
  end;

Begin
  for i:=1 to n do
    readln(a[i]);
  for i:=1 to n do
    F(a[i]);
  readln;
End.
пишет ошибку "неверное выражение" в строке if (c mod 2=0) then b:=true (Pascal ABC)

Последний раз редактировалось Stilet; 03.06.2013 в 17:16.
программирование вне форума Ответить с цитированием
Старый 03.06.2013, 16:58   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Во-первых, с помощью экстрасенсорных способностей заявляю, что в строке if (c mod 2=0) then b:=true находится русская буква "с".
Во-вторых, Вы почему-то обратили внимание только на пост с кодом, и никакого внимания к замечаниям ниже.
В-третьих, в функции не должно быть вывода на экран, а он должен быть в цикле:
Код:
for i:=1 to n do
  writeln(a[i], ' ',F(a[i]));
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 03.06.2013, 17:00   #9
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос

Код:
program zd;
uses crt;
const n=10;

var a: array [1..n] of integer;
    i: integer;
 function F(c: integer): boolean;
  begin
    F:=not odd(a);
    writeln(F);
  end;
 Begin
  for i:=1 to n do
    readln(a[i]);
  for i:=1 to n do
    F(a[i]);
  readln;
End.
пишет "Ошибка: нельзя переобразовать выражение типа array[1..10] of integer к типу integer".(в строке F:=not odd(a) Pascal ABC
Код:
program zd;
uses crt;

const n=10;

var a: array [1..n] of integer;
    i: integer;

function F(c: integer): boolean;
  var b:boolean;
  begin
    b:=false;
    if (c mod 2 = 0) then b:=true;
    F:=b;
    writeln(F);
  end;

Begin
  for i:=1 to n do
    readln(a[i],' ',F(a[i]));
  for i:=1 to n do
    F(a[i]);
  readln;
End.
а теперь ошибка "неверное количество фактических параметров" в строке writeln(F);(когда добовляю b, то пишет тоже самое)

Последний раз редактировалось Stilet; 03.06.2013 в 17:19.
программирование вне форума Ответить с цитированием
Старый 03.06.2013, 17:13   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) Уберите вывод из функции
2) Смотрите, какие у Вас параметры у функции - от них и берите odd

Пока Вы не пытаетесь разобраться, а подставляете куски кода без понимания того, что в них написано.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограмма Procedure(Pascal ABC) Tanya-Manya Помощь студентам 2 13.03.2013 21:54
Pascal ABC вывод чисел и нахождение интервала DevilSkyS Помощь студентам 0 20.11.2012 20:54
(Pascal ABC) Функция с условиями Sanginow Помощь студентам 3 20.02.2012 19:44
до каких чисел округляет функция round в Паскале ABC& Настяyu Помощь студентам 5 28.12.2011 18:18
Pascal ABC,генератор случайных чисел Aidar9119 Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2010 16:32