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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2009, 08:43   #1
art_melnichenko
 
Регистрация: 22.01.2009
Сообщений: 6
Печаль Помогите пожалуйста с задачкой Паскаль

Тема работы - Работа с двумерными массивами
Цель работы - приобретение навыков работы с матрицами с использованием процедур. В работе необходимо максимально использовать аппарат процедур и функций.

Если элементы первой строки матрицы образуют неубывающую последовательность, то элементы главной диагонали матрицы умножить на 2, иначе – все элементы матрицы уменьшить на 5.

Желательно с комментариями к каждой строчке
art_melnichenko вне форума Ответить с цитированием
Старый 26.01.2009, 09:47   #2
NOOB
Пользователь
 
Аватар для NOOB
 
Регистрация: 01.11.2007
Сообщений: 45
По умолчанию

Объяви массив где тебе надо:
Код:
mas : array [1..10,1..10] of integer; // массив 10 на 10
Вот функция и процедуры:

Код:
function MasBool() : boolean; 
{функция вернет true, если неубывающая последовательность в первой строке матрицы, в противном случае false}
var
  i, tmp : integer;
begin
  Result:=True;
  tmp:=mas[1,1];
  for i:=2 to 10 do
  begin
    if tmp>mas[i,i] then  
{проверяем, если хоть раз неубывающая последовательность прервется, вернем false}
    begin
      Result:=False;
      Break;
    end;
  end;
end;

procedure MasBoolTrue();
{Умножает главную диагональ массива на 2}
begin
var
  i : integer;
begin
  for i:=1 to 10 do
  begin
    mas[i,i]:=mas[i,i]*2;
  end;
end;

procedure MasBoolFalse();
{Умножает все элементы массива на 5}
begin
var
  i,j : integer;
begin
  for i:=1 to 10 do
  begin
    for j:=1 to 10 do
    begin
      mas[i,j]:=mas[i,j]*5;
    end;
  end;
end;
NOOB вне форума Ответить с цитированием
Старый 26.01.2009, 09:54   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию Ваша задача - оставьте отзыв, пожалуйста :)

Код:
program capta1n;
const
 n = 3; { Размер матрицы }
type
 int = 1..n; {Границы матрицы}
 dataitem = array [int,int] of integer; {Тип матрицы}
var
 a : dataitem; {Матрица}
 i,k : int; {Счетчики}

function check ( item : dataitem ) : boolean; {Функция проверки массива на условие}
var
 j : int; {Счетчик}
begin

  check:=true; {Функция истинна до тех пор, пока не будут соблюдены условия или условия не наступят - тогда функция будет истинной}
  for j:=low(item) to high(item)-1 do {от самого нижнего индекса до верхнего}
   if item[1,j]>item[1,j+1] then {Если условие не соблюдается - функция возвращает отрицание}
   begin
     check:=false; {Отрицание}
     break {Выход из цикла}
   end

end;

procedure diag ( var item : dataitem ); {Процедура прохода массива по главной диагонали}
var
 k : int; {Счетчик}
begin
  for k:=low(item) to high(item) do item[k,k]:=2*(item[k,k]); {Умножение элементов на 2}
end;

procedure minus ( var item : dataitem ); { Процедура преобразования всего массива - уменьшение каждого элемента на 5}
var
 h,g : int; {Счетчики}
begin
  for h:=low(item) to high(item) do
   for g:=low(item) to high(item) do dec(item[h,g],5) {Процедура dec уменьшает на 5 каждый элемент массива }
end;

begin {Начало головной программы}

  writeln ('Vvedite massiv: '); {Ввод вами массива - каждое число через пробел ( в строке больше размера строки массива данные игнорируются) или ENTER}
  for i:=1 to n do
  begin
    for k:=1 to n-1 do read (a[i,k]);
    readln(a[i,n]) {Чтение последнего в строке числа}
  end;

  if check(a) then diag (a) {Если функция истинна, то выполняем умножение главной диагонали}
              else minus (a); {Если ложна - каждый элемент уменьшаем на 5}

  writeln ('Vash massiv: '); {Новый массив согласно условию задачи}
  for i:=1 to n do
  begin
    for k:=1 to n do write (a[i,k],'|');
    writeln
  end;

  readln; {<ENTER>}

end. {Конец головной программы}

Последний раз редактировалось capta1n; 26.01.2009 в 11:06.
capta1n вне форума Ответить с цитированием
Старый 26.01.2009, 10:55   #4
art_melnichenko
 
Регистрация: 22.01.2009
Сообщений: 6
Восклицание

capta1n!!!

Может я что то не так понимаю, но у меня в условии указано что если последовательность убывающая, то все элементы матрицы уменьшить на 5. А программа уменьшает на 2 . Помогите пожалуйста поправить!!!

Последний раз редактировалось art_melnichenko; 26.01.2009 в 11:00.
art_melnichenko вне форума Ответить с цитированием
Старый 26.01.2009, 11:05   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

ой - че-то я промахнулся - все лишь поменять одну цифру ну и комменты подправить
capta1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с задачкой Kold Паскаль, Turbo Pascal, PascalABC.NET 0 28.11.2008 16:33
Пожалуйста помогите с задачкой на строки kiko Паскаль, Turbo Pascal, PascalABC.NET 3 27.11.2008 18:58
Помогите с задачкой, пожалуйста! korteas Помощь студентам 6 09.10.2007 12:10
Помогите пожалуйста с задачкой Antowka Помощь студентам 1 13.06.2007 13:41