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

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

Войти
Регистрация
Восстановить пароль
 
kabka
13 / 13 / 1
Регистрация: 12.05.2013
Сообщений: 37
#1

Дружественные функции, не правильно считается сумма элементов массива и матрицы - C++

04.12.2013, 17:35. Просмотров 441. Ответов 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
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h> 
#include <stdio.h> 
using namespace std;
 
class array;
 
class matrix
{
int n,m;
int **a;
public:
    matrix();
    ~matrix();
    friend float func (array,matrix);
    friend void get(array,matrix);
};
 
class array
{
int *a,n;
public:
    array();
    ~array();
    friend float func (array,matrix);
    friend void get(array,matrix);
};
 
matrix::matrix()
{
    int i,j;
    cout<<"\n введите n , m : ";
    cin>>n>>m;
    a =new int* [m];
    for(i=0;i<m;i++)
    a[i]=  new int [n];
      for(i=0;i<n;i++)
          for (j=0;j<m;j++)
         a[i][j]=(rand()%100);
}
 
array::array()
{
    cout<<"\n введите n ";
    cin>>n; 
    a=new int[n]; 
      for(int i=0;i<n;i++)
          a[i]=(rand()%100);
}
 
void get(array a , matrix b )
{
    int i,j;
    for(i=0;i<a.n;i++)
        cout<<a.a[i]<<"  ";
    cout<<"\n\n";
    for(i=0;i<b.n;i++)
    {
        cout<<endl;
          for (j=0;j<b.m;j++)
          {
              cout.width(3);
          cout<<b.a[i][j]<<"  ";
          }
    }
    
    
}
 
 
float func (array a , matrix b )
{
    int i,j;
    int sum1=0,sum2=0;
    for (i=0;i<a.n;i++)
        sum1+=a.a[i];
    for (i=0;i<b.n;i++)
        for (j=0;j<b.m;j++)
        sum2+=b.a[i][j];
    
    cout<<"Сумма элементов массива "<<sum1<<endl;
    cout<<"Сумма элементов матрицы "<<sum2<<endl;
}
 
matrix::~matrix()
{
    for(int i=0;i<m;i++)
    delete a[i];
    delete []a;
}
 
array::~array()
{
    delete []a;
}
 
int main()
{
    setlocale(0,"");
    array a;
    matrix b;
    func(a,b);
    get(a,b);
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 17:35     Дружественные функции, не правильно считается сумма элементов массива и матрицы
Посмотрите здесь:

Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная C++
C++ Сумма элементов массива, от первого до последнего нулевого, с использованием функции
C++ Для матрицы найти такие k и n, что сумма элементов k-столбца совпадает с суммой элементов n-й строки
Почему правильно считается C++
Классы, матрицы, перегрузка операторов, дружественные функции C++
C++ Сумма элементов главной диагонали двумерного массива(матрицы)
C++ Если сумма индексов каких-либо двух элементов матрицы, расположенных ниже главной диагонали, равна минимальному элементу матрицы, то..
C++ Сумма элементов массива до максимального. Создать шаблон функции
C++ Двумерный массив. Неправильно считается сумма. Как исправить?
C++ Какова будет сумма элементов массива array внутри iv3d по завершению функции?
C++ Неправильно считается произведение элементов массива, принадлежащих заданному диапазона
C++ Сумма четных элементов массива (переписать с использованием функции)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 19:13     Дружественные функции, не правильно считается сумма элементов массива и матрицы #2
C++
1
2
3
4
5
6
a =new int* [m];
for(i=0;i<m;i++)
   a[i]=  new int [n];
for(i=0;i<n;i++)
   for (j=0;j<m;j++)
      a[i][j]=(rand()%100);
Сначала m - это строки, n - столбцы, потом, при заполнении, уже n - строки, m - столбцы. Вы уж, как-то, определитесь с этим...
kabka
13 / 13 / 1
Регистрация: 12.05.2013
Сообщений: 37
04.12.2013, 23:39  [ТС]     Дружественные функции, не правильно считается сумма элементов массива и матрицы #3
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
a =new int* [m];
for(i=0;i<m;i++)
   a[i]=  new int [n];
for(i=0;i<n;i++)
   for (j=0;j<m;j++)
      a[i][j]=(rand()%100);
Сначала m - это строки, n - столбцы, потом, при заполнении, уже n - строки, m - столбцы. Вы уж, как-то, определитесь с этим...
вроде все верно, но не суть..

если даже взять в моем коде одномерный массив, то в нем сумма тоже не верно считается. В этом и заключался мой вопрос, что не так в подсчете суммы?

Добавлено через 7 минут
извиняюсь, проверил, заполнял массив вручную

итог- сумма посчитана верно
неверно выводит массив и матрицу на экран

но проблема осталась, как выводить правильно?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
int main()
{
    setlocale(0,"");
    array a;
    matrix b;
    func(a,b);
    get(a,b);
    getch();
}
нашел проблемку, если первой использую функцию подсчета, а второй вывод, то сумма выходит верно, а вывод неправильный

если же первый ставить вывод, то выводит верно, но считает неправильно
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.12.2013, 00:36     Дружественные функции, не правильно считается сумма элементов массива и матрицы #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
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h> 
#include <stdio.h> 
using namespace std;
 
class array;
 
class matrix
{
int n, m;
int **a;
public:
    matrix();
    matrix(const matrix&);
    ~matrix();
    
    friend void func (array,matrix);
    friend void get(array,matrix);
};
 
class array
{
int *a;
int n;
public:
    array();
    array(const array&);
    ~array();
    
    friend void func (array, matrix);
    friend void get(array, matrix);
};
 
matrix::matrix()
{
    int i,j;
    cout<<"\n введите n , m : ";
    cin >> n >> m;
    a = new int* [n];
    for(i=0;i<n;i++)
        a[i] =  new int [m];
    
    for(i=0;i<n;i++)
       for (j=0;j<m;j++)
         a[i][j]=(rand()%100);
}
 
matrix::matrix(const matrix& mat)
{
    n = mat.n;
    m = mat.m;
    a = new int* [n];
    for(int i=0;i<n;i++)
        a[i] =  new int [m];
    
    for(int i=0;i<n;i++)
       for (int j=0;j<m;j++)
         a[i][j]=mat.a[i][j];
}
 
array::array()
{
    cout<<"\n введите n ";
    cin>>n; 
    a=new int[n]; 
      for(int i=0;i<n;i++)
          a[i]=(rand()%100);
}
 
array::array(const array& arr)
{
    n = arr.n;
    a=new int[n]; 
      for(int i=0;i<n;i++)
          a[i]= arr.a[i];
}
 
 
 
void get(array a , matrix b )
{
    int i,j;
    for(i=0;i<a.n;i++)
        cout<<a.a[i]<<"  ";
    cout<<"\n\n";
    for(i=0;i<b.n;i++)
    {
          cout<<endl;
          for (j=0;j<b.m;j++)
          {
              cout.width(3);
              cout<<b.a[i][j]<<"  ";
          }
    }
}
 
 
void func (array a , matrix b )
{
    int i,j;
    int sum1=0,sum2=0;
    for (i=0;i<a.n;i++)
        sum1+=a.a[i];
    for (i=0;i<b.n;i++)
        for (j=0;j<b.m;j++)
            sum2+=b.a[i][j];
    
    cout<<"\nСумма элементов массива "<<sum1<<endl;
    cout<<"Сумма элементов матрицы "<<sum2<<endl;
}
 
matrix::~matrix()
{
    for(int i=0;i<n;i++)
        delete a[i];
    delete [] a;
}
 
array::~array()
{
    delete [] a;
}
 
int main()
{
    setlocale(0,"");
    
    array a;
    matrix b;
    
    get(a,b);
    func(a,b);
 
    getch();
}
Yandex
Объявления
05.12.2013, 00:36     Дружественные функции, не правильно считается сумма элементов массива и матрицы
Ответ Создать тему
Опции темы

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