Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент - C# (184987)
Формулировка задачи:
1)Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
2)Создать ступенчатый массив, скопировав в него только те элементы из начального массива, которые отличаются от среднего арифметического всех элементов массива не более чем на 30%.
Решение задачи: «Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент»
textual
Листинг программы
- int[,] MainArray = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, { 3,3, 3, 3, 3, 3, 3, 3, 3, 3 } };
- string[][] SteppedArray = new string[MainArray.GetLength(0)][]; // итоговый ступенчатый, будем в стринге делать
- string result = "";
- int Sum=0;// сумма всех
- double AverageValue = 0; // среднее значение
- // считаем среднее;
- for (int i = 0; i < MainArray.GetLength(0); i++)
- for (int j = 0; j < MainArray.GetLength(1); j++)
- Sum+=MainArray[i,j];
- AverageValue = Sum / MainArray.Length;
- // проходимся еще раз сравнивая со средним // будем делать так , записываем нужные значения в строку , разделяя каждый столбец ';' , а элементы столбцов '+'
- for (int i = 0; i < MainArray.GetLength(0); i++)
- {
- if(i!=0) result+=";"; // при первом входе не ставим ';';
- for (int j = 0; j < MainArray.GetLength(1); j++)
- if (Math.Abs(AverageValue - MainArray[i, j]) < (0.3 * AverageValue))
- {// вычитаем из среднего текущий, берем модуль получивщегося и сравниваем с 30% (не будет работать при отрицательных значений в массиве , попробуйте добавить это сами)
- result += MainArray[i, j]+"+";
- }
- }
- string[] temp = result.Split(';');
- for (int i = 0; i < MainArray.GetLength(0); i++)
- SteppedArray[i] = temp[i].Split('+');
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д