Найти последовательность подряд идущих нечетных элементов с максимальной суммой - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, получил задания на C# которое звучит следующим образом. Найти последовательность подряд идущих не четных элементов с максимальной суммой. Исходные данные, одномерный массив. Вот так я все это реализовал.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Array
{
    class Program
    {
        static void Main(string[] args)
       {
            int[] Array = new int[10];
            Array = CreateArray(Array);
            WriteArray(Array);
            Array = SearchNum(Array);
            WriteArray(Array);
            
        }
 
        static private int[] CreateArray(int[] Array)
        {
            Random rnd = new Random();
            for (int i = 0; i < Array.Length; i++) 
                Array[i] = rnd.Next(1, 5);
            return Array;
        }
 
        static private int[] SearchNum(int[] Array)
        {
            int summ = 0;
            int max = 0;
            int count = 0;
            int buffcount = 0;
            int[][] buffArray = new int[Array.Length][];
            buffArray[count] = new int[Array.Length];

            for (int i = 0; i < Array.Length; i++)
            {
                if (Array[i] % 2 != 0)
                {
                    if (i + 1 != Array.Length && Array[i] == Array[i + 1])
                    {
                        buffArray[count][i] = Array[i];
                        buffArray[count][i + 1] = Array[i + 1];
                    }
                    if (i > 0 && i + 1 != Array.Length && Array[i] != Array[i + 1] && Array[i] == Array[i - 1])
                    {
                        count++;
                        buffArray[count] = new int[Array.Length];
                    }
                    if (i + 1 == Array.Length && Array[i] == Array[i - 1])
                    {
                        count++;
                        buffArray[count] = new int[Array.Length];
                    }
                }
            }

            for (int i = 0; i < count; i++)
            {
                for (int j = 0; j < buffArray.Length; j++)
                {
                    summ += buffArray[i][j];
                    if (summ > max)
                    {
                        max = summ;
                        buffcount = i;
                    }
                }
                summ = 0;
            }
 
            return buffArray[buffcount];
        }
 
        static void WriteArray(int[] Array)
        {
            int summ = 0;
            int count = 0; 
 
            Console.WriteLine(" ");
 
            for (int i = 0; i < Array.Length; i++)
            {
                if (Array[i] != 0)
                {
                    count++;
                    Console.Write(Array[i] + " ");
                    summ += Array[i];
                }
            }
            if(summ == 0 )
            {
                Console.Write("Нет не четных элементов идущих подряд.");
            }
            else if(summ != 0 && count < Array.Length)
            {
                Console.Write("Максимальная сумма элементов: " + summ);
            }
            Console.ReadLine();
        }
    }
}
Но все получилось как то сложно, с большим количество букв. Знатоки C#, может быть подскажите какой нибудь код попроще?

Решение задачи: «Найти последовательность подряд идущих нечетных элементов с максимальной суммой»

textual
Листинг программы
static void Main(string[] args)
        {
            int sum, maxSum;
            sum = maxSum = 0;
            int[] a = new int[20];
            Random rnd = new Random();
 
            for (int i = 0; i < 20; i++)
            {
                a[i] = rnd.Next(1, 20);
                Console.Write("{0} ", a[i]);
            }
            Console.WriteLine();
            for (int i = 0; i < 20; i++)
            {
                if (a[i] % 2 != 0)
                {
                    sum += a[i];
                }
                else
                {
                    if (sum > maxSum) maxSum = sum;
                    sum = 0;
                }
            }
            Console.Write("Максимальная сумма: {0}",maxSum);
            Console.ReadKey();
        }

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


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

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

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