нахожу среднее арифметическое всех элементов двумерно массива но почему-то значение округлется, а мне нужно чтобы выдавало что то вроде 4,15 или 6,87 использую такой код:
sum=0;
for (i=0; i<N; i++)
for (j=0; j<M; j++)
{
sum+=a[i][j];
}
sr=sum/(N*M);
printf("%d \n", sum);
printf("%d \n", N);
printf("%d \n", M);
printf("Srednee arifmeticheskoe: %f \n", sr);
изучать си++ начал только недавно, поэтому сильно не пинайте)
Обратите внимание на
sr=sum/(N*M);
У Вас тип переменной sum - целочисленный (возможно, int).
N*M тоже имеет целочисленный тип. Поэтому результат деления тоже имеет целочисленный тип. Уже после выполнения деления этот результат приводится к вещественному типу.
Для того, чтобы результат деления сразу имел вещественный тип, нужно написать так:
sr = static_cast<double>( sum ) / ( N * M );
Вы приводите значение sum к типу double. После чего, делите вещественное число на целое. Результат такой операции - вещественное число.
Можно без явного приведения типов:
sr = sum;
sr = sr / (N * M);
Используйте тип переменной float, и в printf указывайте %f, вместо %d. Это происходит из-за автоматического приведения типов.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей