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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 5.00
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
#1

Построить динамический одномерный массив из элементов матрицы - C++

28.01.2010, 06:54. Просмотров 2893. Ответов 12
Метки нет (Все метки)

Дана динамическая целочисленная матрица.Построить динамический одномерный массив,каждый эллемент которого равен сумме элементов одной строки исходной матрицы.
Освободить память от матрицы,найти произведение эллементов одномерного массива и записать его как динамическую переменную.
Все исходные данные,результаты и соответсвующие адреса распечатать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2010, 06:54     Построить динамический одномерный массив из элементов матрицы
Посмотрите здесь:
Массив: Построить из динамического одномерный массив,каждый элемент, которого равен сумме элементов одной строки исходной матрицы. C++
Построить одномерный вещественный массив X из n элементов C++
Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы C++
Динамический массив. Определить количество различных элементов матрицы C++
Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы C++
C++ Сформировать одномерный массив Х из элементов матрицы А...
C++ Сформировать одномерный массив из элементов матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 07:08     Построить динамический одномерный массив из элементов матрицы #2
Декларации классов матрицы и одномерного массива у тебя есть? И каков принят порядок индексов? Первый индекс номер строки, а второй столбца, или наоборот? Достаточно ли сделать код, который будет, юзя методы и операторы, делать то, что ты хочешь, или надо реализовать и сами классы?
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
28.01.2010, 07:15  [ТС]     Построить динамический одномерный массив из элементов матрицы #3
Вообще задача находится из раздела указатель,т.е. самая первая....
обозначения вводятся такие i-сторока j-столбец
Программу надо по простому написать,без всяких замудрений..))

Добавлено через 1 минуту
Декларации классов матрицы и одномерных массивов у меня нет....да и просто достаточно сделать код..
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 07:20     Построить динамический одномерный массив из элементов матрицы #4
Цитата Сообщение от J__S(Юляшка) Посмотреть сообщение
без всяких замудрений
. Как? Вот же:
Цитата Сообщение от J__S(Юляшка) Посмотреть сообщение
Дана динамическая целочисленная матрица. Построить динамический одномерный массив
... Значит уже придётся работать через их интерфейсы.

Добавлено через 2 минуты
Порядок индексов ты дала. А где читать размеры матрицы? Готовые размеры не давай. Так как матрица динамическая, то её размеры могут меняться и прога должна их прочитать из методов самой матрицы. Какие есть конструкторы массива? Как задаётся его размер? Как вообще названы классы матрицы и массива?

