Форум программистов, компьютерный форум CyberForum.ru

Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм - C++

Восстановить пароль Регистрация
 
zidans
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 45
03.11.2010, 21:58     Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм #1
Здравствуйте, помогите с программой в Microsoft Visual C++ 6.0

Дана матрица из N строк и М столбцов (1<N<=100, 1<M<=50).
Выполнить заданную операцию над матрицей:
Переоформить матрицу таким образом, чтобы ее строки располагались по неубыванию их поэлементных сумм.

C++
1
2
3
4
5
6
#include <iostream>
#include <conio.h>
void main(void)
{
int a[100][50];
int n, m;
а дальше?
Заранее благодарю
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2010, 21:58     Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм
Посмотрите здесь:

Строки матрицы расположить по неубыванию их поэлементных сумм C++
C++ Из массивов A[6] и B[6] сформировать массив C[12] так, чтобы элементы массива располагались следующим образом: A(1) B(1) A(2) B(2) и т.д.
Упорядочить строки матрицы по неубыванию сумм положительных элементов C++
Работа с матрицами. Переписать вторую матрицу, так , чтобы элемент, находящийся на пересечении 1 строки и 2 столбца равнялся 1... C++
C++ Вставить в упорядоченный по неубыванию список элемент с заданным значением так, чтобы не нарушить упорядоченность
C++ Заполнить матрицу так, чтобы элемент в нечетной строке был равен номеру столбца, а в четном — номеру строки
C++ Отсортировать квадратную матрицу по неубыванию сумм строк
Преобразовать массив так, чтобы сначала располагались четные элементы, затем нечетные и нулевые C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2010, 05:38     Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм #2
У Вас не раскрыто в вопросе как заполняется матрица: с клавиатуры, считывается с файла, или заполняется случайными значениями в каком-то диапазоне?
Но в любом случае, советую завести еще одну матрицу (что бы много раз не пересчитывать), для хранения элементов типа int размером 100 (кол-во строк), просчитать суммы элементов в строках матрицы a[100][50] и записать эти данные в указанный массив. Потом делаете сортировку: Вам подойдет любая существующая сортировка, только не забывайте сортировать не только строки в матрице a[100][50], но и элементы в указанном массиве, где храняться суммы элементов каждой строки.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.11.2010, 06:10     Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <conio.h>
int main(void)
{
 int a[100][50];
 int s[100];
 int n, m;
 int i,j,k,t;
 cout<<"N=";
 cin>>n;
 cout<<" M=";
 cin>>m;
 for (i=0; i<n; ++i)
 {
  cout<<"\n";
  for (j=0; j<m; ++j)
  {
   cout<<" a["<<i<<","<<j<<"]=";
   cint>>a[i][j];
  }
 } 
 for (i=0; i<n; ++i)
 {
  s[i]=0;
  for (j=0; j<m; ++j)
  {
   s[i]+=a[i][j];
  }
 }
 for (j=n-1; j>=0; --j)
 {
  for (i=j-1; i>=0; --i)
  {
   if (s[i]>s[j])
   {
    t=s[i];
    s[i]=s[j];
    s[j]=t;
    for (k=m-1; k>=0; --k)
    {
     t=a[i][k];
     a[i][k]=a[j][k];
     a[j][k]=t;
    }
   }
  }
 }
 for (i=0; i<n; ++i)
 {
  cout<<"\n";
  for (j=0; j<m; ++j)
  {
   cout<<" a["<<i<<","<<j<<"]="<<a[i][j];
  }
 }
 return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от zidans Посмотреть сообщение
int a[100][50];
Кстати, почему int? В задаче я не увидел типа элементов матрицы, так что вполне может быть и double. Базовые типы массивов a и s должны совпадать. И этим же типом надо декларировать t, а остальные величины должны быть int.

Добавлено через 11 минут
И я бы не стал матрицу делать обычным массивом, а сделал бы классы с такой декларацией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class TMatrix
class TVector
{
 friend TMatrix;
 protected:
  double *Data;
  int Count;
 public:
  TVector ();
  TVector (int Count);
  TVector (TVector &Value);
  ~TVector ();
  TVector operator = (TVector &Value);
  double & operator [] (int Index);
  TVector operator + (TVector &y);
  TVector operator - (TVector &y);
  TVector operator * (TVector &y);
  friend double abs (TVector &Value);
  TVector operator * (double y);
  friend TVector operator * (double x, TVector &y);
};
class TMatrix
{
 protected:
  double *Data;
  int Rows;
  int Collumns;
 public:
  TMatrix ();
  TMatrix (int Rows, int Collumns);
  TTMatrix (TMatrix &Value);
  ~TMatrix ();
  TMatrix operator = (TMatrix &Value);
  TVector & operator [] (int Index);
  TMatrix operator + (TMatrix &y);
  TMatrix operator - (TMatrix &y);
  TMatrix operator * (TMatrix &y);
  TMatrix operator * (double y);
  friend TMatrix operator * (double x, TMatrix &y);
};
.
Yandex
Объявления
04.11.2010, 06:10     Переоформить матрицу так, чтобы ее строки располагались по неубыванию их поэлементных сумм
Ответ Создать тему
Опции темы

Текущее время: 04:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru