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

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

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

 
 Ответить  Открыть новую тему 
> Матрица и наддиагональные элементы, Помогите... Завтра сдавать лабу... Фак читал, не помогло...
denisege
сообщение 12.01.2009 21:53
Сообщение #1





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

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


Всем привет!
В общем, такая проблемка sad.gif не могу решить задачу на матрицу. Скидываю картинку (фото задания, весит мало!)
Случай не тот, который описан в faq... Пожалуйста, помогите... Я просто в растерянности wacko.gif
Ну и напоследок выложу свои потуги smile.gif Я даже не думал выводить элементы, я просто заполнял массив и печатал его на экран, дабы отследить визуально последовательность выбора... Ну тупой я, тупой... mega_chok.gif

const n=9;
type arr=array[1..n,1..n] of integer;
var x:integer;
var mas:arr;

procedure diag (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[i+(sdv*2),i+sdv]:=1;
end;
end;

procedure hor (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[1+sdv,1+i+(sdv*2)]:=2;
end;
end;

procedure vert (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[i+sdv,n-sdv]:=3;
end;
end;

procedure draw;
var dn,dm:integer;
begin
for dn:=1 to n do begin
for dm:=1 to n do begin
write (mas[dn,dm],'');
end;
writeln;
end;
end;

BEGIN
for x:=0 to 0 do begin
diag(x); hor(x); vert(x);
end;
draw;
readln;
END.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.01.2009 23:11
Сообщение #2


Гость






Цитата
Случай не тот, который описан в faq
Практически тот же случай... Чуть-чуть поправить надо было:
const
n = 6;
above = ((sqr(n) - n) div 2) + n;

type arr = array[1..n,1..n] of integer;
const a: arr = (
( 1, 2, 3, 4, 5, 6),
(11, 12, 13, 14, 15, 16),
(21, 22, 23, 24, 25, 26),
(31, 32, 33, 34, 35, 36),
(41, 42, 43, 44, 45, 46),
(51, 52, 53, 54, 55, 56)
);

var i, j, k, count: integer;
BEGIN
i := n; j := n;
count := 1;

for k := 0 to n div 2 do begin
while (count <= above) and (i > k) and (j > k) do begin
write(a[i, j]:4); dec(i); dec(j); inc(count)
end;
inc(i); inc(j);
inc(j);

while (count <= above) and (j <= n - k) do begin
write(a[i, j]:4); inc(j); inc(count)
end;
dec(j);
inc(i);

while (count <= above) and (i < n - k) do begin
write(a[i, j]:4); inc(i); inc(count)
end;
dec(i);
dec(i); dec(j);
end;
readln;
END.
 К началу страницы 
+ Ответить 

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

 



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