Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

04.12.2013, 17:35. Просмотров 474. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дружественные функции, не правильно считается сумма элементов массива и матрицы (C++):

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции) - C++
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна.

Классы, матрицы, перегрузка операторов, дружественные функции - C++
Гляньте пожалуйста, как получилось сделать задание, что неверно: Создать класс, в котором перегрузить операторы: &amp; для...

Сумма элементов главной диагонали двумерного массива(матрицы) - C++
Суть в том, что задаётся размерность матрицы (количество строк(i) равно количеству столбцов(j)), после чего складываются элементы у которых...

Сумма четных элементов массива (переписать с использованием функции) - C++
Здравствуйте. Передо мной встала такая задача. Сделать обычную программу в программу через ф-цию. Найти сумму четных элементов массива. ...

Сумма элементов массива до максимального. Создать шаблон функции - C++
нужно оформить перегрузку функции, кто может подсказать? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main...

Сумма элементов массива, от первого до последнего нулевого, с использованием функции - C++
Практически готово, только при компиляции ошибка, не могу понять где: #include &lt;iostream&gt; using namespace std; int summa(int); ...

3
alsav22
5431 / 4826 / 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 - столбцы. Вы уж, как-то, определитесь с этим...
0
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();
}
нашел проблемку, если первой использую функцию подсчета, а второй вывод, то сумма выходит верно, а вывод неправильный

если же первый ставить вывод, то выводит верно, но считает неправильно
0
alsav22
5431 / 4826 / 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();
}
0
05.12.2013, 00:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 00:36
Привет! Вот еще темы с ответами:

Максимальная сумма элементов строки / минимальная сумма элементов столбца матрицы - C++
дан двумерный массив. Найти: а)максимальную сумму элементов строки б) минимальную сумму элементов столбца нужна помощь не знаю что...

Какова будет сумма элементов массива array внутри iv3d по завершению функции? - C++
В коде определена следующая структура: struct ivector3d { int array; };И определена следующая функция: void scale(ivector3d *v,...

Неправильно считается произведение элементов массива, принадлежащих заданному диапазона - C++
В одномерном массиве, который состоит из n целых элементов, вычислить произведение элементов массива из диапазона , расположенных между...

Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки - C++
Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки. Найти...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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