Опубликован: 04.06.2007 | Уровень: для всех | Доступ: свободно | ВУЗ: Кабардино-Балкарский государственный университет
Дополнительный материал 1:
Выполнение аналога демоЕГЭ-2007
Дополнительный материал 1: 1234567891011121314151617181920212223242526272829303132 || Дополнительный материал 2 >
С4. Составить алгоритм удаления из заданного текста a всех символов, расположенных на нечетных местах другого заданного текста b.
Решение. Алгоритм (ШАЯ, Паскаль, Бейсик) запишется следующим образом.
ШАЯ:
алг C4(арг лит a, b, рез лит a) дано | текст a и текст b надо | из текста a удалить все символы, входящие в текст b и расположенные | на нечетных позициях текста b нач | начало алгоритма цел i, | количество символов текста a j, | количество символов текста b d, | длина текста b m | длина текста а ввод(a,b) | ввод исходных текстов m:=длина(a) | переменной m присваиваится длина a d:=длина(b) | переменной d присваиваится длина b i:=1 | начальный номер символа a нц пока (i<m) | перебор элементов текста a j:=1 | начальный нечетный номер символа b нц пока (j<d+1) | перебор нечетных символов b если (a[i]=b[j]) | если символ a совпадает с b то | организуем цикл удаления i-го символа a: нц для k от i до m-1 | этот цикл, последовательно сдвигает все a[k]:=a[k+1] | следующие символы a на 1 позицию вперед кц | конец цикла удаления символа из a m:=m-1 | уменьшение длины текста a из-за удаленного символа все | конец проверки совпадения символов j:=j+2 | переход к следующему нечетному символу текста b кц | конец цикла по элементам текста b i:=i+1 | переход к следующему символу текста a кц | конец цикла по элементам текста a вывод("результирующий текст: ", a) | вывод результата кон | конец алгоритма.
Программа на Паскале (не комментируем и записываем компактно):
var d, m, i, j: integer; a, b: string; begin readln(a,b); m:=length(a); d:=length(b); i:=1; while (i<m) do begin j:=1; while (j<d+1) do begin if (a[i]=b[j]) then begin for k:=i to m-1 do a[k]:=a[k+1]; m:=m-1 end; j:=j+2 end; i:=i+1 end; writeln('результирующий текст: ', a); end.
Программа на Бейсике (не комментируем и записываем компактно):
dim d, m, i, j as integer a, b as string input a, b m = length(a) d = length(b) i = 1 while (i < m) j = 1 while (j < d + 1) if (a(i) = b(j)) then for k = i to m - 1: a(k) = a(k + 1): next k: m = m - 1 end if j = j + 2 wend i = i + 1 wend print("результирующий текст:", a) end.
Дополнительный материал 1: 1234567891011121314151617181920212223242526272829303132 || Дополнительный материал 2 >