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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 08:42   #1
SVing
Ээээ
Пользователь
 
Аватар для SVing
 
Регистрация: 13.09.2011
Сообщений: 99
По умолчанию

Помогите пожалуйсто, не соображаю ничерта ,по нулям.

Дана действительная матрица А( nхn). Если элементы второй строки матрицы образуют невозврастающую последовательностьи наибольший элемент матрицы нахожится в этой строке,то упорядочить элементы каждого столбца в порядке возврастания.Методом просеивания.В противном случае матрицу оставить без изменения.

ребят помогите пожалуйсто

Последний раз редактировалось Stilet; 20.02.2012 в 19:59.
SVing вне форума Ответить с цитированием
Старый 20.02.2012, 18:30   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Программу написать вместо тебя?
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 20.02.2012, 19:16   #3
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

с миру по нитке...
Код:
conts 
  n=4;

var
  matrix: array[1..n,1..n] of real;
  i,j: integer;
  Mmax: real;
  f:text;
...
begin
  assign(f,'in.txt');
  reset(f);
  for i:=1 to n do
    for j:=1 to n do
       read(f,matrix[i,j]);
  {to be continued....}

Последний раз редактировалось unbanned; 20.02.2012 в 19:43.
unbanned вне форума Ответить с цитированием
Старый 20.02.2012, 19:24   #4
SVing
Ээээ
Пользователь
 
Аватар для SVing
 
Регистрация: 13.09.2011
Сообщений: 99
По умолчанию

Цитата:
Сообщение от spein Посмотреть сообщение
Программу написать вместо тебя?
как бы желательно) да я вообще ничерта не понимаю, а здаваться надо всё таки ,всякими правдами и неправдами
SVing вне форума Ответить с цитированием
Старый 20.02.2012, 21:24   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

мда... ну вообщем было свободное время...
на корректность решения не претендую
поэтому было бы интересно услышать замечания и поправки от других форумчан
ТС настоятельно рекомендую обратить внимание на тип данных в матрице и принять соответствующие меры
Код:
const
  n = 4;

type
  matrix = array[1..n, 1..n] of integer;

procedure fill(var mat: matrix; path: string);
var
  i, j: integer;
  f: text;
begin
  assign(f, path);
  reset(f);
  for i := 1 to n do
    for j := 1 to n do
      read(f, mat[i, j]);
  close(f);
end;

procedure sort_by_column(var mat: matrix; s: integer);
var
  i, j: integer;  
  flagsort: boolean;
  t: integer;
begin
  repeat
    flagsort := true;
    for i := 1 to n - 1 do
      if not (mat[i, s] <= mat[i + 1, s]) then begin
        t := mat[i, s];
        mat[i, s] := mat[i + 1, s];
        mat[i + 1, s] := t;
        j := i;
        
        while (j > 1) and not (mat[j - 1, s] <= mat[j, s]) do 
        begin
          t := mat[j, s];
          mat[j, s] := mat[j - 1, s];
          mat[j - 1, s] := t;
          dec(j);
        end;
        flagsort := false;
      end;
  until flagsort;
end;

procedure show(var mat: matrix);
var
  i, j: integer;
begin
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(mat[i, j], ' ');
    writeln;
  end;
  writeln;
end;

function iMax(var mat: matrix): integer;
var
  i, j: integer;
  max, im: integer;
begin
  max := mat[1, 1]; im := 1;
  for i := 1 to n do
    for j := 1 to n do
      if mat[i, j] > max then 
      begin
        max := mat[i, j];
        im := i;
      end;
  result := im;
end;

function no_inc_row(var mat: matrix; s: integer): boolean;
var
  i: integer;
begin
  i := 1;
  while (i < n) and (mat[s, i] < mat[s, i + 1]) do inc(i);
  if i = n then result := false
  else result := true;
end;

var
  dArr: matrix;
  column: integer;

begin
  fill(dArr, 'in.txt');
  show(dArr);
  if (iMax(dArr) = 2) and (no_inc_row(dArr, 2)) then 
    for column := 1 to n do
      sort_by_column(dArr, column);
  show(dArr);
end.

Последний раз редактировалось unbanned; 20.02.2012 в 21:37.
unbanned вне форума Ответить с цитированием
Старый 20.02.2012, 22:03   #6
SVing
Ээээ
Пользователь
 
Аватар для SVing
 
Регистрация: 13.09.2011
Сообщений: 99
По умолчанию

Цитата:
Сообщение от unbanned Посмотреть сообщение
мда... ну вообщем было свободное время...
на корректность решения не претендую
поэтому было бы интересно услышать замечания и поправки от других форумчан
ТС настоятельно рекомендую обратить внимание на тип данных в матрице и принять соответствующие меры
Код:
const
  n = 4;
....
end.

ого ) препадша офигеет когда увидит) столько нового будет ) а какие переменные искали? что в Var приписать?
спасибо большое


НЕ ЗЛОУПОТРЕБЛЯЙТЕ ИЗЛИШНИМ ЦИТИРОВАНИЕМ!
Удаляйте лишний (не нужный Вам при ответе) текст из цитаты.

прошу считать это ПРЕДУПРЕЖДЕНИЕМ!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.02.2012 в 09:18.
SVing вне форума Ответить с цитированием
Старый 20.02.2012, 22:17   #7
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

программа дописана до конца... "приписать" ничего не надо. от вас требуется лишь исправить тип данных в матрице. так же исправить ошибки, если они есть. ну и внести изменения по необходимости. у вас, если вы читали задание - вещественная матрица. я же сделал для целочисленной.

P.S. За излишнее цитирование могут и наказать Ибо я попадался и за меньшие цитаты

Последний раз редактировалось unbanned; 20.02.2012 в 23:53.
unbanned вне форума Ответить с цитированием
Старый 21.02.2012, 08:44   #8
SVing
Ээээ
Пользователь
 
Аватар для SVing
 
Регистрация: 13.09.2011
Сообщений: 99
По умолчанию

он не знает такой индификатор result := im;
что тут надо исправить?
SVing вне форума Ответить с цитированием
Старый 21.02.2012, 09:20   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вместо ключевого слова result в старых версиях паскаля нужно было писать имя функции.

например,
Код:
function iMax(var mat: matrix): integer;
var
  i, j: integer;
  max, im: integer;
begin
......
  iMax := im;
end;

function no_inc_row(var mat: matrix; s: integer): boolean;
var
  i: integer;
begin
  i := 1;
  while (i < n) and (mat[s, i] < mat[s, i + 1]) do inc(i);
  if i = n
    then no_inc_row := false
    else no_inc_row := true;
end;

Последний раз редактировалось Serge_Bliznykov; 21.02.2012 в 09:23.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.02.2012, 19:30   #10
SVing
Ээээ
Пользователь
 
Аватар для SVing
 
Регистрация: 13.09.2011
Сообщений: 99
По умолчанию

что-то я не понимаю( что на что менять надо?
SVing вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Перестановки pro100saniok Помощь студентам 5 21.12.2010 00:12
перестановки символов mrkheggy Помощь студентам 7 12.12.2010 23:39
Перестановки N чисел SOKOLDANGER Общие вопросы C/C++ 0 10.10.2010 20:02
перестановки fedd Помощь студентам 2 27.11.2009 22:59
Перестановки H'orn Общие вопросы .NET 4 11.11.2009 03:08