С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
#1

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

04.03.2012, 03:16. Просмотров 348. Ответов 2
Метки нет (Все метки)

Ниже предоставлены 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 03:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оптимизировать код и обьяснить с матрицами. (C++):

Обьяснить код - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class school { protected: int nomer; float staj; ...

Обьяснить код - C++
Надо просто обьяснить код по строчкам что делает функция , смысл функции удаление элемента в списке void del(int value) { ...

Обьяснить код - C++
Что обозначает каждая строка когда, что за что отвечает. #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() ...

Обьяснить, допустим ли приведенный код - C++
Я изучаю С++ по книге Язык программирования С++.Вводный курс. Так вот там задание: Обьяснить, допусти ли этот код? Если да, то...

Оптимизировать код - C++
Первое число входного потока - количество чисел Дальше идут те самые числа Надо найти кол-во пар чисел, для которых выполняется nums &lt;=...

Оптимизировать код - C++
Доброго времени суток, как можно оптимизировать код что бы он быстрее работал ? Дана последовательность из n чисел a1, a2,..., an. C...

2
valeriikozlov
Эксперт С++
4676 / 2502 / 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;
 
            }
0
brenor01
2 / 2 / 1
Регистрация: 15.01.2010
Сообщений: 98
04.03.2012, 14:42  [ТС] #3
Вверх!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2012, 14:42
Привет! Вот еще темы с ответами:

Как оптимизировать код? - C++
Как оптимизировать код, чтобы работала программа быстрее #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; using namespace...

Исправить и оптимизировать код - C++
нужна помощь по исправлению ошибок Написал программу она работает все отлично но препод сказал что она не очень красивая Помогите...

Нужно оптимизировать код - C++
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и Беатриса играют в игру. Август загадал...

Оптимизировать и минимализировать код - C++
Cделал легкую прогу. Понимаю логики 0 в коде. Можете помочь оптимизировать код? А заодно и сделать код более минималистичным. #include...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.