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

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


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

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

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