Решение олимпиадных задач по информатике
Предположим, что есть программа на Паскале, реализующая заполнение Арифметического квадрата порядка nxn. Для вывода на экран "Треугольника Паскаля" в программу дописали фрагмент:
…for i:=1 to n do begin for j:=1 to ? do write (a[i,j]); writeln; end;…
Какое значение необходимо написать в заголовке внутреннего цикла вместо знака вопроса?
В каком направлении идет заполнение двумерного массива в 1-ом вложенном цикле по i, в результате выполнения программы на Паскале, фрагмент которой приведен ниже:
… x:=1;for k:=1 to n div 2 do begin for i:=k to n-k do begin a[k,i]:=x; x:=x+1; end; for i:=k to n-k do begin a[i,n-k+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-k+1,n-i+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-i+1,k]:=x; x:=x+1; end;end; …
В каком направлении идет заполнение двумерного массива в 3-ем вложенном цикле по i, в результате выполнения программы на Паскале, фрагмент которой приведен ниже:
… x:=1;for k:=1 to n div 2 do begin for i:=k to n-k do begin a[k,i]:=x; x:=x+1; end; for i:=k to n-k do begin a[i,n-k+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-k+1,n-i+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-i+1,k]:=x; x:=x+1; end;end; …
В каком направлении идет заполнение двумерного массива в 2-ом вложенном цикле по i, в результате выполнения программы на Паскале, фрагмент которой приведен ниже:
… x:=1;for k:=1 to n div 2 do begin for i:=k to n-k do begin a[k,i]:=x; x:=x+1; end; for i:=k to n-k do begin a[i,n-k+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-k+1,n-i+1]:=x; x:=x+1; end; for i:=k to n-k do begin a[n-i+1,k]:=x; x:=x+1; end;end; …
Приведенный ниже фрагмент программы на Паскале реализует алгоритм заполнения Арифметического квадрата.
…for i:=1 to n dobegin a[i,1]:=1; a[1,i]:=1;end;for i:=1 to n do for j:=1 to n do a[i,j]:=a[i-1,j]+a[i,j-1];…
Найдите в нем ошибку:
Приведенный ниже фрагмент программы на Паскале реализует алгоритм заполнения Арифметического квадрата.
…for i:=1 to n do for j:=1 to n do begin a[i,j]:=1; a[i,j]:=1; end;for i:=2 to n do for j:=2 to n do a[i,j]:=a[i-1,j]+a[i,j-1];…
Что в нем стоит изменить?
Приведенный ниже фрагмент программы на Паскале реализует алгоритм заполнения Арифметического квадрата.
…for i:=1 to n dobegin a[i,1]:=i; a[1,i]:=i;end;for i:=2 to n do for j:=2 to n do a[i,j]:=a[i-1,j]+a[i,j-1];…
Найдите в нем ошибку:
Ниже приведен фрагмент программы, реализующий алгоритм решения задачи: "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);…
Сколько связных областей дадут два отрезка, имеющие одну общую координату (начало одного совпадает с концом другого)?
Предскажите, какое содержимое будет находится в переменной s в результате работы программы на Паскале:
var a, b, s, x: integer;begina:=25; b:=5; s:=0;while a<>0 dobeginx:=a mod b; s:=s*10 +x; a:=a div b;writeln (s);end;end.