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

Динамический массив, квадратная матрица - C++

Восстановить пароль Регистрация
 
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
12.11.2013, 19:43     Динамический массив, квадратная матрица #1
Нужно организовать динамический ввод квадратной матрицы! Покажите, пожалуйста, как это можно сделать(чтобы сначала указывалась размерность).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
12.11.2013, 19:50     Динамический массив, квадратная матрица #2
C++
1
2
3
4
5
6
7
8
9
10
int n, i ,j;
cout<<"Enter size : ";
cin>>n;
int **a=new int *[n];
for (i=0; i<n; i++)
a[i]=new int[n];
cout<<"Enter matrix\n";
for (i=0; i<n; i++)
     for (j=0; j<n; j++)
          cin>>a[i][j];
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
12.11.2013, 20:09  [ТС]     Динамический массив, квадратная матрица #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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <iomanip>
 
using namespace std;
 
 
typedef int**ppint;
 
 
void Mem_matr(ppint &a, int n)
{
    int i;
  int **a=new int *[n];
for (i=0; i<n; i++)
a[i]=new int[n];
 
}
 
        void In_mas(ppint &a, int n) // Ввод массива. Первый индекс является необязательным т.к.  функции передаётся ссылка на первый элеемнт массива(в данном случа сам массив)
        {
 
            for(int i=0;i<n;i++)
            {
                
                for(int j=0;j<n;j++)
                {
                    cout <<"\n a["<<i<<"]["<<j<<"]=";
                    cin>>a[i][j];
                }
            }
         }
 
                void Out_mas(ppint &a, int n) //Вывод массива. последующие индексы нужны для того чтобы компилятор мог корректно выделить место под элементы массива
                {
                    for (int i=0;i<n;i++)
                    {
                        for (int j=0;j<n;j++)
                        {
 
                            cout<< a[i][j]<< " ";
                        }
                        cout << endl;
                    }
                }
 
                 void field(ppint&b, ppint &a, int n) //функция вычисления закрашенной области
                 {
                        for (int i=0; i<n; i++)
                        {
                            for (int j=0; j<n; j++)
                            {
                                b[i][j] = 0;
 
                                for (int x=i; x<n; x++) // for (x=n/2;x<n;x++)
                                {
                                    for (int y=0; y<=j; y++) // for(y=0;y<n/2;y++)
                                    {
                                        b[i][j]=b[i][j]+a[x][y];
                                    }
                                }
                            }
                        }
                 }
 
                void Out_mas2 (ppint&b, int n)
                {
                for (int i=0;i<n;i++)
                {
                    for (int j=0;j<n;j++)
                    {
                        cout<<setw(3)<< b[i][j]<< " ";
                    }
                    cout << endl;
                }
                cout << endl << endl;
                }
 
                void Del(ppint&a,ppint&b, int n)
                {
                    for (int i = 0; i < n; i++)
                        delete []a[i];
                    delete []a;
                    delete []b;
                    a=NULL;
                    b=NULL;
                }
                int main()
                {
                    setlocale(LC_ALL, "Russian");
                    int n;
                    ppint a;
                    ppint b;
                    char c;
 
                    do{
 
                  cout << "Введите размерность матрицы:" << endl;
                 cin>>n;
                
                  Mem_matr(a,n);
                   cout << "Введите ваши числа:" << endl;
                   In_mas(a,n);
                   cout << "Полученый массив : " << endl;
                   Out_mas(a,n);
 
                   field(b,a,n);
 
                   cout << "Результат" << endl;
                   Out_mas2(b,n);
                   Del(a,b,n);
 
                  cout << "Хотите продолжить? Нажмите y если да." << endl;
                  cin >> c;
                 }while(c=='y');
 
              }
Всё никак ввод не задаётся.
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
12.11.2013, 20:18     Динамический массив, квадратная матрица #4
Цитата Сообщение от Nadia Trofimova Посмотреть сообщение
int **a=new int *[n];
Замените это на это и ввод будет работать
C++
1
a=new int*[n]
У вас идет переопределение параметра а, поэтому ввод и не работал.
Правда в функции со штриховкой уже ошибки
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
12.11.2013, 20:39  [ТС]     Динамический массив, квадратная матрица #5
Спасибо! Я только что их нашла и уже исправила, всё работает) Ваша помощь мне очень пригодилась)
Yandex
Объявления
12.11.2013, 20:39     Динамический массив, квадратная матрица
Ответ Создать тему
Опции темы

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