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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2013, 11:56   #1
Sha[D]oW
Пользователь
 
Регистрация: 12.03.2013
Сообщений: 11
По умолчанию массивы-квадратная матрица

Дана квадратная матрица A(n,n). Найти сумму элементов массива, расположенных
на главной и побочной диагоналях.
никак не получается сделать эту задачу(помогите пожалуйста,если можно,то не слишком замудрённо.спасибо
Sha[D]oW вне форума Ответить с цитированием
Старый 12.03.2013, 12:44   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ввод рандомом:

Код:
randomize;
for i:=1 to n do
  for j:=1 to n do
    a[i,j]:=Random(20)-15;
Сумма главной:

Код:
s:=0;
for i:=1 to n do s:=s+a[i,i];
Сумма побочной:

Код:
s:=0;
for i:=n downto 1 do s:=s+a[i,n-i+1];
Объединяйте в один код.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 14.03.2013, 08:38   #3
Sha[D]oW
Пользователь
 
Регистрация: 12.03.2013
Сообщений: 11
По умолчанию квадратная матрица

Дана квадратная матрица A(n,n). Найти сумму элементов массива, расположенных
на главной и побочной диагоналях.само условие
Код:
const n=10;
var
a:array[1..n,1..n] of integer;
s,i,j:integer;
begin
randomize;
for i:=1 to n do
  for j:=1 to n do
    a[i,j]:=Random(20)-15;
    begin
    s:=0;
      for i:=1 to n do s:=s+a[i,i];
 begin
  s:=0;
  for i:=n downto 1 do s:=s+a[i,n-i+1]
дальше должен идти вывод массива,или я в данном коде уже что то напутал?подскажите пожалуйста,если вывод,то как?как то так?


Код:
begin
for i:=1 to n do;
for j:=1 to n do;
write(a[i,j],' ');
writeln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.03.2013 в 09:05.
Sha[D]oW вне форума Ответить с цитированием
Старый 14.03.2013, 08:59   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
 bеgin 
for i:=1 to n do begin
  for j:=1 to n do write(a[i,j]:3,' ');
  writeln;
end;
end.
Красное - убрать. a[i,j]:3 - цифра означает форматирование (сколько знаков на экране отведено под число)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 14.03.2013 в 09:03.
Sciv вне форума Ответить с цитированием
Старый 14.03.2013, 09:07   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sha[D]oW, во-первых, не надо создавать новую тему, если у Вас уже одна такая же есть - в ней и продолжайте!
во-вторых, могли бы и поблагодарить Sciv за помощь в виде кода.

в-третьих, у вас в циклах ненужные точки с запятой, которые ЗАКРЫВАЮТ (обрывают цикл)
нужно выводить матрицу вот так:
Код:
  for i:=1 to n do 
  begin
     for j:=1 to n do
          write(a[i,j],' ');
     writeln;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2013, 09:14   #6
Sha[D]oW
Пользователь
 
Регистрация: 12.03.2013
Сообщений: 11
По умолчанию

1)я думал,что раз в теме уже ответили,то её никто не будет читать(я недавно на данном форуме)2)мне бы хотелось поблагодарить Sсiv'a,но я не нашел как отправить л/с.3)впредь буду следить,как создавать темы.спасибо
Sha[D]oW вне форума Ответить с цитированием
Старый 14.03.2013, 09:17   #7
Sha[D]oW
Пользователь
 
Регистрация: 12.03.2013
Сообщений: 11
По умолчанию

Код:
const n=10;
var
a:array[1..n,1..n] of integer;
s,i,j:integer;
begin
randomize;
for i:=1 to n do
  for j:=1 to n do
    a[i,j]:=Random(20)-15;
    begin
    s:=0;
      for i:=1 to n do s:=s+a[i,i];
 begin
  s:=0;
  for i:=n downto 1 do s:=s+a[i,n-i+1];
  begin
   for i:=1 to n do
  begin
     for j:=1 to n do
          write(a[i,j],' ');
     writeln;
  end;
end;
end;
end;
end.
получилась данная программа,но почему она не считает сумму?где ошибка?
Sha[D]oW вне форума Ответить с цитированием
Старый 14.03.2013, 09:20   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Во второй теме ответил, далее буду продолжать здесь. Дублировать то сообщение не буду, так как Сергей уже один в один ответил

Теперь по коду: у Вас сам код неправильно объединен. Begin'ы непонятно от каких фонарей расставлены, end'ов к ним вообще не хватало сначала. Теперь вроде исправили, но если честно - все эти begin-end там не нужны. Выводов сумм на экран тоже нет - смысл самого условия задачи из-за этого теряется: зачем вычислять, если не видишь результата?

Код:
var
a:array[1..n,1..n] of integer;
s,i,j:integer;
begin
 randomize;
 for i:=1 to n do
  for j:=1 to n do
    a[i,j]:=Random(20)-15;

 s:=0;
 for i:=1 to n do s:=s+a[i,i];
 WriteLn('Сумма на главной диагонали: ',s:3);

 s:=0;
 for i:=n downto 1 do s:=s+a[i,n-i+1];
 WriteLn('Сумма на побочной диагонали: ',s:3);

 for i:=1 to n do begin
  for j:=1 to n do  write(a[i,j],' ');
   writeln;
 end;

end.
И еще - я думаю, вывод матрицы нужно делать до вычисления сумм - для наглядности.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 14.03.2013 в 09:26.
Sciv вне форума Ответить с цитированием
Старый 14.03.2013, 09:25   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Svic, я перенёс Ваш ответ в данную тему (слил две темы в одну..)


Цитата:
но почему она не считает сумму
попытайтесь разобраться в предложенном вами коде.
Найти, где же считается сумма..
Цитата:
Код:
  s:=0;
      for i:=1 to n do s:=s+a[i,i];
....
  s:=0;
  for i:=n downto 1 do s:=s+a[i,n-i+1];
потом подумать, что нужно, для того, чтобы сумма не только посчиталась, но и результат куда-то вывелся (например, это можно сделать с помощью оператора вывода на консоль WriteLn ... )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2013, 09:27   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Svic, я перенёс Ваш ответ в данную тему (слил две темы в одну..)
Спасибо. А то за двумя темами смотреть - что ни в одной не участвовать.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадратная матрица D|Frost| Общие вопросы C/C++ 4 05.07.2011 16:39
Квадратная матрица. Mariaa Помощь студентам 8 16.04.2011 13:41
Квадратная матрица arhan Общие вопросы Delphi 3 22.06.2010 09:44
квадратная матрица DartDayring Общие вопросы C/C++ 3 13.03.2010 13:36
Массивы, квадратная матрица(срочно, через день зачёт!) Lexeres Общие вопросы C/C++ 2 29.12.2009 00:41