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

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

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

> Задача. Матрица + процедура
Jaren
сообщение 20.12.2007 13:24
Сообщение #1





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

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


Faq прочел ( но не смог решить). В поиске похожую тоже не нашел.

Составить программу перестановки четных и нечетных столбцов элементов матрицы. Перестановку столбцов оформить в виде процедуры
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
volvo
сообщение 20.12.2007 13:50
Сообщение #2


Гость






Цитата
В поиске похожую тоже не нашел.
Плохо искал... Описываешь матрицу так, как это сделано здесь:
Программирование с использованием файлов

А потом просто меняешь столбцы с четными и нечетными индексами местами... Вот так:
for i := 1 to (size_col div 2) do begin { size_col - число столбцов !!! }
  swap_cols(mx, 2*i - 1, 2*i);
end;
 К началу страницы 
+ Ответить 
Jaren
сообщение 20.12.2007 14:16
Сообщение #3





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

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


volvo спасибо
но... я очень слабоват в Паскале (
я попытался сделать, но не вышло ((
если не сложно - распиши как это сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.12.2007 14:20
Сообщение #4


Гость






Можно посмотреть, как именно ты пытался сделать? Покажи код, что неправильно - поправим...
 К началу страницы 
+ Ответить 
Jaren
сообщение 20.12.2007 14:24
Сообщение #5





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

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



 program smena;
uses crt;
const
     size_row = 4;
     size_col = 7;
type
    trow = array[1..size_row] of integer;
    tmatrix = array[1..size_col] of trow;
procedure swap_cols(var mx: tmatrix;
          const i; j:integer);
   var T: trow;
   begin
     T:= mx[i]; mx[i] := mx[j]; mx[j] := T
   end;
var
  mx:tmatrix;
  i,j:integer;
  n,z :integer;
begin
  for i:=1 to (size_col div 2) do begin
  swap_cols(mx,2*i-1,2*i);
end.


вот ) как видно - я действительно в нем слабоват ) и даже очень
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.12.2007 14:34
Сообщение #6


Гость






Заполнять матрицу надо... А так все очень даже рабочее...

Вот так будет выглядеть основная программа:
begin
  for i := 1 to size_col do
    for j := 1 to size_row do begin
      write('mx[', j:2, i:2, '] = '); readln(mx[i, j]); { <--- матрица вводится по столбцам !!! }
    end;

  print(mx); { До обмена  }

  for i:=1 to (size_col div 2) do
    swap_cols(mx,2*i-1,2*i);
  writeln;

  print(mx); { После обмена }
end.

(процедуру Print забери по той же ссылке)
 К началу страницы 
+ Ответить 
Jaren
сообщение 20.12.2007 14:48
Сообщение #7





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

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



program smena;
uses crt;
const
     size_row = 4;
     size_col = 7;
type
    trow = array[1..size_row] of integer;
    tmatrix = array[1..size_col] of trow;
procedure swap_cols(var mx: tmatrix;
          const i; j:integer);
   var T: trow;
   begin
     T := mx[i]; mx[i] := mx[j]; mx[j] := T
   end;
procedure print(var mxL tmatrix);
   var i,j:integer;
   begin
      for i:=1 tp size_row do
      begin
        for j:=1 to size_col do
         write(mx[j][i]:4);
        writeln
      end;
   end;
var
  mx:tmatrix;
  i,j:integer;
  n,z :integer;
begin
  for i:=1 to size_col do
    for j:=1 to size_row do begin
      write('mx[',j:2,i:2,']=');
      readln(mx[i,j];
    end;
  print(mx);
  for i:=1 to (size_col div 2) do
      swap_cols(mx,2*i-1,2*i);
  writeln;
  print(mx);
end. 

пишет 26 ошибку в этой строке
T := mx[i]; mx[i] := mx[j]; mx[j] := T

Прикрепил файл программы


Прикрепленные файлы
Прикрепленный файл  123.PAS ( 833 байт ) Кол-во скачиваний: 152
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.12.2007 15:26
Сообщение #8


Гость






procedure swap_cols(var mx: tmatrix;
  const i, j:integer); { <--- Между I и J должна быть запятая, а не точка с запятой... }


Добавлено через 1 мин.
procedure print(var mx: tmatrix); { а здесь - двоеточие а не L }
Ты что, перепечатываешь вручную текст? Скопировать нельзя было? Ошибки же вносишь...

Сообщение отредактировано: volvo - 20.12.2007 15:28
 К началу страницы 
+ Ответить 
Jaren
сообщение 20.12.2007 15:39
Сообщение #9





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

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


ды в ручную )
Спасибо большое volvo
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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