В одномерном массиве вычислить номер максимального элемента массива - C#
Формулировка задачи:
Помогите пожалуйста исправить код.
Вот задание:
В одномерном массиве, состоящем из n целых элементов, вычислить:
1) номер максимального элемента массива;
2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n = 0;
int res = 1;
Random r = new Random();
while (n <= 0)
{
Console.WriteLine("Введите количество элементов массива: ");
n = Convert.ToInt32(Console.ReadLine());
}
int[] array = new int[n];
Console.WriteLine("Исходный массив:");
for (int i = 0; i < n; i++)
{
array[i] = r.Next(-20, 20);
if (array[i] < 0)
{
res *= array[i];
}
Console.Write("{0} ", array[i].ToString());
}
Console.WriteLine("\nПроизведение отрицательных элементов равно: {0}", res.ToString());
int max = array[0];
int index = 0;
int[] retArray = new int[n];
Console.WriteLine("Массив обратный к исходному:");
for (int i = 0; i < n; i++)
{
if (array[i] > max)
{
max = array[i];
index = i;
}
retArray[i] = array[n - i - 1];
Console.Write("{0} ", retArray[i].ToString());
}
int sum = 0;
for (int i = 0; i < n; i++)
{
if (i < index)
{
sum += array[i];
}
}
Console.WriteLine("\nCумма элементов находящихся до максимального: {0}", sum.ToString());
}
}
}Решение задачи: «В одномерном массиве вычислить номер максимального элемента массива»
textual
Листинг программы
static void Main(string[] args)
{
int arrayLength = 0;
int[] mainArray;
Random rndGenerator = new Random();
while (arrayLength <= 0)
{
Console.WriteLine("Введите количество элементов массива: ");
arrayLength = Convert.ToInt32(Console.ReadLine());
}
mainArray = new int[arrayLength];
int negativesProduct = 1;
int[] reverseArray = new int[arrayLength];
int sumToMax = 0;
int maxValue = int.MinValue;
int maxValueIndex = 0;
int[] zeroValuesIndex = new int[2] { int.MinValue, int.MinValue };
int zeroProduct = 1;
Console.Write("Исходный массив: ");
for (int i = 0; i < arrayLength; i++)
{
mainArray[i] = rndGenerator.Next(-20, 20);
Console.Write(mainArray[i] + " ");
if (mainArray[i] < 0)
negativesProduct *= mainArray[i];
reverseArray[arrayLength - i - 1] = mainArray[i];
if (maxValue < mainArray[i])
{
maxValue = mainArray[i];
maxValueIndex = i;
}
if (i == arrayLength - 1)
{
for (int k = 0; k < maxValueIndex; k++)
sumToMax += mainArray[k];
Console.WriteLine();
}
if (mainArray[i] == 0)
{
if (zeroValuesIndex[0] == int.MinValue)
zeroValuesIndex[0] = i;
else if (zeroValuesIndex[1] == int.MinValue)
{
zeroValuesIndex[1] = i;
for(int n = zeroValuesIndex[0] + 1; n < zeroValuesIndex[1]; n++)
{
zeroProduct *= mainArray[n];
}
}
}
}
Console.WriteLine("Cумма элементов находящихся до максимального: {0}", sumToMax);
Console.WriteLine("Произведение отрицательных элементов равно: {0}", negativesProduct);
Console.WriteLine("Номер максимального элемента массива: {0}", maxValueIndex);
Console.WriteLine("Произведение элементов массива, расположенных между первым и вторым нулевыми элементами: {0}", zeroProduct);
Console.Read();
}