В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
111759
111759
10.02.2020 10:14 •  Информатика

Нещодавно Козак Вус знайшов чарівне коло! По ньому розташовано n вершин, так що вершини i та i+1 — сусідні для 1≤i Козак Вус почав робити наступні дії з цим колом. Він вибрав число х. Якщо вершини i та j сусідні та ai=aj =x, то він розрізає коло по дузі, що сполучає ці дві вершини. Іншими словами, він робить розріз між двома сусідніми вершинами, значеннях яких рівні x.
Чи можна вибрати так число х, щоб Козак Вус зробив принаймні два розрізи?

Вхідні дані
Перший рядок містить одне ціле число n (2≤n≤50) — кількість вершин на колі.

Другий рядок містить n цілих чисел a1 ,a2,…,an(1≤ai≤50) — масив a.

Вихідні дані
Виведіть «Yes», якщо можливо обрати таке число x, що Козак Вус зробить хоча б два розрізи, інакше виведіть «No».

Пример ввода #1
5
1 2 3 1 1
Пример ответа #1
Yes
Пример ввода #2
7
4 2 7 4 4 50 4
Пример ответа #2
Yes
Пример ввода #3
5
5 4 2 2 1
Пример ответа #3
No

Показать ответ
Ответ:
siemens227
siemens227
16.10.2021 07:05

Исключение IndexOutOfRangeException ("Индекс находился вне границ массива") указывает на то, что в каком либо месте программы вы пытаетесь обратится к массиву с индексом, выходящим за его границы.

Вероятнее всего, конкретно в вашем коде ошибка может быть на строке 4, т.к вы объявляете имя a как массив на 100 элементов с допустимыми индексами от 1 до 100, но позже даёте пользователю право самому ввести требуемую размерность, и никак не проверяете вводимое пользователем значение. В таком случае любое число > 100 будет приводить к исключению IndexOutOfRangeException.

Что бы избежать исключительных ситуаций, вы можете пойти двумя путями:

1. Проверять вводимые данные на соответствие диапазону допустимых индексов для массива а

2. Использовать коллекции с динамической размерностью (Array of T или List<T>)  

0,0(0 оценок)
Ответ:
D202
D202
26.04.2021 20:02

Объяснение:

program zadachiGAME;

uses crt;

var a:array [1..59] of array [1..59] of string{integer};

var n,x,y,x1,y1,x3,y3,spawn,x4,y4,x5,y5,Xx,Yy,Xb,Yb,delta1,delta2,deltaGAMER,live:integer; var j:char;label restart1;label otskok1;label otskok2;

begin

restart1:

window (1,1,80,50);

clrscr;

cursoroff;

x1:=35;

y1:=44;

delta1:=1;

delta2:=1;

cursoroff;

live:=10;

y:=50;

x:=25;

deltagamer:=1;

gotoxy(x,y);

x3:=24;

y3:=1;

x4:=6;

y4:=45;

 

 

write('press for begin!');

readkey;

gotoxy(X,Y);

write('                ');

n:=1;

 

 

spawn:=1;

 y3:=1;

 x3:=24;

TextColor(3);

      for spawn:=1 to 50 do

      begin

         gotoxy(x3,y3);

         writeln('|                                  |');

         x3:=24;

         y3:=y3+1;

      end;

 

      TextColor(11);

       

      gotoxy(40,12);

       

   

      begin

       

      for y5:=10 to 22 do

       for x5:=36 to 44 do

           begin

           gotoxy(x5,y5);  

             a[x5,y5]:=('a');

             gotoxy(x5,y5);

             write ('a');

           end;

           

       end;

 

repeat

 

begin

 

delay(53);

x1:=x1+delta1;

y1:=y1+delta2;

gotoxy(x1,y1);

write ('*');

gotoxy(x1+delta1*(-1),y1+delta2*(-1));

write(' ');

 

 

if ((x1<>x5) and (y1<>y5)) then //место с присваванием,которое не работает по непонятным причинам

      begin

        Xx:=x1;

        Yy:=y1;

      end;

   

         

if (a[x1,y1]=('a')) then  

 

begin //проверка для ркошета в разные стороны

 

    if (((x1-Xx)=(-1)) and ((y1-Yy)=(-1)) and ((x1=x5) and (y1=y5)))

       

      then

       begin      

        a[x5,y5]:=('an');

        delta1:=delta1*(-1);    

       end;

     

   

    if (((x1-Xx)=1) and ((y1-Yy)=(-1)) and ((x1=x5) and (y1=y5)))

     

     then  

      begin

        a[x5,y5]:=('an');

        delta2:=delta2*(-1);

      end;

       

       

  end;

   

TextColor(11);

 

gotoxy(x4,y4);

begin //отображение некоторых данных

writeln('live - ',live:1);

writeln('Xx ',Xx,'Yy ',Yy);

write ('X1 ',x1,'Y1 ',y1);

end;

 

 

TextColor(5);

 

if (x1=58) or (x1=25) then

delta1:=(-1)*(delta1);

if (y1=2) then

delta2:=delta2*(-1);

 

 

if ((y1=y-1) and (x1=x)) or ((y1=y-1) and (x1=x-1)) or ((y1=y-1) and (x1=x+1)) or ((y1=y-1) and (x1=x+2))  or ((y1=y-1) and (x1=x+3)) then

delta2:=delta2*(-1)

else

if ((y1=y) and (x1<>x)) or ((y1=y) and (x1<>x-1)) or ((y1=y) and (x1<>x+1)) or ((y1=y) and (x1<>x+2))  or ((y1=y) and (x1<>x+3)) then

begin

gotoxy(x1,y1);

write(' ');

delta2:=delta2*(-1);

y1:=y1+delta2-1;

live:=live-1;

end;

 

TextColor(13);

 

if keypressed then

begin

//if keypressed then

  j:=readkey;

    case j of

     #77:deltaGAMER:=3;//вправо

     #75:deltaGAMER:=(-3);//влево

     #27:Exit;

    else

     deltagamer:=(0);

    end;

 

  if (x=25) or ((x>55) and (x<59)) then

 deltagamer:=(-1)*(deltagamer);

 

 if (x=25) and (j=#77) or (x=56) and (j=#75)then

 deltagamer:=(-1)*(deltagamer);

 

 

  x:=x+(1*deltaGamer);

 

  if j<> #75 then

   begin

    gotoxy(x,y);

    write ('---');

    end;

  if j<> #77 then

   begin

    gotoxy(x,y);

    write ('---');

    end

  else

 

 

gotoxy(x+deltagamer*(-1),wherey);

write('   ');

gotoxy(x,y);

 

  end;

end;

 

until live=0;

 

begin

clrscr;

gotoxy(37,25);

writeln (' Defith');

gotoxy(37,27);

writeln (' press "r" for restart');

j:=readkey;

case j of

#114:goto restart1;

#82:goto restart1;

#170:goto restart1;

#138:goto restart1;

#27:end;

end;

 

end.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота