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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 15:00   #1
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию Матрица

Здравствуйте.
Возникла проблема при написании следующей программы:

Дана матрица, размерности N на M. Отсортировать ее в зависимости
от характеристик ее столбцов(Характеристика столбца - количество отрицательных элементов в нем)
Сортировать столбцы по убыванию


То есть, как я понимаю, надо запустить поиск отрицательных элементов,
потом вывести их в одномерный массив, отсортировать одномерный,
и исходя их этого, двумерный
jinadaa вне форума Ответить с цитированием
Старый 03.01.2011, 15:05   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Правильно ты понимаешь.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 03.01.2011, 15:08   #3
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

понимать - понимаю, но вот через одно место дохожу
до подсчета отрицательных элементов
вроде код правильный, а результаты настолько странные,
что я не представляю как оно так происходит интересно
Код:
Program Lab_5_3;
  uses crt;
  const N=2; M=3;
  var a:array[1..n,1..m]of real;
      b:array[1..n]of integer;
      i,j,k:integer;
Begin
  clrscr;
  for i:=1 to N do
   for j:=1 to M do
     Begin
       write('A[',i,',',j,']=');
       readln(A[i,j]);
     end;
  writeln('Mas A:');
  for i:=1 to N do
    Begin
      for j:=1 to M do
        write(A[i,j]:2:0, ' ');
      writeln;
    end;
  writeln;
  k:=0;
  for i:=1 to N do
  Begin
  B[i]:=0;
  for j:=1 to M do
   if A[i,j]<0 then
   inc(B[i]);
  end;
  write(B[i], ' ');
  readln;

End.
jinadaa вне форума Ответить с цитированием
Старый 03.01.2011, 15:10   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Яб создал массив Nx(M+1). В M+1 я буду хранить кол-во отрицательных элементов. И уже его сортировать.... вместе со столбцом.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 03.01.2011, 15:14   #5
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

а как запустить сортировку только столбцов?
бо объяснили сортировки одномерных массивов по убыванию и возрастанию,
а двумерные - самостоятельно
jinadaa вне форума Ответить с цитированием
Старый 03.01.2011, 15:14   #6
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Так будет лучше...
Код:
Program Lab_5_3;
  uses crt;
  const N=2; M=3;
  var a:array[1..n,1..m]of real;
      b:array[1..m]of integer;
      i,j,k:integer;
Begin
  clrscr;
  for i:=1 to N do
   for j:=1 to M do
     Begin
       write('A[',i,',',j,']=');
       readln(A[i,j]);
     end;
  writeln('Mas A:');
  for i:=1 to N do
    Begin
      for j:=1 to M do
        write(A[i,j]:2:0, ' ');
      writeln;
    end;
  writeln;
  k:=0;
  for i:=1 to M do
  Begin
  B[i]:=0;
  for j:=1 to N do
   if A[j,i]<0 then
    inc(B[i]);
  write(B[i], ' ');
  end;
  readln;
End.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 03.01.2011, 15:18   #7
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

Ого, спасибо большой

еще вопрос
как связать сортировку одномерного с двумерным?
jinadaa вне форума Ответить с цитированием
Старый 03.01.2011, 15:36   #8
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

ладно, спасибо и на этом большое
jinadaa вне форума Ответить с цитированием
Старый 03.01.2011, 15:40   #9
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Код:
Const N = 3;
      M = 5;

Var   A : Array [1..N + 1, 1..M + 1] Of Integer;
      i, j : Integer;

Begin

Randomize;
For i := 1 To N Do
  Begin
    For j := 1 To M Do
      Begin
        A[i,j] := Random(10) - 7;
        Write(A[i,j], ' ');
        If A[i,j] < 0 Then A[N+1,j] := A[N+1,j] + 1;
      End;
    Writeln;
  End;

Writeln;
For j := 1 To M Do Write(A[N+1,j], ' ');

Readln;
End.
A[i, M + 1] - столбец буфер для того чтоб хранить столбец при перестановке.
A[N+1, j] - строка кол-ва отрицательных элементов в j столбце.

Дальше несложно дописать сортировку.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 03.01.2011, 16:26   #10
jinadaa
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

По-моему, мое начало намного легче
ну мне во всяком случает так кажется
jinadaa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
Матрица (Си) ManInBlack Помощь студентам 3 13.01.2009 13:43
Матрица BlonDino4Ka Паскаль, Turbo Pascal, PascalABC.NET 3 07.01.2009 00:04
матрица Verochka Помощь студентам 3 23.11.2008 22:42