Использование дополнительного массива флажков ("отмечающих" выбранные элементы в соответствующих флажкам позициях исходного массива) предполагает, что:
В решениях приведенных ниже задач:
А."В строке, содержащей арифметическое выражение проверить, правильно ли расставлены скобки";
В."В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется";
С."
N
отрезков на координатной прямой заданы координатами своих концов. Определить количество связных областей"элементы массива флажков, отмечающих наступление-окончание события, на этапе заполнения начальных значений примут такие значения:
А.порядок "-1" и "1" в массиве будет зависеть от порядка следования скобок в арифметическом выражении
В.1 -1 1 -1 1 -1…
С.1 -1 1 -1 1 -1…
 А. 1 -1 1 -1 1 -1…
В.порядок "-1" и "1" в массиве будет зависеть от порядка следования времен прихода-ухода сторожей в отсортированном массиве времен
С.1 -1 1 -1 1 -1…
 А.1 -1 1 -1 1 -1…
В.1 -1 1 -1 1 -1…
С.порядок "-1" и "1" в массиве будет зависеть от порядка следования координат точек в отсортированном массиве координат
 Можно ли "отмечать" начало и конец какого-либо события (пример задачи: "В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется") не флажками "1" и "-1", а любыми символами (например, "*" и "/")?
В результате выполнения программы на Паскале, фрагмент которой приведен ниже, массив
Flag
будет содержать:… readln (n); for i:=1 to n do a[i]:=i; for i:=2 to n div 2 do if flag[i]=0 then for j:=i+1 to n do if (a[j] mod a[i]=0) then flag[j]:=1; …
flag
также нулевой) 
а
, содержащим составные числа 
flag
массива а
 
а
не имеет делителей 
В результате выполнения программы на Паскале, фрагмент которой приведен ниже, массивFlag
будет содержать:… n:=5; for i:=1 to n do a[i]:=i; for i:=2 to n div 2 do if flag[i]=0 then for j:=i+1 to n do if (a[j] mod a[i]=0) then flag[j]:=1; …
В результате выполнения программы на Паскале, фрагмент которой приведен ниже, на экран выведутся:
… readln (n); for i:=1 to n do a[i]:=i; for i:=2 to n div 2 do if flag[i]=0 then for j:=i+1 to n do if (a[j] mod a[i]=0) then flag[j]:=1; for i:=2 to n do if flag[i]=0 then writeln (a[i]) …
В результате выполнения программы на Паскале, фрагмент которой приведен ниже, массив
Flag
будет содержать:… for i:=1 to 10 do begin a[i]:=i; flag[i]:=0; end for i:=2 to 10 div 2 do if flag[i]=0 then for j:=i+1 to 10 do if (a[j] mod a[i]=0) then flag[j]:=1; …
В решениях приведенных ниже задач:
А."В строке, содержащей арифметическое выражение проверить, правильно ли расставлены скобки";
В."В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется";
С."
N
отрезков на координатной прямой заданы координатами своих концов. Определить количество связных областей"используются типовые алгоритмы:
Для решения приведенных ниже задач:
- В строке, содержащей арифметическое выражение проверить, правильно ли расставлены скобки;
- В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется;
-
N
отрезков на координатной прямой заданы координатами своих концов. Определить количество связных областей.необходимо воспользоваться типовыми алгоритмами:
Что выведется на экран в результате работы программы, фрагмент которой приведен ниже:
… stroka:='(5+y)*(x-4)'; n:=length (stroka); s:=0; for i:=1 to n do begin a[i]:=copy(stroka, i, 1); flag[i]:=0; end; for i:=1 to n do begin if a[i]="(" then flag [i]:=1; if a[i]=")" then flag [i]:=-1; end; for i:=1 to n do begin s:=s+flag [i]; if s<0 then x:=1; end; if (s=0) and (x=0) then writeln ('верно') else writeln ('неверно'); …
Какие шаги необходимо включить в словесный алгоритм для решения задачи: "В строке, содержащей арифметическое выражение проверить, правильно ли расставлены скобки" из предложенного набора:
A. исходные данные вводим в массив
B. массив
Flag
заполняется "1" (если имеющий такой же порядок элемент массива исходных данных соответствует началу события, связанного с этим данным), "-1" (соответствует окончанию события)C. сортируем массив исходных данных, одновременно переставляя элементы массива
Flag
D. суммируем элементы массива
Flag
. Анализируем сумму.
В результате работы программы, фрагмент которой приведен ниже, идет проверка правильности расстановок скобок в арифметическом выражении. Что будет результатом работы программы, если в данном выражении (например: избыточное количество скобок:
… n:=length (stroka); s:=0; for i:=1 to n do begin a[i]:=copy(stroka, i, 1); flag[i]:=0; end; for i:=1 to n do begin if a[i]="(" then flag [i]:=1; if a[i]=")" then flag [i]:=-1; end; for i:=1 to n do begin s:=s+flag [i]; if s<0 then x:=1; end; if (s=0) and (x=0) then writeln ('верно') else writeln ('неверно'); …
В результате работы программы, фрагмент которой приведен ниже, идет проверка правильности расстановок скобок в арифметическом выражении. Что будет результатом работы программы, если в данном выражении (например: ) избыточное количество скобок:
… n:=length (stroka); s:=0; for i:=1 to n do begin a[i]:=copy(stroka, i, 1); flag[i]:=0; end; for i:=1 to n do begin if a[i]="(" then flag [i]:=1; if a[i]=")" then flag [i]:=-1; end; for i:=1 to n do begin s:=s+flag [i]; if s<0 then x:=1; end; if (s=0) and (x=0) then writeln ('верно') else writeln ('неверно'); …
Какие шаги необходимо включить в словесный алгоритм для решения задачи: "В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется" из предложенного набора:
A. исходные данные вводим в массив B. массив Flag
заполняется "1" (если имеющий такой же порядок элемент массива исходных данных соответствует началу события, связанного с этим данным), "-1" (соответствует окончанию события)C. сортируем массив исходных данных, одновременно переставляя элементы массива Flag
D. суммируем элементы массива Flag
. Анализируем сумму.
Ниже приведен фрагмент программы, реализующий алгоритм решения задачи: "В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется":
… //заполнение массива a (временем прихода и ухода сторожа), массива flag ("1" и "-1") … //сортировка массива а с перестановкой элементов массива flag (в соответствии с перестанавливаемыми элементами массива а) … for i=1 to 2*n do begin s:=s+flag [i]; if s=0 then k:=k+1; end; if k=1 then writeln ('галерея всегда охранялась') else writeln ('галерея оставалась без охраны', k-1,'раз'); Каков будет результат работы программы, если время ухода одного из сторожей совпадает с временем прихода его сменщика?
Ниже приведен фрагмент программы, реализующий алгоритм решения задачи: "В картинной галерее работают сторожа. Для каждого сторожа известно время прихода на работу и время ухода. Определить, всегда ли галерея охраняется":
… //заполнение массива a (временем прихода и ухода сторожа), массива flag ("1" и "-1") … //сортировка массива а с перестановкой элементов массива flag (в соответствии с перестанавливаемыми элементами массива а) … for i=1 to 2*n do begin s:=s+flag [i]; if s=0 then k:=k+1; end; writeln ('количество случаев неохраняемости галереи') writeln (k-1); … Какое количество случаев неохраняемости галереи выдаст программа, если время ухода одного из сторожей совпадает с временем прихода его сменщика?
Какие шаги необходимо включить в словесный алгоритм для решения задачи: "
N
отрезков на координатной прямой заданы координатами своих концов. Определить количество связных областей" из предложенного набора:
A. исходные данные вводим в массив B. массив Flag
заполняется "1" (если элемент массива исходных данных соответствует началу события), "-1" (соответствует окончанию события)C. сортируем массив исходных данных, одновременно переставляя элементы массива Flag
D. суммируем элементы массива Flag
. Анализируем сумму.
Ниже приведен фрагмент программы, реализующий алгоритм решения задачи: "
N
отрезков на координатной прямой заданы координатами своих концов. Определить количество связных областей":… //заполнение массива a (координаты концов отрезка), массива flag ("1" и "-1") … //сортировка массива а с перестановкой элементов массива flag (в соответствии с перестанавливаемыми элементами массива а) … for i=1 to 2*n do begin s:=s+flag [i]; if s=0 then k:=k+1; end; writeln ('количество связных областей', k); … Сколько связных областей дадут два отрезка, имеющие одну общую координату (начало одного совпадает с концом другого)?
Укажите количество связных областей для
n
(n
вводится с клавиатуры) отрезков, пары координат которых также вводятся с клавиатуры. Входные данные: