В одномерном массиве вычислить номер максимального элемента - 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;
            }
        }
        //------------------------------------------------------------

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы