@King_Of_Demons
Junior C# Developer

Как обработать исключение System.OverflowException?

Начал делать задания на платформе Codewars и столкнулся с проблемой, что задание я решил, тесты которые есть, программа проходит, а на сайте программа выдает ошибку System.OverflowException : Array dimensions exceeded supported range. Так как я не знаю что у них еще за тесты есть, я попытался повысить число которое уходит в функцию, но ошибку не могу исправить, долго думает, вот и прошу вас помочь.
namespace Test
{

    using System;

    public static class Program
    {
        public static ulong OddCount(ulong n)
        {
            ulong count = 0, odd = 0;
            ulong[] array = new ulong[n];
            for (ulong i = 0; i < n; i++)
            {
                count++;
                array[i] = count;

                if (array[i] % 2 != 0 && array[i] > 0)
                {
                    odd++;
                }
            }
            Console.WriteLine(odd);
            return odd;
        }


        static void Main(string[] args)
        {
            ulong i = 25000;
            OddCount(i);
            Console.ReadKey();
        }
    }
}

//NUnit Test

namespace Solution 
{
  using NUnit.Framework;
  using System;

  [TestFixture]
  public class SampleTest
  {
    [Test]
    public void Test()
    {
      Assert.AreEqual(7, Kata.OddCount(15));
      Assert.AreEqual(7511, Kata.OddCount(15023));
    }
  }
}
  • Вопрос задан
  • 433 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
Очевидно, что в тестах туда пихают число, такое что массив такого размера выделить невозможно. Предположу, что это что-то типа больше 2^32.
Для решения этой задачи массив вообще не нужен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы