М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Lopkrtjvbbcx
Lopkrtjvbbcx
30.05.2021 22:14 •  Информатика

Пусть задан массив Аi={34, 16, 16, 2, 2, 0, -4, -4}, фрагмент программы L:=1; r:=n; flag:=false;
Repeat
m:=(l+r)div 2;
if a[m]>key then l:=m+1

else if a[m]=key then flag:=true

else r:=m-1;
until flag or (l>r);
Чему будет равно значение переменной m после выполнения цикла, при key=-4?

👇
Ответ:
Kfhjrhnf
Kfhjrhnf
30.05.2021

т.к. n заранее не дано(и это все лишь фрагмент кода) то m при разных n будет получаться разный. n лежит в промежутке [-2;8]

потому, что тут m:=(l+r)div 2; при n<-2 получается индекс <0

и при n>8  в цикле индекс >7

а массив у нас всего 8 элементов

Поэтому в цикле я вывел все значения m при всех возможных значениях n

Надеюсь понятно объяснил.

при n=-2   m=0

при n=-1   m=0

при n=0   m=0

при n=1   m=1

при n=2   m=2

при n=3   m=3

при n=4   m=4

при n=5   m=5

при n=6   m=6

при n=7   m=6

при n=8   m=6

Pascal

var

 a:array [0..7] of integer = (34, 16, 16, 2, 2, 0, -4, -4);

 l, n, m, key, r:integer;

 flag:boolean;

begin

 for n:=-2 to 8 do begin

   key:=-4;

   L:=1;

   r:=n;

   flag:=false;

   Repeat

     m:=(l+r)div 2;

     if a[m]>key then

       l:=m+1

     else

      if a[m]=key then

        flag:=true

      else

        r:=m-1;

   until flag or (l>r);

   writeln('при n=',n,'   m=', m);

 end;

end.


Пусть задан массив Аi={34, 16, 16, 2, 2, 0, -4, -4}, фрагмент программы L:=1; r:=n; flag:=false; Rep
4,6(30 оценок)
Открыть все ответы
Ответ:
yulia6263
yulia6263
30.05.2021
{Данная программа переводит любое сочетание символов ASCII в систему счисления заданную пользователем.}

//Pascal ABC.NET v3.0 сборка 1111

var
 a,i,b,r,n,j,bug:integer;
 s,se,slo,slof:string;

procedure preob(var a,b,n:integer; var se:string);
 begin
  repeat
   b:=a mod n;
   a:=a div n;
   str(b,se);
   s+=se;
  until (a<=n-1);
 end;

beginreadln(slo);
readln(n);
for j:=1 to length(slo) do
begin;
a:=ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i:=1 to length(s) div 2 do
begin;
se:=s[i];
s[i]:=s[length(s)-i+1];
s[length(s)-i+1]:=se[1];
end;
write(s,'-');
slof:=slof+s;
delete(s,1,length(s));
end;
end.

Пример ввода:
Домашняя работа на завтра.
2
Пример вывода:
11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-

{Таким образом, фразу "Домашняя работа на завтра." можно закодировать как "11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-".}
4,4(47 оценок)
Ответ:
ОК, всё это циклы.
1) Цикл for (цикл с счётчиком), при этом при каждом шаге цикла счётчик увеличивается на 1. Пример:
for a:=1 to 10 do //Цикл будет выполнен 10 раз
2) Цикл for (цикл с счётчиком), при этом при каждом шаге цикла счётчик уменьшается на 1. Пример:
for a:=10 to 1 do //Цикл будет выполнен 10 раз
3)Цикл с постусолвием. Если условие не выполняется, выполняется цикл. Его особенность заключается в том, что цикл выполнится хотя бы один раз вне зависимости от условия. Пример:
k:=0;
repeat
inc(k);
until k<9 //10 раз
4)Цикл с предусловием. Пока условие выполняется, выполняется и цикл.
Пример:
k:=0;
while k<>10 do
inc(k); //10 раз
4,7(99 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