Мне очень неудобно обращаться с такой простой задачей, но самостоятельно ничего не получается, а решить очень хочется. Дана матрица A(n*m). Включить в матрицу элементы новой k-той строки (1 <= L <= N). Вот что получилось, вернее не получилось.
program pr3; const q=3; var a:array[1..q,1..q] of integer; i,j,s,k,n,L:integer; begin writeln('vvedite k and n'); read(k,n); for i:=1 to q do for j:=1 to q do begin writeln('vvedite ',i,',',j,' element matrici'); read(a[i,j]); end; for j:=1 to q do begin for i:=1 to q do a[i,j]:=a[i+1,j]; writeln('vvedite k-',i,' element sroki'); if (1<=L) and (k<=n) then s:=a[n+1,j]; end; writeln(s:4); end.
.
Автор: #Time# 3.03.2007 1:30
Цитата
Включить в матрицу элементы новой k-той строки
Что ты имеешь ввиду под словом включить? Куда их включать в матрицу или по какому принципу?
Цитата
1 <= L <= N)
А L это вообще к чему?
Автор: Lena 3.03.2007 2:20
Проблема в том, что текст задачи я привела дословно. И я тоже не понимаю почему "L"? Возможно здесь опечатка. Я поняла, что в матрицу нужно вставить строку на позицию"k", где "к" задается.
Автор: мисс_граффити 3.03.2007 4:19
исхожу из
Цитата
решить очень хочется.
поэтому готовый код приводить не буду, давай разбираться вместе.
матрица, насколько я понимаю, статическая... поэтому, чтобы что-то вставить, нам нужна резервная строка - иначе будем терять информацию из последней строки. ну например:
Код
1 2 3 4 5 6 7 8 9
надо вставить вторую строчку. но матрица же не может растянуться и из 3*3 превратиться в 4*3! поэтому два пути: 1) изначачально резервировать место под 4*3:
Код
1 2 3 4 5 6 7 8 9 0 0 0
после вставки:
Код
1 2 3 2 2 2 4 5 6 7 8 9
2) терять последнюю строку, даже есть там нужная инфа:
Код
1 2 3 4 5 6 7 8 9
Код
1 2 3 2 2 2 4 5 6
выбирай, какой способ тебе нравится больше.
как бы то ни было, по сути вставка - это два процесса: 1. все строки, начиная с к, двигаем вниз. 2. в к-тую строку записываем, что нам нужно.