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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 11:35   #1
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию Задачи на процедуры и функции (free pascal)

Здравствуйте. Я в паскале новичок. Не могу понять как решить следующие две задачки, вторая задачка является продолжение первой.
1.Дан двумерный массив, размерность и элементы вводятся с клавиатуры. Нужно составить главную программу и подпрограмму. В главной программе вводятся исходные данные, а также осуществляется обращение к подпрограмме и вывод результатов. Все входные данные и результаты подпрограммы передаются через параметры. В подпрограмме нужно удалить строки матрицы, которые содержат не менее трёх чётных чисел.
2.Составить модуль, который включает подпрограмму из первой задачи. В главной программе ввод исходных данных, обращение к подпрограмме и вывод результатов. Реализовать главную программу, подключив модуль.
Всем заранее спасибо
maksimum вне форума Ответить с цитированием
Старый 07.04.2012, 11:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Слегка направлю:
Код:
Обьявляем тип массива
type ta=array[1..10,1..10] of integer;
И его переменную
var a:ta;
q,w:byte;

Это процедура вывода на экран строк попадающий в условие задачи
 procedure proc(b:ta);
 var a,s,n:integer;
 begin
  for a:=1 to 10 do begin n:=0;
   Вычисляем сколько четных
   for s:=1 to 10 do if (b[a,s] mod 2)=0 then inc(n);
   Если больше 3 то на выводим на экран
   if n>=3 then continue;
   for s:=1 to 10 do write(b[a,s]:5);
  end;
 end;

begin
Наполняем массив:
 for q:=1 to 10 do begin
  for w:=1 to 10 do begin
   readln(a[q,w]);
  end;
 end;

Вызываем подпрограмму
 proc(a);
end.
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 12:06   #3
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию

Спасибо за направление, вроде понятно, сейчас попробую часть решения ко второй задачке применить.
maksimum вне форума Ответить с цитированием
Старый 16.04.2012, 09:20   #4
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию

проблема во второй задачке,точнее в модуле, когда программа обращается к модулю пишет, что модуль не может быть выполнен. подскажите что не так.
Код:
uses crt, modudal;
var a,b:ta;
i,j,k,m:byte;
 begin clrscr;
writeln('k, m:');
  readln(k,m);
writeln('vvedite massiv:');
  for i:=1 to k do
    for j:=1 to m do
   read(a[i,j]);
   proc(b);
  readkey
end.

молуль
unit modudal;
interface
type ta=array[1..10,1..10] of integer;
procedure proc(b:ta);
implementation
procedure proc;
var a,s,n:integer;
var i,j,k,m:byte;
 begin
  for a:=1 to k do
begin
n:=0;
   for s:=1 to m do
if (b[a,s] mod 2)=0 then
inc(n);
   if n>=3 then
 continue;
   for s:=1 to m do
 write(b[a,s]:5);
  end;
 end;
end.
maksimum вне форума Ответить с цитированием
Старый 16.04.2012, 14:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
пишет, что модуль не может быть выполнен
А точнее? Может ты вместо программы пытаешся модуль запускать.
И кстати - я надеюсь что тело модуля и тело программы у тебя в разных файлах?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.04.2012, 15:39   #6
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию

Цитата:
А точнее? Может ты вместо программы пытаешся модуль запускать.
И кстати - я надеюсь что тело модуля и тело программы у тебя в разных файлах?
конечно в разных файлах. я добавил к параметрам процедуры m и k, модуль заработал,только теперь выводит в массиве все нули, а в первой задаче нормально всё выводилось.я что то не так сделал?
maksimum вне форума Ответить с цитированием
Старый 16.04.2012, 18:22   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
read(a[i,j]);
proc(b);
Никто лажи не видит?
ЗАполняется один массив, а обрабатывается в процедуре другой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3 задачи в free pascal. Фрукт Фриланс 4 25.12.2011 23:21
Задачи на функции и процедуры в Turbo Pascal nick6161 Помощь студентам 2 09.11.2010 01:49
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28