Как сделать сложение единых значений?
Чтобы было понятнее: моя задача - вывести среднее арифметическое для нечетных чисел каждого столбца матрицы.
Дело в том, что в коде, изложенном ниже при выводе появляется недочет: например, при выводе среднего арифметического для 3 столбца данная строчка появляется 2 раза, потому что в этом столбце 2 нечетных значения.
Мне бы очень хотелось, чтобы эти значения складывались, но не понимаю как это реализовать.
Заранее спасибо!
static void Main(string[] args)
{
int[,] array = new int[3, 6]
{
{2,6,1,45,5,22},
{6,11,34,544,32,11},
{91,48,75,422,55,88 }
};
int[] mas = new int[array.GetLength(1)];
Console.WriteLine("Вывожу массив: ");
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
int sum = 0;
int count = 0;
for (int j = 0; j < array.GetLength(1); j ++)
{
for (int i = 0; i < array.GetLength(0); i++)
{
if (array[i, j] % 2 != 0)
{
sum = sum + array[i, j];
count = sum;
int avg1 = sum / sum;
int avg = avg1 * count;
int a = j + 1;
Console.WriteLine("Среднее арифметическое для нечетных чисел для " + a + " столбца = " + avg);
sum = 0;
count = 0;
avg1 = 0;
avg = 0;
}
}
}
}
Ответы (1 шт):
Идея правильная, но немного перемудрили и запутались.
int avg1 = sum / sum;
Сколько будет, если число разделить само на себя?
int avg = avg1 * count;
А если то что получилось умножить на другое число?
avg1 = 0;
avg = 0;
Переменные не надо обнулять, если область их объявления в цикле текущая, а не выше, они же переобъявятся заново в следующей итерации цикла.
Вывод в консоль здесь надо для каждого столбца делать, а не для каждой ячейки, поэтому его надо вынести из вложенного цикла.
static void Main(string[] args)
{
int[,] array = new int[3, 6]
{
{ 2, 6, 1, 45, 5,22 },
{ 6, 11,34,544,32,11 },
{ 91,48,75,422,55,88 }
};
Console.WriteLine("Вывожу массив: ");
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
for (int j = 0; j < array.GetLength(1); j++)
{
int sum = 0;
int count = 0;
for (int i = 0; i < array.GetLength(0); i++)
{
if (array[i, j] % 2 != 0)
{
sum += array[i, j];
count++;
}
}
if (count > 0)
Console.WriteLine("Среднее арифметическое для нечетных чисел для " + (j + 1) + " столбца = " + sum / count);
else
Console.WriteLine("В столбце " + (j + 1) + " нет нечетных числел");
}
Console.ReadKey();
}
Вывод в консоль
Вывожу массив:
2 6 1 45 5 22
6 11 34 544 32 11
91 48 75 422 55 88
Среднее арифметическое для нечетных чисел для 1 столбца = 91
Среднее арифметическое для нечетных чисел для 2 столбца = 11
Среднее арифметическое для нечетных чисел для 3 столбца = 38
Среднее арифметическое для нечетных чисел для 4 столбца = 45
Среднее арифметическое для нечетных чисел для 5 столбца = 30
Среднее арифметическое для нечетных чисел для 6 столбца = 11