нахожу среднее арифметическое всех элементов двумерно массива но почему-то значение округлется, а мне нужно чтобы выдавало что то вроде 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
. Это происходит из-за автоматического приведения типов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
мне нужно вывести матрицу n*n, а всё выводится в одну строчку, что неправильно?