IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> заполнение матрицы
Insomnia
сообщение 27.12.2010 16:45
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


7 6 5 4 3 2 1
6 5 4 3 2 1 2
5 4 3 2 1 2 3
4 3 2 1 2 3 4
3 2 1 2 3 4 5
2 1 2 3 4 5 6
1 2 3 4 5 6 7
как заполнить матрицу размером n*n таким образом?
---
подскажите , от чего мне надо отталкиваться? побочную диагональ я могу заполнить еденицами, а как мне симметрично относительно их, заполнить последующими числами?!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Freedom
сообщение 27.12.2010 18:15
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


Тут у нас идёт уже Математика. Смотрим если бы у нас была матрица такого типа

j=1 j=2 j=3 j=4 j=5 j=6 j=7

i=1 1 2 3 4 5 6 7
i=2 2 1 2 3 4 5 6
i=3 3 2 1 2 3 4 5
i=4 4 3 2 1 2 3 4
i=5 5 4 3 2 1 2 3
i=6 6 5 4 3 2 1 2
i=7 7 6 5 4 3 2 1

тогда элемент a[i,j] будет иметь значение |i-j|+1

а эту матрицу нам остаётся отразить слева направо и тогда получится что

j=1 j=2 j=3 j=4 j=5 j=6 j=7

i=1 7 6 5 4 3 2 1
i=2 6 5 4 3 2 1 2
i=3 5 4 3 2 1 2 3
i=4 4 3 2 1 2 3 4
i=5 3 2 1 2 3 4 5
i=6 2 1 2 3 4 5 6
i=7 1 2 3 4 5 6 7

элемент a[i,n-j+1] будет иметь значение |i-j|+1

 for i:=1 to n do
for j:=1 to n do
a[i,n-j+1]:=abs(i-j)+1;


Сообщение отредактировано: Freedom - 27.12.2010 18:16


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Insomnia
сообщение 27.12.2010 19:39
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Код

const    n=5;  
var    a: array[1..n,1..n] of integer;    
          i,j:integer;  
begin    
writeln('vvedite massiv');    
randomize;  
  for i:=1 to n do      
   for j:=1 to n do      
  a[i,j]:=random(6);
for i:=1 to n do  
  for j:=1 to n do    
    write(a[i,j]:3);    
    writeln;  
for i:=1 to n do  
  for j:=1 to n do    
   a[i,n-j+1]:=abs(i-j)+1;      
for i:=1 to n do  
  for j:=1 to n do    
Write(a[i,j]:3);    
ReadLn
end.

вроде вот так..
если считая по главной диагонали, то
Код

const    n=5;  
var    
  a: array[1..n,1..n] of integer;  
   i,j:integer;  
begin    
writeln('vvedite massiv');    
randomize;    
for i:=1 to n do      
  for j:=1 to n do      
     a[i,j]:=random(6);  
  for i:=1 to n do    
   for j:=1 to n do      
     write(a[i,j]:3);      
     writeln;  
for i:=1 to n do    
  for j:=1 to n do    
   a[i,j]:=abs(i-j)+1;      
for i:=1 to n do    
  for j:=1 to n do    
   Write(a[i,j]:3);  
ReadLn  
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Freedom
сообщение 27.12.2010 20:09
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


 
for i:=1 to n do
for j:=1 to n do
Write(a[i,j]:3);



Write(a[i,j]:3); - тут не правильно, у вас массив типа integer, а не real поэтому write(a[i,j]);
и ещё лучше выводить
таким образом
 For i:=1 to n do begin
for j:=1 to n do Write(a[i,j],' ');
writeln;
end;


Сообщение отредактировано: Freedom - 27.12.2010 20:11


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Insomnia
сообщение 27.12.2010 20:12
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


хм, верно.
спасибо вам большое за помощь yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.12.2010 20:34
Сообщение #6


Гость






Цитата
Write(a[i,j]:3); - тут не правильно
С чего бы? У Паскаля изменился синтаксис? Или правильнее вталкивать всегда один пробел после выведенного значения, независимо от того, сколько цифр напечатано, так что-ли?

Ну, тогда попробуй заполнить матрицу 10*10 (вместо 5*5), и увидишь, что твой способ корёжит вывод данных, а write(a[i,j]:3) - нет...

Или теперь специально введенные для удобства в язык средства принято "не уметь использовать", а пользоваться нужно сомнительными самопальными заменителями?

P.S. Как же мне нравится, когда приходит человек, едва-едва знакомый с языком, и начинает налево и направо рассуждать о правильности или неправильности тех или иных конструкций...
 К началу страницы 
+ Ответить 
Freedom
сообщение 27.12.2010 21:32
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


Цитата(volvo @ 27.12.2010 20:34) *

P.S. Как же мне нравится, когда приходит человек, едва-едва знакомый с языком, и начинает налево и направо рассуждать о правильности или неправильности тех или иных конструкций...


Извиняюсь, согласен язык я знаю едва едва, но как говорится на ошибках учатся. Но вот мне интересно зачем автор темы в своих программах заполняет матрицу случайными числами?


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 10:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"