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

Выделение динамической памяти для матрицы - C++

Восстановить пароль Регистрация
 
РИУ
0 / 0 / 0
Регистрация: 26.12.2011
Сообщений: 4
27.12.2011, 17:18     Выделение динамической памяти для матрицы #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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>[ATTACH]
#define S 9
int A[S][S];
 int main()
{ 
    int sum1=0 ,sum2=0;
    int i,j,k;
    for (i=0; i<S; i++)
    {
        printf("\n");
      for (j=0; j<S; j++)
     {
       A[i][j]=rand()%99;
        printf("%2d  ",A[i][j]);
     }
    }
   k=1;
        while (k<=4)
        {
                j=k; sum1=0;sum2=0;
                for (i=k-1;i>=0;i--)
                {
                        j++;
                        sum1=sum1+A[i][j]+A[j][i];
                        sum2=sum2+A[S-1-i][S-1-j]+A[S-1-j][S-1-i];
                }
                A[k][k]=sum1;
                A[S-1-k][S-1-k]=sum2;
                k++;
        }
        printf("\n\n\n\n\n");
        for (i=0; i<S; i++)
           {
             for (j=0; j<S; j++)
                printf("%2d  ",A[i][j]);
        printf("\n");
        }
        system("pause");
         return 0;
}
Помогите пожалуйста. Заранее благодарен.
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dejust
 Аватар для Dejust
49 / 49 / 1
Регистрация: 31.01.2011
Сообщений: 156
27.12.2011, 17:26     Выделение динамической памяти для матрицы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
 int main()
{ 
    int S;
    std::cin >> S;
    int **A = new int* [S];
    for(int i = 0; i < S; ++i)
        A[i] = new int;
// ... Тут остальной код
    for(int i = 0; i < S; ++i)
         delete A[i];
    delete [] A;
}
Как-то так, в начале выделяем память под матрицу, в конце освобождаем занятую память.
РИУ
0 / 0 / 0
Регистрация: 26.12.2011
Сообщений: 4
27.12.2011, 17:44  [ТС]     Выделение динамической памяти для матрицы #3
для 1 курса сложновато написано вроде...
меня больше интересует как переделать алгоритм вычисления суммы диагоналей(
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
27.12.2011, 18:05     Выделение динамической памяти для матрицы #4
Риу, вот в коем веке писал, часть программы проход по диагоналям побочным. Осталось немного подправить только.
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
void Min(int n)
{
        int j,p;
        int sum[10];
 
        for (i = 0; i < 10; i++)
           sum[i] = 0;
 
        int k = 0;
 
        for (i = 1; i <= n-2; i++)
        {
           for (j = i; j >= 0; j--)
              sum[k] += abs(A[j][i-j]);
           k++;
        }
 
        int otn;
 
        for (i = n-1; i > 1; i--)
        {
           otn = 1;
           for (j = i-1; j < n; j++)
           {
              sum[k] += abs(A[j][n-otn]);
              otn++;
           }
           k++;
        }
В массиве a - сумма элементов побочных диагоналей, может к программе не относится, но думаю в суть циклов вникните.
РИУ
0 / 0 / 0
Регистрация: 26.12.2011
Сообщений: 4
27.12.2011, 18:38  [ТС]     Выделение динамической памяти для матрицы #5
спасибо, буду пробовать)
Yandex
Объявления
27.12.2011, 18:38     Выделение динамической памяти для матрицы
Ответ Создать тему
Опции темы

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