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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 13:16   #1
uHkBu3uTop
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию процедуры.функции

дана целочисленная квадратная матрица. Определить: 1.произведение элементов в тех строка, которые не содержат отрицательных элементов (оформить в виде функции); 2.максимум среди сумм элементов диагоналей , паралелльных главной диагонали матрици (оформить в виде процедуры); зарание прошу вас напишите программы пожалуйста, зарание спасибо
uHkBu3uTop вне форума Ответить с цитированием
Старый 13.04.2012, 14:50   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от uHkBu3uTop Посмотреть сообщение
дана целочисленная квадратная матрица. Определить: 1.произведение элементов в тех строка, которые не содержат отрицательных элементов (оформить в виде функции); 2.максимум среди сумм элементов диагоналей , паралелльных главной диагонали матрици (оформить в виде процедуры); зарание прошу вас напишите программы пожалуйста, зарание спасибо

Код:

{дана целочисленная квадратная матрица.
Определить:
1.произведение элементов в тех строка, которые не содержат отрицательных элементов (оформить в виде функции);
2.максимум среди сумм элементов диагоналей , паралелльных главной диагонали матрици (оформить в виде процедуры);
}
uses crt;
const
   maxcount = 100; // максимальное число элементов матрицы

type
Tmarix=record // структура файла
  col:integer;
  massiv:array [1..maxcount,1..maxcount] of integer;
end;

var
  m:Tmarix;

// создание матрицы
Procedure CreateMas(var a:Tmarix; col:integer);
var x,y:integer;
begin
   a.col:=col;
   for x:=1 to col do
   for y:=1 to col do a.massiv[x,y]:=-1+random(5);
end;

Procedure ViewMarix(a:Tmarix);
var x,y:integer;
begin
   for y:=1 to a.col do begin writeln;   writeln; // два пробела
   for x:=1 to a.col do
      write(a.massiv[x,y]:4,'  ');
      end;
end;

//1.произведение элементов в тех строка, которые не содержат отрицательных элементов (оформить в виде функции);

Function RowNotMinusElement(a:Tmarix;row:integer):boolean;
var x:integer;
    r:boolean;
begin
  r:=true;
  for x:=1 to a.col do begin
     if a.massiv[x,row]<0 then begin RowNotMinusElement:=false; exit; end; // если есть элемент который меньше 0 (отрицательный) то выходим и возвращаем False
  end;
  RowNotMinusElement:=r;
end;
Function MyltyRowGetUslovie(a:Tmarix):integer;
var r,x,y:integer;
    multy0:boolean;
begin
  r:=1;
  multy0:=true;
  for y:=1 to a.col do
  if RowNotMinusElement(a,y) then begin
  multy0:=false;
  for x:=1 to a.col do r:=r*a.massiv[x,y];
  end;
  if multy0 then MyltyRowGetUslovie:=0
  else MyltyRowGetUslovie:=r;
  

end;
// 2.максимум среди сумм элементов диагоналей , паралелльных главной диагонали матрици (оформить в виде процедуры);

 // расчет суммы элементов диагоналей параллельных главной
Function GetSumElement(a:Tmarix;i:integer;ShowElement:boolean):integer;
var r,x,y:integer;
begin
r:=0;
if i>0 then begin
  for x:=1 to a.col do begin
   y:=x+i;
  if (x<>y) and (x<=a.col) and (y<=a.col) then begin
  r:=r+a.massiv[x,y];
  if ShowElement then writeln('a[',x,',',y,'] = ',a.massiv[x,y])
  end;
  end;
  end
  else
  if i<0 then begin
  for y:=1 to a.col do begin
   x:=y+abs(i);
  if (x<>y) and (x<=a.col) and (y<=a.col) then begin
   r:=r+a.massiv[x,y];
  if ShowElement then writeln('a[',x,',',y,'] = ',a.massiv[x,y])
  end;
  end;end;
  GetSumElement:=r;
end;

//2.максимум среди сумм элементов диагоналей ,
// паралелльных главной диагонали матрици (оформить в виде процедуры);

Function GetMaxSumElement(a:Tmarix):integer;
var x:integer;
    indexElement:integer;
    maxSum:integer;
begin
maxSum:=GetSumElement(a,-1,false);
indexElement:=-1;
     for x:=(a.col*(-1)) to a.col do begin
     if x<>0 then
        if maxSum<GetSumElement(a,x,false) then begin
           maxSum:=GetSumElement(a,x,false);           indexElement:=x;

        end;
//        writeln(x,'  ',GetSumElement(a,x,false));
        end;

     GetMaxSumElement:=indexElement;
end;

var MaxD:integer;
begin
clrscr; // очистка экрана
// для создания файла
CreateMas(m,3); // создаем матрицу
Writeln('Исходная матрица ');
ViewMarix(m); // выводим исходную матрицу на экран
Writeln;
Writeln('1.произведение элементов в тех строка, которые не содержат отрицательных элементов равен ',MyltyRowGetUslovie(m));

MaxD:=GetMaxSumElement(m);
Writeln('2.максимум среди сумм элементов диагоналей , паралелльных главной диагонали матрици ',GetSumElement(m,maxd,false));

Writeln('Элементы ');
GetSumElement(m,MaxD,true);

end.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 13.04.2012 в 18:31.
denisbrain вне форума Ответить с цитированием
Старый 13.04.2012, 15:20   #3
uHkBu3uTop
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

а сократить ее можно как нибудь,что бы он поменьше была?
uHkBu3uTop вне форума Ответить с цитированием
Старый 13.04.2012, 16:52   #4
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

GetMaxSumElement - ошибка была исправил
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 13.04.2012, 17:53   #5
uHkBu3uTop
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

Unknown identifier

result:=true;

куда надо поставить result, вообщем что с ним делать
uHkBu3uTop вне форума Ответить с цитированием
Старый 13.04.2012, 18:27   #6
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от uHkBu3uTop Посмотреть сообщение
Unknown identifier

result:=true;

куда надо поставить result, вообщем что с ним делать
если Turbo Pascal заменить на названия функции

заменил смотри
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 13.04.2012 в 18:31.
denisbrain вне форума Ответить с цитированием
Старый 13.04.2012, 20:19   #7
uHkBu3uTop
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

спасибо за помощь(огромную) ))))
uHkBu3uTop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции и процедуры ildarkazanova Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 15:41
Процедуры и функции Настя93 Помощь студентам 2 12.10.2010 10:25
Процедуры и функции dimok5 Паскаль, Turbo Pascal, PascalABC.NET 2 10.10.2010 12:24
процедуры и функции stud3nt Паскаль, Turbo Pascal, PascalABC.NET 7 30.06.2010 19:14
Процедуры и функции hewlett Помощь студентам 1 23.05.2010 07:37