В одномерном массиве вычислить номер максимального элемента - 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;
- }
- }
- //------------------------------------------------------------
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д