Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Задачка на двумерный массив...
ZimANДата: Четверг, 24.04.2008, 07:00 | Сообщение # 1
Знакомый
Группа: Пользователи
Сообщений: 24
Репутация: 2
Замечания: 0%
Статус: 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.

помогите пожалуйста... cry

 
AlexanderДата: Четверг, 24.04.2008, 07:17 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Вы уверены, что прямоугольная матрица? Может квадратная?
А то смотрите какая штука получается:
пусть матрица с одной строкой и тремя столбцами:
1 2 3
Ну вот попробуйте поменять первую строку со вторым столбцом...
хотя можно выдать такое чудо:
2 1 3
0 2 0
0 3 0
Так что решайте, можем показать вам этот вариант, можете изменить условие, а можете показать на примере, если я не так понял.


Скажем дружно- нафиг нужно!
 
ZimANДата: Четверг, 24.04.2008, 08:09 | Сообщение # 3
Знакомый
Группа: Пользователи
Сообщений: 24
Репутация: 2
Замечания: 0%
Статус: Offline
Покажите мне пожалуйста этот Ваш пример, а я уже как-нибудь разберусь
 
PavelДата: Четверг, 24.04.2008, 08:34 | Сообщение # 4
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (ZimAN)
ВОТ ТУТ ДОЛЖНО БЫТЬ ТО (САМОЕ Главное)...

хоть с вводом разобрался biggrin
Ну вот и допустим, что матрица у тебя прямоугольная, следовательно заводим цикл до меньшей стороны.
и получим:
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
Репутация: 16
Замечания: 0%
Статус: Offline
Pavel предлагает тоже самое, только с сохранением размера матрицы. Мой вариант чуть длиннее(написать "сложнее" руки отказываются). Просто после этого цикла пойдёт ещё один до от меньшей до большей из сторон, в котором допишутся оставшиеся значения в строку/столбец. И вывод вам тогда надо будет делать немного иной, ведь получится квадратная матрица.
P.S. 99.99%, что в условии именно квадратная матрица.


Скажем дружно- нафиг нужно!
 
PavelДата: Четверг, 24.04.2008, 18:22 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Alexander)
P.S. 99.99%, что в условии именно квадратная матрица.

скорее 60 %
 
ZimANДата: Понедельник, 28.04.2008, 19:44 | Сообщение # 7
Знакомый
Группа: Пользователи
Сообщений: 24
Репутация: 2
Замечания: 0%
Статус: Offline
Quote (Alexander)
Мой вариант чуть длиннее

Alexander, дайте пожалуйста свой вариант кода.

 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;