Предмет: Информатика,
автор: JenyaPivovar
С++.Дана целая матрица А(N,M). Составить программу подсчета среднего
арифметического значения матрицы. Найти отклонение от среднего у элементов
каждой строки.
Алгоритм составил, всё по формуле, но вот почему-то выводит не точный результат, иногда вообще выводит бред.
JenyaPivovar:
Сюда весь код не влезает, поэтому кину сначала первую часть, потом вторую
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
using namespace std;
void main()
{
srand(time(NULL));
const int n = 5, m = 4;
int a[n][m];
cout << "Your matrix" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
a[i][j] = rand() % 10;
cout << a[i][j] << " ";
}
cout << endl;
}
#include <ctime>
#include <cstdlib>
#include <cmath>
using namespace std;
void main()
{
srand(time(NULL));
const int n = 5, m = 4;
int a[n][m];
cout << "Your matrix" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
a[i][j] = rand() % 10;
cout << a[i][j] << " ";
}
cout << endl;
}
float sum = 0, count = 0.0;
for (int i = 0; i < n; i++) {
sum = 0;
count = 0;
for (int j = 0; j < m; j++) {
count++;
sum += a[i][j];
}
sum /= count;
for (int j = 0; j < m; j++) {
a[i][j] = a[i][j] - sum;
a[i][j] = pow(a[i][j], 2);
}
sum = 0;
for (int j = 0; j < m; j++) {
sum += a[i][j];
}
sum /= count;
cout << "Raw " << i+1 << " otklonenie ot srednego = " << sqrt(sum) << endl;
}
cin.get();
cin.get();
}
for (int i = 0; i < n; i++) {
sum = 0;
count = 0;
for (int j = 0; j < m; j++) {
count++;
sum += a[i][j];
}
sum /= count;
for (int j = 0; j < m; j++) {
a[i][j] = a[i][j] - sum;
a[i][j] = pow(a[i][j], 2);
}
sum = 0;
for (int j = 0; j < m; j++) {
sum += a[i][j];
}
sum /= count;
cout << "Raw " << i+1 << " otklonenie ot srednego = " << sqrt(sum) << endl;
}
cin.get();
cin.get();
}
сейчас посмотрим.
я так понимаю само среднее арифметическое значение матрицы вы не выводите, а сразу отклонение у столбца?
Да
отклонение строки*
а если массив с int a[n][m] на double a[n][m] заменить?
возможно, сейчас проверю
Боже, спасибо вам, 2 дня мучался, а оказывается нужно было тип данных массива изменить, можете ответить, что-бы получить баллы.
Ответы
Автор ответа:
2
Если вам важна точность вычисления данных вплоть до сотых или тысячных надо использовать типы с плавающей точкой, но не везде а только там где над ними проводят любые арифметические действия
Похожие вопросы
Предмет: Математика,
автор: kotfeo111
Предмет: Русский язык,
автор: sayuncsayunc
Предмет: Химия,
автор: swhat965
Предмет: Математика,
автор: strak