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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 17:19   #1
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию Паскаль двумерный маассив.

Есть процедуры ввод, вывод поиск минимального и заполнение нулем(nol).
Просят добавить подпрограмму сдвига. помогите добавить подпрограмму, вытащить ее из программы.
Основная
Код:
program pro1;
uses
    ob, obrabotki;
var
   masA:massiv;
   n,m:integer;
begin
     write('Введите количество строк:');
     readln(n);
     write('Введите количество столбцов:');
     readln(m);
     vvod(masA, n, m, -15);
     vivod(masA, n, m);
     nol(masA,n,m);
end.
Обработки
Код:
unit obrabotki;
interface
uses ob;
procedure vvod (var ma :massiv; an, am:integer; otric:integer);
procedure vivod (var ma:massiv; an,am:integer);
function Poiskmin (var ma:massiv; non, nom:integer):integer;
function nol (var ma :massiv; an, am :integer) :integer;
 
 
implementation
var i,j :integer;
procedure vvod (var ma:massiv; an,am:integer; otric:integer);
begin
     randomize;
         for i:=1 to an do
         for j:=1 to am do ma[i,j]:= random(50)+otric;
end;
procedure vivod (var ma:massiv; an,am:integer);
begin
     for i:=1 to an do
     begin
     for j:=1 to am do write(ma[i,j]:4);
     writeln;
end;
end;
function PoiskMin (var ma:massiv; non, nom:integer):integer;
var
n,min:integer;
begin
      n:=1;min:=ma[non,1];
   for j:=1 to nom do
      if ma[non,j]<min then
      begin
         min:=ma[non,j];
         n:=j;
      end;
Poiskmin:=n;
end;
 
function nol (var ma :massiv; an, am :integer) :integer;
var i,j:integer;
begin
   for i:=1 to an do 
   begin
      j:=am;
      while j>PoiskMin(ma,1,am) do // цикл начинаем справа налево до минимального
      begin
         ma[i,j+1]:=ma[i,j]; // сдвигаем каждый элемент вправо на 1
         j:=j-1; // передвигаемся влево
      end;
      ma[i,j+1]:=0; //когда вышли из цикла то остановились на минимальном столбце и ложим 0 в следующую ячейку
   end;
 
vivod(ma,an,am+1);  // выводим массив с учетом что на один столбец у нас больше
end;
 
end.
Руслан56 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, двумерный массив. Клишковский Павел Паскаль, Turbo Pascal, PascalABC.NET 1 13.12.2012 12:33
Двумерный массив.Паскаль. Красавчик52rus Помощь студентам 4 08.11.2012 18:59
Двумерный массив в Паскаль art.marked Помощь студентам 14 09.03.2011 12:10
Паскаль. Двумерный массив qwertyuiop12 Помощь студентам 1 19.05.2010 02:43