Задачка на двумерный массив...
|
|
ZimAN | Дата: Четверг, 24.04.2008, 07:00 | Сообщение # 1 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Дана прямоугольная матрица А. Составьте программу, меняющую местами заданную строку с заданным столбцом. Я тут немного написал немного, но самое главное не осилил... Code Program lab1_2_SE; uses crt; var A:array[1..10, 1..10] of integer; i, j: byte; strok, stolb :byte; str,stl:byte;
begin clrscr; repeat write ('Введите число строк матрицы (до 10):'); readln (strok); write ('Введите число столбцов матрицы (до 10):'); readln (stolb); until (strok>0) and (strok<=10) and (stolb>0) and (stolb<=10); clrscr; for i:=1 to strok do for j:=1 to stolb do begin write ('Введите элемент матрицы A[',i,',',j,'] '); readln (A[i,j]); end; clrscr; writeln; writeln ('Исходная матрица'); writeln; for i:=1 to strok do begin for j:=1 to stolb do write (A[i,j]:5); writeln; end; repeat write ('Введите номер строки'); readln (str); write ('Введите номер столбца'); readln (stl); until (str>0) and (str<=strok) and (stl>0) and (stl<=stolb); for i:=1 to strok do begin for j:=1 to stolb do
ВОТ ТУТ ДОЛЖНО БЫТЬ ТО (САМОЕ Главное)...
end; for i:=1 to strok do begin for j:=1 to stolb do write(A[i,j]:8); writeln; end; end. помогите пожалуйста...
|
|
| |
Alexander | Дата: Четверг, 24.04.2008, 07:17 | Сообщение # 2 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Вы уверены, что прямоугольная матрица? Может квадратная? А то смотрите какая штука получается: пусть матрица с одной строкой и тремя столбцами: 1 2 3 Ну вот попробуйте поменять первую строку со вторым столбцом... хотя можно выдать такое чудо: 2 1 3 0 2 0 0 3 0 Так что решайте, можем показать вам этот вариант, можете изменить условие, а можете показать на примере, если я не так понял.
Скажем дружно- нафиг нужно!
|
|
| |
ZimAN | Дата: Четверг, 24.04.2008, 08:09 | Сообщение # 3 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Покажите мне пожалуйста этот Ваш пример, а я уже как-нибудь разберусь
|
|
| |
Pavel | Дата: Четверг, 24.04.2008, 08:34 | Сообщение # 4 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (ZimAN) ВОТ ТУТ ДОЛЖНО БЫТЬ ТО (САМОЕ Главное)... хоть с вводом разобрался Ну вот и допустим, что матрица у тебя прямоугольная, следовательно заводим цикл до меньшей стороны. и получим: Code for i := 1 to min do begin c := a[m, i]; a[m, i] := a[i, k]; a[i, k] := c; end; Где min - меньшая из сторон матрицы m - переменная, обозначающая выбранную строку; k - выбранный столбец.
|
|
| |
Alexander | Дата: Четверг, 24.04.2008, 09:08 | Сообщение # 5 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Pavel предлагает тоже самое, только с сохранением размера матрицы. Мой вариант чуть длиннее(написать "сложнее" руки отказываются). Просто после этого цикла пойдёт ещё один до от меньшей до большей из сторон, в котором допишутся оставшиеся значения в строку/столбец. И вывод вам тогда надо будет делать немного иной, ведь получится квадратная матрица. P.S. 99.99%, что в условии именно квадратная матрица.
Скажем дружно- нафиг нужно!
|
|
| |
Pavel | Дата: Четверг, 24.04.2008, 18:22 | Сообщение # 6 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Alexander) P.S. 99.99%, что в условии именно квадратная матрица. скорее 60 %
|
|
| |
ZimAN | Дата: Понедельник, 28.04.2008, 19:44 | Сообщение # 7 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Quote (Alexander) Мой вариант чуть длиннее Alexander, дайте пожалуйста свой вариант кода.
|
|
| |