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