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

матрица - C++

Восстановить пароль Регистрация
 
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
29.12.2010, 14:34     матрица #1
дана действительная матрица размера mxn.Определить числа b1...bm,соответственно значениям средних арифметических элементов строк.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2010, 14:34     матрица
Посмотрите здесь:

матрица C++
Матрица C++
Матрица C++
C++ Матрица
Матрица C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
29.12.2010, 15:47     матрица #2
Цитата Сообщение от besbyblik Посмотреть сообщение
дана действительная матрица размера mxn.Определить числа b1...bm,соответственно значениям средних арифметических элементов строк.
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main() 
{ 
      srand(static_cast<int>(time(NULL)));
      int **mat;
      int M,N;
      double sum=0; 
      cout<<"Enter number rows -> ";
      cin>>M;
      mat=new int*[M];
      cout<<"Enter number cols -> ";
      cin>>N;
      cout<<"Matrix: "<<endl;
       for(int i=0; i<M; i++)
        {
           mat[i]=new int[N];
            for(int j=0; j<N; j++)
            {
                mat[i][j]=rand()%40;
                cout<<mat[i][j]<<"  ";
            }
          cout<<endl;
        }
      cout<<"Result: "<<endl;
       for(int i=0; i<M; i++)
       {
           sum=0;
           for(int j=0; j<N; j++)
           {
               sum+=mat[i][j];
           }
         cout.precision(4);
         cout<<sum/N<<"  ";
       }
      for(int i=0; i<M; i++)
      {
          delete mat[i];
      }
      delete [] mat;
     system("pause");
     return 0;
}
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
29.12.2010, 16:08     матрица #3
Цитата Сообщение от MILAN Посмотреть сообщение
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main() 
{ 
      srand(static_cast<int>(time(NULL)));
      int **mat;
      int M,N;
      double sum=0; 
      cout<<"Enter number rows -> ";
      cin>>M;
      mat=new int*[M];
      cout<<"Enter number cols -> ";
      cin>>N;
      cout<<"Matrix: "<<endl;
       for(int i=0; i<M; i++)
        {
           mat[i]=new int[N];
            for(int j=0; j<N; j++)
            {
                mat[i][j]=rand()%40;
                cout<<mat[i][j]<<"  ";
            }
          cout<<endl;
        }
      cout<<"Result: "<<endl;
       for(int i=0; i<M; i++)
       {
           sum=0;
           for(int j=0; j<N; j++)
           {
               sum+=mat[i][j];
           }
         cout.precision(4);
         cout<<sum/N<<"  ";
       }
      for(int i=0; i<M; i++)
      {
          delete mat[i];
      }
      delete [] mat;
     system("pause");
     return 0;
}


Думаю, тип матрицы нужно сменить на double или float... Ведь элементы могут быть не целыми, а действительными...
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
29.12.2010, 16:15  [ТС]     матрица #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
// casha.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#define n 4
#define m 3
using namespace std;
 
void main(){
int i,j;
int s=0;
int B[m],a[n];
int Matr[m][n];
cout<<"Введите элементы матрицы построчно"<<endl;
for (i=0;i<m;i++){
for (j=0;j<n;j++){
cin>>Matr[i][j];
s=s+a[j];
}
B[i]=s/n;
 
}
cout<<"Результат:";
for (i=0;i<m;i++){
cout<<"B["<<i+1<<"]="<<B[i];
}
}

но чето здесь не правильно мусор выводит
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
29.12.2010, 16:28     матрица #5
1) Ты n и m не вводишь в коде (cin>>m>>n. Циклы не проходят так, как надо.
2) Лучше объяви массивы и s так
C++
1
2
3
double s=0;
double B[m],a[n];
double Matr[m][n];
Тогда более то4но будет...

Добавлено через 4 минуты
Цитата Сообщение от besbyblik Посмотреть сообщение
s=s+a[j];
Тут s=s+Matr[i][j];

И в вывод добавь переход на новую строку.
C++
1
2
3
for (i=0;i<m;i++){
cout<<"B["<<i+1<<"] = "<<B[i]<<"\n";
}
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
29.12.2010, 16:34  [ТС]     матрица #6
Тут s=s+Matr[i][j];
почему так?
если сказано сумма строк,а не всей матрицы.
можно как то без этого s=s+Matr[i][j]; обойтись а как то по другому?
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
29.12.2010, 16:44     матрица #7
Зачем? Нужно только так. Мы проходим по строке, и сумму элементов делим на ихнее количество.
Кстати, ещё одна грубая ошибка.
После B[i]=s/n; обязательно нужно обнулять значение сумы!

C++
1
2
B[i]=s/n;
s=0;
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
29.12.2010, 16:49     матрица #8
besbyblik, чем вам мой вариант не нравится?
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
29.12.2010, 16:50  [ТС]     матрица #9
а потом столбцы удалять нужно.да?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2010, 16:57     матрица
Еще ссылки по теме:

C++ Матрица
Матрица C++
C++ Матрица

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

Или воспользуйтесь поиском по форуму:
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
29.12.2010, 16:57     матрица #10
Да ну зачем удалять?
Вводим количество строк и столбцов в матрице, потом - саму матрицу.
Мы прошли по первой строке, вычеслили сумму её элементов и поделили на количество. Вывели среднее арифметическое, сумму обнулили.
Потом на следующую строку перешли, то же самое сделали. И так до конца матрицы.
И всё )
Yandex
Объявления
29.12.2010, 16:57     матрица
Ответ Создать тему
Опции темы

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