В одномерном массиве вычислить номер максимального элемента - C#
Формулировка задачи:
Здравствуйте! Помогите пожалуйста поправить код. Неправильный вывод элементов массива.
В одномерном массиве, состоящем из n целых элементов, вычислить:
1) номер максимального элемента массива;
2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication5 { class Function { //функция печати массива на экран public static void PrintArray(int[] a) { foreach (int i in a) Console.Write(i + " "); Console.WriteLine(); } //---------------------------------------------- //функция поиска максимального элемента в массиве public int IndexOfMaxElement(int[] a, int size) { int max = a[0]; int index = 0; for (int i = 0; i < size; i++) { if (a[i] > max) { max = a[i]; index = i; } } return index; } //----------------------------------------------------- //функция поиска индексов левого и правого нулей public void ZeroIndex(int[] a, int size, out int leftIndex, out int rightIndex) { leftIndex = rightIndex = 0; //в данном цикле находится индекс самого левого нуля for (int i = 0; i < size; i++) { if (a[i] == 0) { leftIndex = i; break; } } //---------------------------------------------- //в данном цикле находится индекс самого правого нуля for (int i = size - 1; i >= 0; i--) { if (a[i] == 0) { rightIndex = i; break; } } //------------------------------------------------------ } //----------------------------------------------------- //функция находит произведение элементов между крайними нулями public int Proizvedenie(int[] a, int leftIndex, int rightIndex) { int proiz = 1; for (int i = leftIndex + 1; i < rightIndex; i++) proiz *= a[i]; return proiz; } //------------------------------------------------------------- //функция перестановки элементов в массиве public void Exchange(int[] a, int size) { int temp; //для обмена значений for (int i = 0, j = 1; i < size / 2; i++, j += 2) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } //------------------------------------------------------------ } class MainClass { static void Main() { const int arraySize = 10; //размер массива int[] array = new int[arraySize] { 12, 2, 0, 4, 7, 3, 0, 8, 9, 4 }; //сам массив Function function = new Function(); int leftIndex, rightIndex; Console.WriteLine("Исходный массив:" + Environment.NewLine); Function.PrintArray(array); Console.WriteLine(); Console.Write("Индекс максимального элемента в массиве: " + function.IndexOfMaxElement(array, arraySize) + Environment.NewLine); function.ZeroIndex(array, arraySize, out leftIndex, out rightIndex); Console.WriteLine("Произведение элементов, находящихся между крайними нулями: " + function.Proizvedenie(array, leftIndex, rightIndex) + Environment.NewLine); Console.WriteLine("Массив после перестановки элементов: " + Environment.NewLine); function.Exchange(array, arraySize); Function.PrintArray(array); Console.ReadKey(); } } }
Решение задачи: «В одномерном массиве вычислить номер максимального элемента»
textual
Листинг программы
//функция перестановки элементов в массиве public void Exchange(int[] a, int size) { int temp; //для обмена значений for (int i = 0, j = 0; i < size / 2; i++, j += 2) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } //------------------------------------------------------------
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д