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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2012, 15:01   #1
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию Нужно исправить задачу на удаление строк двумерныого массива с использованием процедур и функций

С клавиатуры вводятся размеры двумерного массива и его элементы. Составить главную программу и подпрограмму. В главной программе ввод исходных данных, обращение к подпрограмме и вывод результатов. Все входные данные и результаты подпрограммы передаются через параметры. В подпрограмме удалить строки матрицы, содержащие не менее 3 четных чисел.
Код:
uses crt;
type ta=array[1..20,1..20] of integer;
var a:ta;
i,j,k,m:byte;
procedure proc(var b:ta;k,m:integer);
var a,s,n,k1,i,j:byte;
begin
a:=1;
k1:=k;
while a<=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
 begin
if a=k then dec(k)
 else
 begin
  for i:=a to k-1 do
 for j:=1 to m do
  b[i,j]:=b[i+1,j];
 dec(k);
end;
end
 else inc(a);
end;
if k=0 then write('Vse stroke udaleni')
else if k=k1 then write('Net strok dlya udaleniya')
else
begin
 writeln('Udaleni stroke gde ne menee 3 chetnih chisel');
 for i:=1 to k do
begin
 for j:=1 to m do
 write(b[i,j]:4);
 writeln;
end;
end;
end;
begin
clrscr;
repeat
writeln('Kolichesnvo strok I stolbcov:');
readln(k,m);
until(k in [1..20])and(m in [1..20]);
writeln('Vedite massiv:');
for i:=1 to k do
for j:=1 to m do
read(a[i,j]);
readln;
proc(a,k,m);
readkey
end.
Нужно исправит программу, чтобы вывод результатов был в главной программе. Проблема в том, что когда меняю формальные параметры и прописываю вывод результатов в главной программе, программа вообще не работает, то есть либо нули выводит либо исходный массив
maksimum вне форума Ответить с цитированием
Старый 30.04.2012, 17:42   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Вам массив то обязательно нужно передавать в подпрограмму или нет? Проще его не передавать, а работать с ним напрямую.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 30.04.2012, 18:02   #3
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию

не обязательно. здесь главное, чтобы подпрограмма выполняла свою функцию, то есть при обращении к подпрограмме, она должна удалять строки матрицы, не удовлетворяющие условию. если поможете, буду очень благодарен
maksimum вне форума Ответить с цитированием
Старый 30.04.2012, 19:38   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от maksimum Посмотреть сообщение
не обязательно. здесь главное, чтобы подпрограмма выполняла свою функцию, то есть при обращении к подпрограмме, она должна удалять строки матрицы, не удовлетворяющие условию. если поможете, буду очень благодарен
Ну вот так как-то!
Код:
uses crt;
var
  Arr:array[1..10,1..10] of Integer;
  i,j,m,n:Integer;
procedure WorkWithMatrix;
var
  kol,k:Integer;
begin
  i:=1;
  while i<=n do
  begin
    kol:=0;
    for j:=1 to m do
    begin
      if (Arr[i,j] mod 2) = 0 then
        inc(kol);
    end;
    if  kol>=3 then
    begin
      for k:=i to n do
        for j:=1 to m do
          Arr[k,j]:=Arr[k+1,j];
      Dec(n);
      Continue;
    end;
    inc(i);
  end;
end;
begin
  writeln('Vvedite parametry matricy!');
  write('n = ');
  Readln(n);
  write('m = ');
  Readln(m);
  Writeln('Vvedite elementy matricy:');
  for i:=1 to n do
    for j:=1 to m do
    begin
      write('Arr[',i,',',j,'] = ');
      readln(Arr[i,j]);
    end;
  WorkWithMatrix;
  Writeln('Result matrix:');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(Arr[i,j],' ');
    writeln;
  end;
  readln;
  Readln;
end.
Ограничил до 10 элементов!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 01.05.2012, 06:33   #5
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию

спасибо большое!
maksimum вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программы с использованием процедур и функций. E.r.r.o.r. Помощь студентам 3 23.01.2012 09:34
Составьте с использованием вспомогательных процедур и функций Анастасийка_ Помощь студентам 1 20.12.2011 14:53
Программирование с использованием процедур и функций vampir3001 Помощь студентам 2 14.12.2011 01:05
переделать задачу с использованием процедур или функций mashat99 Помощь студентам 3 08.04.2011 18:24
Программирование с использованием процедур и функций Лизонька Помощь студентам 2 25.02.2010 22:50