Индекс находился вне границ массива и Console.WriteLine () выводит 2 раза (надо 1) - C#
Формулировка задачи:
Доброго времени суток! Запутался. Помогите исправить 2 ошибки!
1) Индекс находился вне границ массива
2) Console.WriteLine () выводит 2 раза (надо 1)
Сама программа всё считает правильно!
Условие.
Дана последовательность из m единиц и нулей.Рассмотреть отрезки этой последовательности (подпоследовательности идущих подряд чисел), состоящие из одних нулей.Получить наименьшую из длин рассматриваемых отрезков.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace z4
- {
- class Program
- {
- static void Main(string[] args)
- {
- /*zl 7.77. Дана последовательность из m единиц и нулей.Рассмотреть отрезки этой последовательности
- * (подпоследовательности идущих подряд чисел), состоящие из одних нулей.Получить наименьшую из
- * длин рассматриваемых отрезков. */
- int []a=new int [10]{0,0,0,0,1,0,0,0,0,0};
- int i,j,k,mn=a.Length,imn;
- Console.Write("Массив: ");
- for (i=0; i<a.Length;i++)
- {
- Console.Write(a[i]+ " ");
- }
- i=1; mn=a.Length; imn=0;
- while(i<=a.Length)
- {
- if (a[i]==a[i-1])
- {
- j=i;k=1;
- while(a[j]==a[j-1] && j<=a.Length)
- {
- j=j+1;
- k=k+1;
- }
- if(k<mn && k>=2)
- {
- mn=k;
- imn=i-1;
- }
- i=i+k;
- }
- else i=i+1;
- if (mn==a.Length)
- {
- Console.WriteLine("Нет одинаковых рядом!");
- }
- else
- Console.WriteLine("Наименьшая длина отрезка из нулей: "+ mn);
- // for (i=imn; i<imn+mn-1;i++)
- // {
- // Console.WriteLine(a[i]+ " ");
- // }
- }
- Console.ReadKey();
- }
- }
- }
Решение задачи: «Индекс находился вне границ массива и Console.WriteLine () выводит 2 раза (надо 1)»
textual
Листинг программы
- using System;
- namespace z4
- {
- class Program
- {
- static void Main()
- {
- int[] a = new[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 1 };
- Console.Write("Массив: ");
- foreach(int item in a)
- {
- Console.Write(item + " ");
- }
- int i = 1;
- int mn = a.Length;
- while (i < a.Length)
- {
- if (a[i] == a[i - 1])
- {
- int j = i;
- int k = 1;
- while (j < a.Length && a[j] == a[j - 1])
- {
- j++;
- k++;
- }
- if (k < mn && k >= 2)
- {
- mn = k;
- }
- i += k;
- }
- else
- {
- i++;
- }
- }
- if (mn == a.Length)
- {
- Console.WriteLine("Нет одинаковых рядом!");
- }
- else
- {
- Console.WriteLine("Наименьшая длина отрезка из нулей: " + mn);
- }
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д