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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2016, 19:52   #1
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию Помогите составить процедуру - Вычислить сумму диагональных элементов квадратной матрицы

"Вычислить сумму диагональных элементов квадратной матрицы. Для ввода и вывода элементов матрицы составить процедуру, которая обеспечивает ввод элементов в виде таблицы."


На паскале
Наперед огромное спасибо
Vika2016 вне форума Ответить с цитированием
Старый 24.02.2016, 20:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вика, покажи свой код, как ты объявляешь и заполняешь исходную квадратную матрицу.

И ещё уточни, какие именно диагонали тебя интересуют? Есть главная, есть побочная.
Этих достаточно?
Потому как есть ещё и малые диагонали, параллельные главной и паралллельные побочной.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.02.2016, 21:01   #3
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вика, покажи свой код, как ты объявляешь и заполняешь исходную квадратную матрицу.

И ещё уточни, какие именно диагонали тебя интересуют? Есть главная, есть побочная.
Этих достаточно?
Потому как есть ещё и малые диагонали, параллельные главной и паралллельные побочной.

Нууу как то так.. может это и как то проще и короче записать можно..

Код:
uses
  crt;
var
  a:array[1..1000,1..1000] of real;
  i,n,j: byte;
begin
  readln(n);
  randomize;
 
  for j:=1 to n do
  begin
     for i:=1 to n do
        begin
          a[i,j]:=random(100);
          write(a[i,j]:9)
        end;
      writeln;
    end;
  
end.

Главной и побочной диагонали вполне достаточно

Последний раз редактировалось Вадим Мошев; 28.02.2016 в 00:06.
Vika2016 вне форума Ответить с цитированием
Старый 24.02.2016, 21:11   #4
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Ну, можно
Код:
sum:=0;
for i:=1 to n do
sum:=sum+a[i,i];
А для второй диагонали:
Код:
for i:=1 to n do
  for j:=n downto 1 do
      sum:=sum+a[i,j];
Кстати, код выделяйте тегом code, он решеткой помечен.
dimon_snake вне форума Ответить с цитированием
Старый 24.02.2016, 21:28   #5
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
Ну, можно
Код:
sum:=0;
for i:=1 to n do
sum:=sum+a[i,i];
А для второй диагонали:
Код:
for i:=1 to n do
  for j:=n downto 1 do
      sum:=sum+a[i,j];
Кстати, код выделяйте тегом code, он решеткой помечен.
для второй диагонали не работает что то..


Да и мне ведь процедура ко всему этому нужна
Vika2016 вне форума Ответить с цитированием
Старый 24.02.2016, 21:35   #6
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Относительно второй диагонали это да, я напутал.
Код:
k:=n+1;
for i:=1 to n do
begin
  k:=k-1;
  sum:=sum+a[i,k];
end;
В задании сказано процедура для ВВОДА и вывода, а вы генерируете числа, а не вводите их.
dimon_snake вне форума Ответить с цитированием
Старый 24.02.2016, 21:39   #7
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Код:
procedure matrix(num:integer);
var
l,m:integer;
begin
  for l:=1 to num do
  begin
    for m:=1 to num do
    begin
      a[l,m]:=Random(100)+1;
      Write(a[l,m],' ');
    end;
    Writeln;
  end;
end;
dimon_snake вне форума Ответить с цитированием
Старый 24.02.2016, 21:41   #8
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
Относительно второй диагонали это да, я напутал.
Код:
k:=n+1;
for i:=1 to n do
begin
  k:=k-1;
  sum:=sum+a[i,k];
end;
В задании сказано процедура для ВВОДА и вывода, а вы генерируете числа, а не вводите их.
нуу это да
изменить на ввод матрицы из клавиатуры вроде не трудна

остаеться процедура...
Vika2016 вне форума Ответить с цитированием
Старый 24.02.2016, 21:43   #9
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
Код:
procedure matrix(num:integer);
var
l,m:integer;
begin
  for l:=1 to num do
  begin
    for m:=1 to num do
    begin
      a[l,m]:=Random(100)+1;
      Write(a[l,m],' ');
    end;
    Writeln;
  end;
end;
А в процедуре что трудного?
Только замените
Код:
a[l,m]:=Random(100)+1
на
Код:
Readln(a[l,m]);
dimon_snake вне форума Ответить с цитированием
Старый 24.02.2016, 21:44   #10
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Цитата:
Сообщение от dimon_snake Посмотреть сообщение
Код:
procedure matrix(num:integer);
var
l,m:integer;
begin
  for l:=1 to num do
  begin
    for m:=1 to num do
    begin
      a[l,m]:=Random(100)+1;
      Write(a[l,m],' ');
    end;
    Writeln;
  end;
end;
Спасибо большое а как ее в программе поместить чтоб все работало
Vika2016 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму элементов квадратной матрицы порядка n Кот12 Общие вопросы Delphi 2 19.12.2015 10:27
Найти сумму элементов квадратной матрицы порядка n Робин Гуд Общие вопросы Delphi 1 12.12.2015 16:51
возведение в квадрат диагональных элементов квадратной матрицы (С++) anytka2k Помощь студентам 1 16.11.2011 17:00
ычислить элементы матрицы и найти сумму диагональных элементов [Паскаль] izi2000 Помощь студентам 1 03.01.2011 16:20
Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов Даня Паскаль, Turbo Pascal, PascalABC.NET 13 28.01.2009 16:53