Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2008, 22:09   #1
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию Программирование операций обработки двумерных массивов

С клавиатуры вводитя произвольная матрица (не более 5*5), после чего делается её контрольный вывод. В заданом столбце матрицы заменить порядок следования элементов на обратный.

Код:
Program kz5;
Uses crt;
Const M=5;
      N=5;
Var A: array[1..M,1..N] of real;
    C: array[1..M] of real;
    P,I:1..M;
    Q,J:1..N;
Begin
 Clrscr;
 Write('BBedite razmernost matricy ne bolee 5*5: ');
 Readln(P,Q);
 Writeln('BBedite elementy matricy:');
 For I:=1 to P do 
  For J:=1 to Q do
  Begin
   Write('A[',I: 1,',',J: 1,']=');
   Readln(A[I,J])
  End;
 Writeln('Kontrolnyi Byvod matricy: ');
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
Я тут начал, но никак не пойму как в заданом столбце матрицы заменить порядок следования элементов на обратный? Помогите, пожалуйста.

Последний раз редактировалось Дима82; 11.05.2008 в 22:37.
Дима82 вне форума Ответить с цитированием
Старый 12.05.2008, 00:42   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Находишь столбец, запоминаешь его индекс. А потом делаешь цикл по строкам, а номер столбца=тот который ты запомнил. Только цикл не от 1 до M а от M до 1. Всего-то.
MaTBeu вне форума Ответить с цитированием
Старый 12.05.2008, 13:31   #3
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Ну, я это примерно понимаю, а вот реализация хромает(опыта маловато), как это должно выглядить?
Дима82 вне форума Ответить с цитированием
Старый 12.05.2008, 14:14   #4
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

f:=m div 2; - действие необходимо, чтобы он в обратном направлении не перемещал. Т.е. отбираем только до середины столбца.
for i:=1 to f do
begin
zam:=a[i,3];
a[i,3]:=a[m-(i-1),3];
a[m-(i-1),3]:=zam;
end;
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 12.05.2008, 15:01   #5
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Код:
Program kz5;
Uses crt;
Const M=5;
      N=5;
Var A: array[1..M,1..N] of real;
    C: array[1..M] of real;
    zam:real;
    P,I:1..M;
    Q,J:1..N;
Begin
 Clrscr;
 Write('BBedite razmernost matricy ne bolee 5*5: ');
 Readln(P,Q);
 Writeln('BBedite elementy matricy:');
 For I:=1 to P do
  For J:=1 to Q do
  Begin
   Write('A[',I: 1,',',J: 1,']=');
   Readln(A[I,J])
  End;
 Writeln('Kontrolnyi Byvod matricy: ');
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 P:=m div 2;
 For I:=1 to P do
 Begin
 zam:=A[I,3];
 A[I,3]:=A[M-(I-1),3];
 A[M-(I-1),3]:=zam;
 end;
End.
Вот сделал, но не выходит на экран эта замена. В чём ошибка?
Дима82 вне форума Ответить с цитированием
Старый 12.05.2008, 15:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В том что ты не прописал код вывода на экран замененного массива
Вот перед последним эндом пропиши свое
Код:
For I:=1 to P do   
 Begin   
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);   
  Writeln;   
 End;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2008, 15:18   #7
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Код:
Program kz5;
Uses crt;
Const M=5;
      N=5;
Var A: array[1..M,1..N] of real;
    C: array[1..M] of real;
    zam:real;
    P,I:1..M;
    Q,J:1..N;
Begin
 Clrscr;
 Write('BBedite razmernost matricy ne bolee 5*5: ');
 Readln(P,Q);
 Writeln('BBedite elementy matricy:');
 For I:=1 to P do
  For J:=1 to Q do
  Begin
   Write('A[',I: 1,',',J: 1,']=');
   Readln(A[I,J])
  End;
 Writeln('Kontrolnyi Byvod matricy: ');
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Writeln('Zamena: ');
 P:=m div 2;
 For I:=1 to P do
 Begin
 zam:=A[I,3];
 A[I,3]:=A[M-(I-1),3];
 A[M-(I-1),3]:=zam;
 end;
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Readln
End.
Не проиходит замена... Что делать?
Дима82 вне форума Ответить с цитированием
Старый 12.05.2008, 16:11   #8
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Цитата:
For I:=1 to P do
For J:=1 to Q do
у тебя конечное количество строк уже не M, а P. Поменяй переменные.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 12.05.2008, 16:31   #9
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Поменял ничего не происходит... Может, какая-то другая ошибка.

Код:
Program kz5;
Uses crt;
Const M=5;
      N=5;
Var A: array[1..M,1..N] of real;
    C: array[1..M] of real;
    zam:real;
    P,I:1..M;
    Q,J:1..N;
Begin
 Clrscr;
 Write('BBedite razmernost matricy ne bolee 5*5: ');
 Readln(P,Q);
 Writeln('BBedite elementy matricy:');
 For I:=1 to P do
  For J:=1 to Q do
  Begin
   Write('A[',I: 1,',',J: 1,']=');
   Readln(A[I,J])
  End;
 Writeln('Kontrolnyi Byvod matricy: ');
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Writeln('Zamena: ');
 P:=m div 2;
 For I:=1 to P do
 Begin
 zam:=A[I,3];
 A[I,3]:=A[P-(I-1),3];
 A[P-(I-1),3]:=zam;
 end;
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Readln
End.
Дима82 вне форума Ответить с цитированием
Старый 12.05.2008, 16:53   #10
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Цитата:
P:=m div 2;
m - это у тебя константа, а должно быть число строк. До половины столбца. Число строк надо на 2 разделить. Я эту переменную m для примера взял.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение двумерных массивов(Basic) mde Помощь студентам 1 30.05.2008 09:23
Помогите с программированием операций обработки файлов(Pascal) Дима82 Помощь студентам 11 24.05.2008 18:02
Программирование операций обработки файлов Дима82 Фриланс 1 19.05.2008 13:57
Программирование операций обработки одномерных массивов Дима82 Помощь студентам 12 11.05.2008 15:24
Разработка программ обработки символьных массивов 3JIY4KA Помощь студентам 4 11.03.2008 23:22