Добавлено через 1 минуту
Цитата Сообщение от J__S(Юляшка) Посмотреть сообщение
Декларации классов матрицы и одномерных массивов у меня нет....да и просто достаточно сделать код..
Если нет даже декларации, то нет и классов, а без ниъх такой код работать не будет. Я задекларирую и реализую классы, если ты хоть как то ответишь на вопросы:
1. Как назвать классы?
2. Должны ли их конструкторы иметь параметры и какие именно?
3. Нужны ли дефолтные конструкторы?
4. Как задаются размеры матрицы и одномерного массива?
5. Как назвать методы для чтения этих размеров?
Декларацией называются все эти ответы вместе, записанные согласно правилам языка c++ (а не русского языка, как скорее всего будет в оригинале) + запись на языке c++ самого факта, что это массивы и один из них двумерный.
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
28.01.2010, 07:24  [ТС]     Построить динамический одномерный массив из элементов матрицы #5
Вот смотри я что-то пыталась набрать,но эт только фрагменты,да и то не полностью...
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
#include<stdio.h>
#include<stdlib.h>
#include<alloc.h>
    int main()
    {
    
        int n,m,i,j,s,a;
        int *mp;
        printf("\n Vvedite chislo strok i stolbcov matrici:");
        scanf("%d%d",&n,&m);
        mp=(int*)calloc(n*m,sizeof(int));
        printf("\nVvedite celuy matricy(%d*%d) postrochno:\n",n,m);
        //------------ввод двумерного  массива-----------------
        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
                scanf("%d",mp+i*m+j);
    
//-------------------------------ввод динамического одномерного массива---------------------
    {
        printf("\nVvedite kol-vo elementov massiva:");
    scanf("%d",&m);
    mp=(int*)calloc(m,sizeof(int));
    fflush(stdin);
    printf("\nVvedite massiv iz %d 'ktvtynjd:\n",m);
    for(i=0;i<m;i++)
        scanf("%d",mp+i);
    
        s=0;
        for(j=0;j<m;j++)
            s=s+a;
        printf("%d",s);
        
    printf("\nelementi massiva i ih adresa\n");
    for(i=0;i<m;i++)
        printf("%2%p",*(mp+i),mp+i);
    }
    }
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 07:30     Построить динамический одномерный массив из элементов матрицы #6
А надо что то типа:
C++
1
2
3
4
5
6
7
8
9
10
11
class TArray // Класс массива
{
 protected:
  int *Data; // Данные
  int  Number; // Число элементов
 public:
  TArray (int Number); // Конструктор с параметром-числом элементов
  int GetNumber (); // Функция, читающая размер массива
  int & operator [] (int i);
 ~TArray();
};
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
28.01.2010, 07:35  [ТС]     Построить динамический одномерный массив из элементов матрицы #7
Это ты уже в глубь полез,более так граматно делаешь.....
Если смотреть по методичке,то мы еще классы не проходили.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 07:54     Построить динамический одномерный массив из элементов матрицы #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я думал массив так массив. А у тебя блок в качестве массива? Ну в принципе адресовать его как массив можно, а значит и называть блок массивом в принципе тоже. Разница не принципиальна, просто у тебя код методов, конструкторов, деструкторов и операторов будет валяться инлайном прямо в проге. Тогда так:
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
#include <iostreem.h> // Так кажется
int main()
{
 int n,m;
 int i,j;
 int **a=NULL;
 int *b=NULL;
 cout<<"Введи число строк";
 cin>>n;
 a=new int * [n] ;
 if (a)
 { cout<<"Введи число столбцов";
  cin>>m;
  for (i=n-1 ;i>=0; --i)
  {
    a[i]=new int [m];
    if (a[i]==NULL)
    {
     cout<<"Не хватает памяти";
     for (j=n-1; j>=i; --j)
     {
      delete []a[j];
     }
     delete [] a;
     return 0;
    }
  }
  for (i=0 ;i<n; ++i)
  {
   for (j=0 ;j<m; ++j)
   {
    count<<"a[";
    count<<i+1;
    count<<",";
    count<<j+1;
    count<<"]=";
    cin>>a[i][j];
    count<<" ";
   }
   count<<"\n";
  }
  b=new int [n];
  if (b)
  {
   for (i=0; i<n; ++i)
   {
    b[i]=0;
    for (j=m-1; j>=0; --j)
    {
     b[i]+=a[i][j];
    }
    cout<<"b[";
    cout<<"i";
    cout<<"]=";
    cout<<b[i];
   }
  }
  else
  {
   cout<<"Не хватает памяти";
  }
 }
 else
 {
  cout<<"Не хватает памяти";
 }
 if (a)
 {
  for (i=n-1; i>=0; --i)
  {
   delete []a[i];
  }
  delete []a;
 }
 if (b)
 {
  delete []b;
 }
 return 0;
}
Добавлено через 5 минут
Если надо именно со scanf и printf, то можно переделать и под них.
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
28.01.2010, 07:57  [ТС]     Построить динамический одномерный массив из элементов матрицы #9
Да надо с использованием scanf и Printf
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 08:11     Построить динамический одномерный массив из элементов матрицы #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include<stdio.h>
#include<stdlib.h>
#include<alloc.h>
int main()
{
 int n,m;
 int i,j;
 int **a=NULL;
 int *b=NULL;
 printf("Введи число строк");
 scanf("%d",&n);
 a=new int * [n] ;
 if (a)
 {
  printf("Введи число столбцов");
  scanf ("%d",&m);
  for (i=n-1 ;i>=0; --i)
  {
    *(a+i)=new int [m];
    if ((*a+i)==NULL)
    {
     cout<<"Не хватает памяти";
     for (j=n-1; j>=i; --j)
     {
      delete []*(a+i);
     }
     delete [] a;
     return 0;
    }
  }
  for (i=1 ;i<=n; ++i)
  {
   for (j=1 ;j<=m; ++j)
   {
    printf ("a[%d,%d]=",&i,&j);
    scanf("%d",*(a+i-1)+j-1;
    printf (" ");
   }
   printf ("\n");
  }
  b=new int [n];
  if (b)
  {
   for (i=1; i<=n; ++i)
   {
    b[i]=0;
    for (j=m-1; j>=0; --j)
    {
     b[i]+=a[i][j];
    }
    printf("b[%d]="%d,&i,b+i-1);
   }
  }
  else
  {
   printf("Не хватает памяти");
  }
 }
 else
 {
  printf("Не хватает памяти");
 }
 if (a)
 {
  for (i=n-1; i>=0; --i)
  {
   delete []*(a+i);
  }
  delete []a;
 }
 if (b)
 {
  delete []b;
 }
 return 0;
}
Добавлено через 2 минуты
Можно оставить и адресацию массива, будет просто медленнее. Поэтому даже массивы рекомендуется адресовать как блоки. Это называется "использовать арифметику указателей".
J__S(Юляшка)
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 22
28.01.2010, 08:16  [ТС]     Построить динамический одномерный массив из элементов матрицы #11
Да-Да именно,с использованием арифметики указателя!!!!!!
Спасибочки,большое очень благодарна!!)))
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2010, 08:19     Построить динамический одномерный массив из элементов матрицы #12
Но эта рекомендация касается только статических массивов, и кода операторов динамических массивов. Прога с динамическим массивом, реализованным в виде класса, работает только как с массивом, но не как с блоком. И ещё. Блок - единственное быстрое внутренне представление массива. Даже статический массив на самом джеле указатель на блок.

Добавлено через 2 минуты
В 67 строке пропустил замену оператора индексации на арифметику указателя. Щас исправил. Смотри последний вариант 10 поста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 11:22     Построить динамический одномерный массив из элементов матрицы
Еще ссылки по теме:
Сформировать одномерный массив из элементов матрицы C++
Сформировать одномерный массив из элементов матрицы C++
Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. C++
Построить одномерный массив, в котором элементы равны суммам элементов строк данного двумерного массива C++
Сформировать одномерный массив из элементов матрицы по условию C++

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

Или воспользуйтесь поиском по форуму:
L45
0 / 0 / 1
Регистрация: 13.10.2012
Сообщений: 33
28.03.2013, 11:22     Построить динамический одномерный массив из элементов матрицы #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Добавлено через 7 минут
Написала код для этой задачи, но программа немного не так работает. Не получается правильно построить массив, распечатать адреса и произведение. Помогите пожалуйста!
Код:
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>
#include <windows.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;
}
Yandex
Объявления
28.03.2013, 11:22     Построить динамический одномерный массив из элементов матрицы
Ответ Создать тему
Опции темы

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