Индекс находился вне границ массива и Console.WriteLine () выводит 2 раза (надо 1) - C#

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

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

Доброго времени суток! Запутался. Помогите исправить 2 ошибки! 1) Индекс находился вне границ массива 2) Console.WriteLine () выводит 2 раза (надо 1) Сама программа всё считает правильно!

Условие.

Дана последовательность из m единиц и нулей.Рассмотреть отрезки этой последовательности (подпоследовательности идущих подряд чисел), состоящие из одних нулей.Получить наименьшую из длин рассматриваемых отрезков.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace z4
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. /*zl 7.77. Дана последовательность из m единиц и нулей.Рассмотреть отрезки этой последовательности
  12. * (подпоследовательности идущих подряд чисел), состоящие из одних нулей.Получить наименьшую из
  13. * длин рассматриваемых отрезков. */
  14. int []a=new int [10]{0,0,0,0,1,0,0,0,0,0};
  15. int i,j,k,mn=a.Length,imn;
  16. Console.Write("Массив: ");
  17. for (i=0; i<a.Length;i++)
  18. {
  19. Console.Write(a[i]+ " ");
  20. }
  21. i=1; mn=a.Length; imn=0;
  22. while(i<=a.Length)
  23. {
  24. if (a[i]==a[i-1])
  25. {
  26. j=i;k=1;
  27. while(a[j]==a[j-1] && j<=a.Length)
  28. {
  29. j=j+1;
  30. k=k+1;
  31. }
  32. if(k<mn && k>=2)
  33. {
  34. mn=k;
  35. imn=i-1;
  36. }
  37. i=i+k;
  38. }
  39. else i=i+1;
  40. if (mn==a.Length)
  41. {
  42. Console.WriteLine("Нет одинаковых рядом!");
  43. }
  44. else
  45. Console.WriteLine("Наименьшая длина отрезка из нулей: "+ mn);
  46. // for (i=imn; i<imn+mn-1;i++)
  47. // {
  48. // Console.WriteLine(a[i]+ " ");
  49. // }
  50. }
  51. Console.ReadKey();
  52. }
  53. }
  54. }

Решение задачи: «Индекс находился вне границ массива и Console.WriteLine () выводит 2 раза (надо 1)»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace z4
  4. {
  5.     class Program
  6.     {
  7.         static void Main()
  8.         {
  9.             int[] a = new[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 1 };
  10.  
  11.             Console.Write("Массив: ");
  12.             foreach(int item in a)
  13.             {
  14.                 Console.Write(item + " ");
  15.             }
  16.  
  17.             int i = 1;
  18.             int mn = a.Length;
  19.  
  20.             while (i < a.Length)
  21.             {
  22.                 if (a[i] == a[i - 1])
  23.                 {
  24.                     int j = i;
  25.                     int k = 1;
  26.  
  27.                     while (j < a.Length && a[j] == a[j - 1])
  28.                     {
  29.                         j++;
  30.                         k++;
  31.                     }
  32.  
  33.                     if (k < mn && k >= 2)
  34.                     {
  35.                         mn = k;
  36.                     }
  37.  
  38.                     i += k;
  39.                 }
  40.                 else
  41.                 {
  42.                     i++;
  43.                 }
  44.             }
  45.  
  46.             if (mn == a.Length)
  47.             {
  48.                 Console.WriteLine("Нет одинаковых рядом!");
  49.             }
  50.             else
  51.             {
  52.                 Console.WriteLine("Наименьшая длина отрезка из нулей: " + mn);
  53.             }
  54.  
  55.             Console.ReadKey();
  56.         }
  57.     }
  58. }

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


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

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

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы