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

Оптимизировать код и обьяснить с матрицами. - C++

Восстановить пароль Регистрация
 
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
04.03.2012, 03:16     Оптимизировать код и обьяснить с матрицами. #1
Ниже предоставлены 3 кода. Я прошу вас, если это возможно, подсказать мне как можно их сделать короче или лучше, так же если есть варианты сделать по другому матрицы (но главное что бы они были динамические и с указателями) и показать как в конце программы удалять динамическй массив, ибо иногда С++ Бюлдер просто выдает крит ошибку и приходиться выключать через диспетчер.

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
#include <vcl.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
 
 
#pragma argsused
int main(int argc, char* argv[])
{ int n,m,i,j;
        int **a;
        printf("n="); scanf("%d",&n);
        printf("m="); scanf("%d",&m);
        a=new int*[n];
        for(i=0;i<n;i++)
          a[i]=new int [m];
          randomize();
          printf("\n  Matrix A=:\n");
          for (i=0;i<n;i++)
          {
            for (j=0;j<n;j++)
                { a[i][j]=random(50)-10;
                        printf(" %3d ", a[i][j]);
                }
          printf ("\n");
          }
           for (i=0;i<n;i++)
            {
                for (j=0;j<n;j++)
                        if (i<j && a[i][j]%2==0)
                       s+=a[i][j];
            }
 
            printf("s=%d" , s);
            if (s%3==0)
            for (i=0;i<n;i++)
                for (j=0;j<n;j++)
                   if (i+j==n-1)
                      a[i][j]=0;
            printf("\n Massiv A:\n");
            for(i=0;i<n;i++)
            {  for(j=0;j<n;j++) printf(" %d " , a[i][j]);
               printf("\n");
            }
            delete []a;
            getch();
            return 0;
 
            }
Отсортировать по увелечению произведения отрицательных эелемнтов строк матрицы

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
#include <vcl.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
 
    { int n,m,p, i, j,c;
        int *b;
        b=new int [n];
    int **a;
    printf("n="); scanf("%d",&n);
    printf("m="); scanf("%d",&m);
    a=new int *[n];
    for(i=0;i<n;i++)
        a[i]=new int [m];
    randomize();
    printf("\n Massiv A:\n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]=random(50)-25;
            printf(" %3d ", a[i][j]);
        }
        printf("\n");
                    }
 
                   int q=-1;
                for(i=0;i<n;i++)
                 {
                  p=1;
 
                     for(j=0;j<m;j++)
                         if( a[i][j]<0)
                                 p*=a[i][j];
                       if (p!=1)
                        {
                          q++;
                          b[q]=p;
                      }  }
                        for(i=0;i<=q;i++)
                         printf(" %d ", b[i]);
 
 
                        for(i=0;i<=q;i++)
 
                           for(j=i+1;j<=q;j++)
                            if(b[j]<b[i])
                             {
                               c=b[j];
                               b[j]=b[i];
                               b[i]=c;
 
                             }
                             for(i=0;i<=q;i++)  printf(" B=%d ", b[i]);
 
 
               delete []a;
        
               getch();
        return 0;


Переставить строки матрицы относительно по возрастанию элементов второго столбца. Как по возрастанию знаю, а вот как после этого поменять ещё и строки не разбивая первую матрицу, незнаю.

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
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{   int i,j,q;
    int **a;
      int n,m,b;
printf("n="); scanf("%d",&n);
printf("m="); scanf("%d",&m);
a=new int *[n];
  for(i=0;i<n;i++)
    a[i]=new int [m];
        randomize();
          printf("\n Massiv A:\n");
        for (i=0;i<n;i++)
        {
          for (j=0;j<m;j++)
                {
                 a[i][j]=random(50)-10;
                  printf(" %3d ", a[i][j]);
                }
          printf("\n");
        }
        printf("\n");
j=1;
                for(i=0;i<n;i++)
                {
                  for(q=i+1;q<n;q++)
                    if (a[q][j]<a[i][j])
                      {b=a[q][j];
                      a[q][j]=a[i][j];
                      a[i][j]=b;
                      }
 
                }
          printf("\n");
          for(i=0;i<n;i++)
          {  for(j=0;j<m;j++) printf(" %3d ",a[i][j]);
             printf("\n");
          }
 
              delete []a;
                getch();
 
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 03:16     Оптимизировать код и обьяснить с матрицами.
Посмотрите здесь:

C++ Помогите оптимизировать код
C++ Помогите оптимизировать код
Обьяснить код C++
C++ Как оптимизировать код?
C++ Нужно оптимизировать код
C++ Обьяснить, допустим ли приведенный код
C++ Оптимизировать код
C++ Оптимизировать и минимализировать код

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.03.2012, 08:06     Оптимизировать код и обьяснить с матрицами. #2
Цитата Сообщение от 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
#include <vcl.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
 
 
#pragma argsused
int main(int argc, char* argv[])
{ int n,m,i,j;
        int **a;
        printf("n="); scanf("%d",&n);
        printf("m="); scanf("%d",&m);
        a=new int*[n];
        for(i=0;i<n;i++)// создаем матрицу размером n*m
          a[i]=new int [m];
          randomize();
          printf("\n  Matrix A=:\n");
          for (i=0;i<n;i++)
          {
            for (j=0;j<n;j++)// работаем с матрицей как будто размер у нее n*n (а если m меньше n, то будет очень плохо)
                { a[i][j]=random(50)-10;
                        printf(" %3d ", a[i][j]);
                }
          printf ("\n");
          }
           for (i=0;i<n;i++)
            {
                for (j=0;j<n;j++)// то же самое
                        if (i<j && a[i][j]%2==0)
                       s+=a[i][j];
            }
 
            printf("s=%d" , s);
            if (s%3==0)
            for (i=0;i<n;i++)
                for (j=0;j<n;j++)// тоже самое
                   if (i+j==n-1)
                      a[i][j]=0;
            printf("\n Massiv A:\n");
            for(i=0;i<n;i++)// тоже самое
            {  for(j=0;j<n;j++) printf(" %d " , a[i][j]);
               printf("\n");// удалять матрицу можно после этой строки вставить delete[] a[i];
            }
            delete []a;// ну и эту строку оставить
            getch();
            return 0;
 
            }
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
04.03.2012, 14:42  [ТС]     Оптимизировать код и обьяснить с матрицами. #3
Вверх!
Yandex
Объявления
04.03.2012, 14:42     Оптимизировать код и обьяснить с матрицами.
Ответ Создать тему
Опции темы

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