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

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

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

 
 Ответить  Открыть новую тему 
> переставление столбцов местами, задача
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


характеристикой столбца матрицы называется сумма его отрицательных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.

делов том,что я пыталась решить эту задачу по образу и подобию упорядочения элементов в одномерном массиве.но цели этой задачи так и не достигла=(

не могли бы вы помочь мне с этой задачей? unsure.gif


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Как задать матрицу, чтобы быстро поменять местами ее столбцы и работаешь со столбцами так же просто, как, например, с целыми числами...

Кстати, тогда именно и будет
Цитата
по образу и подобию упорядочения элементов в одномерном массиве
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


эээ....а поподробнее можно...?


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Что именно не понятно? Там же приведен пример использования...

Вот, например, приведи промер, КАК ты пыталась решить это по подобию одномерных массивов, я покажу как это перенести на двумерные...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


ну примерно так:

Код

program swap;

const
row=4;
col=4;
r=10;

var
a:array [1..col,1..row];
s:array [1..row];
i,j,k,t,min:integer;

begin

{ввод матрицы}
randomize;
   for i:=1 to col do
   begin
      for j:=1 to row do
      begin
      a[i,j]:=random( r )+1;
      write(a[i,j]:4);
      end;
      writeln;

for j:=1 to row do
begin
   s[j]:=0;
   for i:=1 to col do
   if a[i,j]<0 then s[j]:=s[j]+a[i,j];
end;

for i:=1 to col do
for j:=1 to row-1 do
begin
min:=j;
for k:=j+1 to row do
if a[k]>a[min] then min:=k;
t:=a[k];
a[j]:=a[min];
a[min]:=t;;
end;

for i:=1 to col do
begin
for j:=1 to row do
write(a[i,j]:4);
writeln;
end;

end.


Сообщение отредактировано: Tribunal -


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, а я говорил про что-то в этом духе:
const
 size_row = 10;
 size_col = 10;

type
 trow = array[1 .. size_row] of integer;
 tmatrix = array[1 .. size_col] of trow;

function f(r: trow): integer;
var i, s: integer;
begin
  s := 0;
  for i := 1 to size_row do
    s := s + r[i];
  f := s;
end;

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 mx: tmatrix);
 var i, j: integer;
 begin
   for i := 1 to 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;

begin
 { инициализация матрицы }
 for i := 1 to size_row do
   for j := 1 to size_col do
     mx[i][j] := random(50)-25;

 writeln('before:'); print(mx);
 for i := 1 to size_col do
   for j := size_col downto i+1 do
     if f(mx[j - 1]) > f(mx[j]) then
       swap_cols(mx, j - 1, j);

 writeln('after:'); print(mx);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


а почему вот здесь:

Цитата
mx[i][j] := random(50)-25;


ошибка range check error?


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Не знаю... Если я выложил код, значит у меня он отработал... Никаких Range Check Error не было замечено... Да и нечему там давать такую ошибку, если только ты не меняла здесь:
trow = array[1 .. size_row] of integer;

integer на какой-нибудь беззнаковый тип, например, Byte или Word...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


я ничего не меняла.ошибка выводится.=(


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






А присоедини-ка свой PAS-файл в аттаче... Я понимаю, что ты ничего не меняла, но там просто физически не может быть этой ошибки... (не надо копировать текст программы, мне нужен ИМЕННО PAS-файл!!!)

И заодно - напиши, какой компилятор у тебя...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


прости ламака...а где компилятор пишется? unsure.gif


Прикрепленные файлы
Прикрепленный файл  SWAP.PAS ( 988 байт ) Кол-во скачиваний: 267


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Меню Help -> About
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


там написано только то,что паскаль версии 7.0

Сообщение отредактировано: Tribunal -


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Все, можешь не писАть... Все ясно... Делай так:
     mx[i][j] := Integer(random(50))-25;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


а объясни,пожалуйста,философский смысл выражения mx[i][j]...
я такое впервые вижу.что это означает?


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






mx[i, j] тебе ближе? Используй это... Я по привычке из C++ так пишу (благо, Паскаль позволяет оба варианта записи)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


спасибо=)


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Хотя здесь есть еще один момент: фактически матрица описана, как массив столбцов, поэтому крайне рекомендуется запись именно mx[i][j], где mx[i] - столбец №I , а [j] - уже обращение к j-му элементу этого столбца...
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 18.04.2025 16:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name