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

Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению - C++

Восстановить пароль Регистрация
 
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
18.03.2012, 17:23     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #1
Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению

1. Кол-во находит только по строкам, по столбцам я вообще не понимаю что оно берет. Сортировку по строкам проводит, по стобцам не хочет, в чем проблема?





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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h.>
#pragma hdrstop
 
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{  int i,j,n,m,q;
  int *b;
  int **a;
    printf ("n="); scanf ("%d", &n);
    printf ("m="); scanf ("%d", &m);
    b=new int [n*m];
        a=new int *[n];
         for (i=0; i < 10; i++)
           a[i]=new int [m];
              printf ("Matrix a:\n");
         randomize ();
           for (i = 0; i < n; i++)
           {
               for (j = 0; j < m; j++)
               {
                  a[i][j]=random(50)-20;
                  printf (" %3d ", a[i][j]);
               }
                  printf ("\n");
           }
           int k;
             for (j = 0; j < m; j++)  
             { k=0;
                    for (i = 0; i < n; i++)
                 if (a[i][j]>0)
                 {
                   k++;
                   b[i]=k;
                 }
             }
             printf ("Massiv b:\n");
                   for (i = 0; i < n; i++)
                     printf (" %d ", b[i]);
 
 
                     int c;
           for (i = 0; i < n; i++)
               for (q = i+1; q < n; q++)
                  if (b[q]<b[i])
                 for (j = 0; j < m; j++)
                 {
                     c=a[i][j];
                     a[i][j]=a[q][j];
                     a[q][j]=c;
                  }
 
                printf ("\n New matrix:\n");
                  for (i = 0; i < n; i++)
                  {  for (j = 0; j < m; j++)
 
                     printf (" %3d ", a[i][j]);
                     printf ("\n");
 
                  }
 
                  delete []b;
                  for (i = 0; i < n; i++)
                  delete []a[i];
                  delete []a;
 
               getch ();
                return 0;
}
Так же после того как я ввожу N и M и получаю ответ все решения оно мне сразу бьет такую ошибку
Миниатюры
Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 17:23     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению
Посмотрите здесь:

В заданном массиве из n элементов отсортировать по возрастанию его часть C++
C++ В заданном массиве из n элементов отсортировать по возрастанию его часть
C++ В одномерном массиве, вычислить произведение положительных элементов, сумму элементов, расположенных до минимального, а также отсортировать массив.
Получить из исходного массив положительных чисел и отсортировать его по возрастанию методом пузырька C++
Отсортировать строки матрицы по возрастанию сумм положительных элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2012, 17:43     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #2
brenor01, Вы сначало сформулируйте полностью условие задачи. А то:
Цитата Сообщение от brenor01 Посмотреть сообщение
Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению
не очень вдохновляет.

Цитата Сообщение от brenor01 Посмотреть сообщение
Так же после того как я ввожу N и M и получаю ответ все решения оно мне сразу бьет такую ошибку
См комментарии:
C++
1
2
3
                a=new int *[n];
                 for (i=0; i < 10; i++)// выделяете память для 10 строк
                   a[i]=new int [m];
C++
1
2
                                  for (i = 0; i < n; i++)// а удаляете совсем другое количество
                                  delete []a[i];
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
18.03.2012, 17:47  [ТС]     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #3
Ошибку решил сам, сомпилятор по умолчанию каждый раз ставит, когда пишу for, i < 10. не заметил сразу.

