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

Вывести массив и распечатать адреса - C++

Восстановить пароль Регистрация
 
AL78
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 13
28.03.2013, 16:26     Вывести массив и распечатать адреса #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
#include <iostream.h>
 
using namespace std;
 
int main()
{
   int n, m, n1, m1;
   cout<<"Enter number of strok of matrix"<<endl;
   cin >> n;
   cout<<"Enter number of stolbzov of matrix"<<endl;
   cin >> m;
 
   int** matrix;
   matrix=new int * [n];
   for (n1 = 0; n1 < n; n1++)
   {
      matrix[n1] = new int [m];
   }
 
   cout<<"Enter a matrix postrochno"<<endl;
   for (n1 = 0; n1 < n; n1++)
   {
      for (m1 = 0; m1 < m; m1++)
      {
         cin >> matrix[n1][m1];
      }
   }
   char*vector;
  vector=new char [n];
   int i, j;
   for (j = 0; j < m; j++)
   {
      vector[j] = 0;
      for (i = 0; i < n; i++)
      {
         vector[j] += matrix[j][i];
      }
   }
 
   for (j = 0; j < n; j++)
   {
      delete []matrix[j];
   }
   delete []matrix;
 
 int* val;
   val= new int [1];
   for (j = 0, *val = 1; j < m; j++)
   {
      *val *= vector[j];
   }
 
   cout<<"\n";
   for (i = 0; i < m; i++)
   {
      cout<<"adress : vector"; 
   }
   cout<<"adress : Res_val"; 
 
   delete []vector;
   delete []val;
   system("pause");
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 16:26     Вывести массив и распечатать адреса
Посмотрите здесь:

Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух массивов. C++
Вывести адреса первого и последнего элементов каждой строки. C++
Вывести адреса первого и последнего элементов каждой строки массива. C++
C++ Массив 5х5. (Вывести на экран номер строки и столбца и адреса...)
C++ Массив 5х5. (Вывести на экран номер строки и столбца и адреса.) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.03.2013, 20:48     Вывести массив и распечатать адреса #2
Как то так
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
   int n, m;
       cout<<"Enter number of strok of matrix"<<endl;
       cin >> n;
       cout<<"Enter number of stolbzov of matrix"<<endl;
       cin >> m;
 
       int** matrix;
       matrix=new int * [n];
       for (int n1 = 0; n1 < n; n1++)
          matrix[n1] = new int [m];
 
 
       cout<<"Enter a matrix postrochno"<<endl;
       for (int n1 = 0; n1 < n; n1++)
          for (int m1 = 0; m1 < m; m1++)
             cin >> matrix[n1][m1];
 
 
       int * vector=new int[n];
 
       for (int j = 0; j < m; j++)
       {
          vector[j] = 0;
          for (int i = 0; i < n; i++)
          {
             vector[j] += matrix[j][i];
          }
       }
 
 
     int *val=new int;
 
     *val=1;
       for (int j = 0;j < m; j++)
          *val *= vector[j];
 
       for (int n1 = 0; n1 < n; n1++){
          for (int m1 = 0; m1 < m; m1++)
              cout<<"adress matrix "<<&matrix[n1][m1]<<" ";
        cout<<endl;
       }
 
       cout<<"\n";
       for (int i = 0; i < m; i++)
           cout<<"vector["<<i<<"]="<<vector[i]<<" ";
       cout<<endl;
       for (int i = 0; i < m; i++)
           cout<<"adress vector "<<&vector[i]<<" ";
       cout<<endl;
 
       cout<<"adress Res_val "<<val<<" res_val= "<<*val<<endl;
 
  for (int j = 0; j < n; j++){
          delete []matrix[j];
          matrix[i]=NULL;
       }
       delete []matrix;
       matrix=NULL;
       delete []vector;
        vector=NULL;
       delete []val;
        val=NULL;
AL78
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 13
28.03.2013, 22:48  [ТС]     Вывести массив и распечатать адреса #3
Спасибо большое!!!! А что значит строчка: matrix=NULL; ???
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
28.03.2013, 23:41     Вывести массив и распечатать адреса #4
Спасибо большое!!!! А что значит строчка: matrix=NULL; ???
Когда освобождаете память, delete недостаточно нужно присваивать значение null
Как то так
C++
1
2
3
int * arr=new arr[10];
delete []arr;
arr=NULL;
NULL это константа
AL78
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 13
31.03.2013, 14:42  [ТС]     Вывести массив и распечатать адреса #5
Спасибо!!!
Yandex
Объявления
31.03.2013, 14:42     Вывести массив и распечатать адреса
Ответ Создать тему
Опции темы

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