Отсортировать матрицу по возрастанию колличества положительных элементов в стобцах
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2012, 18:06     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #4
Цитата Сообщение от brenor01 Посмотреть сообщение
Отсортировать матрицу по возрастанию колличества положительных элементов в стобцах
значит нужно сортировать столбцы:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <cstdlib>
#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h.>
#pragma hdrstop
 
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{  int i,j,n,m,q;
  int *b;
  int **a;
        printf ("n="); scanf ("%d", &n);
        printf ("m="); scanf ("%d", &m);
        b=new int [m];
                a=new int *[n];
                 for (i=0; i < n; i++)
                   a[i]=new int [m];
                          printf ("Matrix a:\n");
                 randomize ();
                   for (i = 0; i < n; i++)
                   {
                           for (j = 0; j < m; j++)
                           {
                                  a[i][j]=random(50)-20;
                                  printf (" %3d ", a[i][j]);
                           }
                                  printf ("\n");
                   }
                   int k;
                         for (j = 0; j < m; j++)  
                         { 
                             b[j]=0;
                             for (i = 0; i < n; i++)
                                 if (a[i][j]>0)
                                     b[j]++;
                                 
                         }
                         printf ("Massiv b:\n");
                                   for (i = 0; i < m; i++)
                                         printf (" %d ", b[i]);
 
 
                                         int c;
                   for (i = 0; i < m-1; i++)
                           for (j=0; j<m-1-i)
                           {
                               if(b[j]>b[j+1])
                               {
                                   c=b[j]; b[j]=b[j+1]; b[j+1]=c;
                                   for(q=0; q<n; q++)
                                   {
                                       c=a[q][j]; a[q][j]=a[q][j+1]; a[q][j+1]=c;
                                   }
                               }
                           }
                                printf ("\n New matrix:\n");
                                  for (i = 0; i < n; i++)
                                  {  for (j = 0; j < m; j++)
 
                                         printf (" %3d ", a[i][j]);
                                         printf ("\n");
 
                                  }
 
                                  delete []b;
                                  for (i = 0; i < n; i++)
                                  delete []a[i];
                                  delete []a;
 
                           getch ();
                                return 0;
}
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
18.03.2012, 18:14  [ТС]     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #5
Колличество теперь правильно считает, но не хочет сортировку проводить. После вывода Massiv b, дальше программа зависает, и закрывается через диспетчерский.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2012, 18:18     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <cstdlib>
#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h.>
#pragma hdrstop
 
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{  int i,j,n,m,q;
  int *b;
  int **a;
        printf ("n="); scanf ("%d", &n);
        printf ("m="); scanf ("%d", &m);
        b=new int [m];
                a=new int *[n];
                 for (i=0; i < n; i++)
                   a[i]=new int [m];
                          printf ("Matrix a:\n");
                   randomize ();
                   for (i = 0; i < n; i++)
                   {
                           for (j = 0; j < m; j++)
                           {
                                  a[i][j]=random(50)-20;
                                  printf (" %3d ", a[i][j]);
                           }
                                  printf ("\n");
                   }
                   int k;
                         for (j = 0; j < m; j++)  
                         { 
                             b[j]=0;
                             for (i = 0; i < n; i++)
                                 if (a[i][j]>0)
                                     b[j]++;
                                 
                         }
                         printf ("Massiv b:\n");
                                   for (i = 0; i < m; i++)
                                         printf (" %d ", b[i]);
 
 
                                         int c;
                   for (i = 0; i < m-1; i++)
                           for (j=0; j<m-1-i; j++)
                           {
                               if(b[j]>b[j+1])
                               {
                                   c=b[j]; b[j]=b[j+1]; b[j+1]=c;
                                   for(q=0; q<n; q++)
                                   {
                                       c=a[q][j]; a[q][j]=a[q][j+1]; a[q][j+1]=c;
                                   }
                               }
                           }
                                printf ("\n New matrix:\n");
                                  for (i = 0; i < n; i++)
                                  {  for (j = 0; j < m; j++)
 
                                         printf (" %3d ", a[i][j]);
                                         printf ("\n");
 
                                  }
 
                                  delete []b;
                                  for (i = 0; i < n; i++)
                                  delete []a[i];
                                  delete []a;
 
                           getch ();
                                return 0;
}
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
18.03.2012, 18:21  [ТС]     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #7
Ну очень большое СПАСИБО!!!

Обьясни пожайлуйста сортировку, что бы у меня в дальнейшим с ней не было проблем.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2012, 18:31     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #8
Сортировка пузырьком. Знаете такую или дать ссылку?
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
18.03.2012, 18:37  [ТС]     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #9
пузырьком я знаю, меня интересует вот это

C++
1
2
for (i = 0; i < m-1; i++)
 for (j=0; j<m-1-i ;j++)
что за m-1-i...?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 18:41     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению
Еще ссылки по теме:

Отсортировать строки матрицы по возрастанию сумм положительных элементов C++
Отсортировать столбцы матрицы по не возрастанию суммы их элементов C++
C++ Отсортировать по сумме нечетных и отрицательных элементов строк матрицы по возрастанию

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2012, 18:41     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению #10
См комментарии:
Цитата Сообщение от brenor01 Посмотреть сообщение
for (i = 0; i < m-1; i++)// делаем m-1 раз проходов
for (j=0; j<m-1-i ;j++)// m-1-i . Сначало при первом проходе будет m-1, а значит самый большой элемент станет на самое правое место, значит в следующем проходе нет смысла сравнивать самый правый элемент с каким-либо еще, поэтому правую границу уменьшаем (m-1-i) и т.д.
Yandex
Объявления
18.03.2012, 18:41     Отсортировать матрицу по возрастанию колличества положительных элементов по увелечению
Ответ Создать тему
Опции темы

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