Главная страница
Навигация по странице:

Задачник с исправлением. Сборник содержит задания по языку программирования Паскаль 1, 3, 6, 8, 9, 10, 13 и ориентирован на версию, реализованную в наиболее распространенном компиляторе Turbo Pascal 0 7, 11, 15, 18


Скачать 0.88 Mb.
Название Сборник содержит задания по языку программирования Паскаль 1, 3, 6, 8, 9, 10, 13 и ориентирован на версию, реализованную в наиболее распространенном компиляторе Turbo Pascal 0 7, 11, 15, 18
Анкор Задачник с исправлением.doc
Дата 24.04.2017
Размер 0.88 Mb.
Формат файла doc
Имя файла Задачник с исправлением.doc
Тип Документы
#2935
страница 7 из 17
1   2   3   4   5   6   7   8   9   10   ...   17

Пояснения к программе


Положим, что слова состоят не более чем из десяти букв, а в тексте не более 100 слов. Для выравнивания длины слов используется константа Pusto, представляющая строку из десяти пробелов. Ввод строки посимвольно организован во внешнем цикле While, выполняющемся до тех пор, пока вводится символ, отличный от точки. При вводе исходный текст представляется в виде массива слов A, и в начале в каждое L-ое слово записывается константа Pusto. Во внутреннем цикле While формируется очередное слово, введенный символ помещается в j-ую позицию L-ого слова. Этот цикл выполняется до тех пор, пока не встретится ограничитель слова — запятая (для последнего слова — точка).

После формирования массива A выполняется сортировка слов в алфавитном порядке, соседние слова сравниваются и если они не упорядочены, то выполняется перестановка через промежуточное слово R. Для выполнения полной сортировки одномерного массива слов используются два вложенных цикла, причем в результате каждого выполнения внутреннего цикла по переменной j одно слово занимает окончательное место в отсортированной последовательности. Возможно, что слова будут упорядочены до выполнения всех возможных проходов, поэтому при каждом проходе с помощью переменной NoSwap выявляется факт отсутствия перестановок и выполняется досрочное завершение сортировки.

program Tekst_1;

const

Pusto = ' ';

Dlina = 10; Predel = 100;

Type

Slovo = Array [ 1 .. Dlina ] of Char;

Tekst = Array [ 1 .. Predel ] of Slovo;

Var

A : Tekst; {исходный текст в виде массива слов}

Ch : Char; {отдельный символ}

R : Slovo; {переменная для промежуточного слова}

L, j, k : Integer; {счетчики}

NoSwap : Boolean; {признак перестановки слов }

Begin

L := 0; { счетчик слов }

Writeln('Введите слова через запятую, в конце текста точка');

Read ( Ch ); { внешний цикл до конца текста }

While Ch <> '.' do

Begin

L := L + 1;

j := 1; { j - счетчик символов в слове }

A[ L ] := Pusto;

{внутренний цикл по словам}

While ( Ch<>',') And ( Ch <> '.') do

Begin

A[ L,j ] := Ch;

j := j + 1;

Read( Ch )

end;

if Ch = ',' then Read( Ch )

end;

for K := 2 to L do {“пузырьковая сортировка”}

Begin

NoSwap := True;

for j := L downto K do

if A[ j-1 ] > A[ j ] then

begin

R := A[ j-1 ];

A[ j-1 ] := A[ j ];

A[ j ] := R;

NoSwap := False;

end;

if NoSwap then Break

end;
Writeln( 'Отсортированные слова без повторений' );

R := Pusto;

for K := 1 to L do

if A[ K ] <> R then

begin

R := A [ K ];

for j := 1 to Dlina do Write ( A[ K, j ] );

Writeln

end

End.
4.19 Пусть дан текст, состоящий из слов. Под словом понимается последовательность литер, не содержащая пробелов и знаков препинания. Напечатайте все слова, состоящие из неповторяющихся символов.

4.20 Пусть вводится последовательность символов. Напечатайте те строчные латинские буквы, которые не вошли во введенную последовательность.

4.21 Пусть дан непустой текст из цифр, за которым следует точка. Напечатайте цифру, наиболее часто встречающуюся в этом тексте (если таких цифр несколько, напечатайте любую из них).

4.22 Пусть задан текст размером не более одной строки. Напечатайте, сколько раз в тексте встречается каждая буква латинского алфавита.

4.23 Напечатайте заданный текст из 100 литер, удалив из него повторные вхож­дения каждой литеры.

4.24 Определите, сколько различных литер входит в заданный текст, содержа­щий не более 100 литер и оканчивающийся точкой (в сам текст точка не входит).

4.25 Пусть дан текст из строчных латинских букв, за которым следует точка. Напе­чатайте в алфавитном порядке все буквы, которые входят в этот текст по од­ному разу.

4.26 Пусть даны натуральное число пи символы S1 , S2 , ..., Sn, среди которых есть двоеточие. Получите все символы:

а) расположенные до первого двоеточия включительно;

б) расположенные после первого двоеточия;

в) расположенные между первым и вторым двоеточием; если второго двое­точия нет, то получите все символы, расположенные после единственно­го имеющегося двоеточия.

4.27 Пусть даны натуральное число пи символы S1, S2 , ..., Sn. Исключите из последо­вательности S1, S2 , ..., Sn группы символов, расположенные между открывающей и закрывающей скобками. Сами скобки тоже должны быть исключены. Пред­полагается, что внутри каждой пары скобок нет других скобок.

4.28 Пусть дана символьная матрица размером пх т. Найдите номер:

а) первой по порядку строки, содержащей наибольшее число цифр;

б) первого по порядку столбца, содержащего наименьшее число пробелов на пересечении со строками, номера которых четны;

в) последней по порядку строки, содержащей наибольшее количество букв ши щ;

г) последнего по порядку столбца, в котором содержится наибольшее коли­чество различных символов.

4.29 Пусть дана непустая последовательность слов из строчных латинских букв; слова разделяются запятой, за последним словом стоит точка. Среди всех пар aiи bi,где ai — первая, а bi последняя буквы i-го слова последователь­ности, определите наиболее часто встречающуюся пару.

4.30 Используя следующий фрагмент программы, введите перечисленные ниже слова:
Tуре

Slovo = Array [1..5] of Char;

spisok = Array [1..60] of slovo;
Var

С : spisok;

а) все слова из списка С, отличные от слова Hello;

б) то слово из списка С, которое лексикографически (по алфавиту) предшест­вует всем другим словам этого списка (считайте, что все слова различны);

в) текст, составленный из последних литер всех слов списка С;

г) все слова из списка С, содержащие ровно две буквы d.

4.31 Пусть во входном файле задана последовательность строчных латинских букв, за которой следует пробел. Если это правильная запись значения типа соlоr, то, используя следующий фрагмент программы, присвойте эту запись пере­менной х, иначе — сообщите об ошибке:
Tуре

соlоr = (red, blue, green, yellow, black, white);
Var

х : соlоr;

4.32 Используя следующий фрагмент программы, определите, сколько раз (k) в строку S входят литеры, перечисленные в константе v:
const

v = 'aeiou';
Tуре

строка = array [1..20] of char;
Vаr

S : строка;

k : 0..20;

4.33 Пусть дан текст из 60 литер. Напечатайте только строчные русские буквы, входящие в этот текст.

4.34 Пусть дан текст из строчных русских букв, за которым следует точка. Напе­чатайте этот текст заглавными русскими буквами.

4.35 Известно, что в начале строки S находится не более 40 латинских букв, за кото­рыми следуют пробелы. Напечатайте эту строку, предварительно преобразо­вав ее так, как показано ниже, и используя следующий фрагмент программы:
Tуре

строка = array [1..80] of char;
Vаr

S : строка;

а) все последовательности abcзамените последовательностями def;

б) удалите первое вхождение w, если такое есть (образовавшуюся «дыру» заполните последующими буквами, а в конец добавьте точку);

в) удалите все вхождения th;

г) замените последовательностью ksпервое вхождение х, если такое есть;

д) после каждой буквы qдобавьте букву и;

е) замените все последовательности рhбуквой f, а все последовательности ed последовательностями ing.

4.36Пусть дана последовательность, содержащая от 1 до 30 слов, в каждом из ко­торых от 1 до 5 строчных латинских букв; между соседними словами — запя­тая, за последним словом — точка. Выведите:

а) эту же последовательность слов, но в обратном порядке;

б) те слова, перед которыми в последовательности находятся только мень­шие (по алфавиту) слова, а за ними — только большие;

в) эту же последовательность слов, но удалив из нее повторные вхо­жде­ния слов;

г) все слова, которые встречаются в последовательности по одному разу;

д) все различающиеся слова, указав для каждого из них число его вхо­жде­ний в последовательность;

е) все слова в алфавитном порядке.

4.37 Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из ко­торых от 1 до 8 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатайте те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству:

а) слово симметрично;

б) первая буква слова входит в него еще раз;

в) буквы слова упорядочены по алфавиту;

г) длина слова максимальна;

д) в слове нет повторяющихся букв;

е) каждая буква входит в слово не менее двух раз;

ж) в слове гласные буквы (а, е, i, о, и) чередуются с согласными.

4.38 Пусть дана последовательность, содержащая от 2 до 30 слов, в каждом из ко­торых от 2 до 10 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатайте все слова, отличные от первого слова, предварительно преобразовав каждое из них по следующему правилу:

а) перенести первую букву в конец слова;

б) перенести последнюю букву в начало слова;

в) удалить из слова первую букву;

г) удалить из слова последнюю букву;

д) удалить из слова все последующие вхождения первой буквы;

е) удалить из слова все предыдущие вхождения последней буквы;

ж) оставить в слове только первые вхождения каждой буквы;

з) если слово нечетной длины, то удалить его среднюю букву.

4.39 Пусть дана последовательность, содержащая от 1 до 90 слов, в каждом из ко­торых от 1 до 10 строчных русских букв; между соседними словами — не ме­нее одного пробела, за последним словом — точка. Напечатайте эти слова по алфавиту.

4.40 Пусть дан текст в виде символьной строки, оканчивающейся точкой. Необ­ходимо определить количество слов, которые являются «перевертышами» (например: казак, шалаш), то есть читаются одинаково с начала и с конца слова. Слова в предложении отделяются одним либо несколькими пробелами.

4.41 Известно, что астрологи делят год на 12 периодов и каждому из них ставят в соответствие один из знаков Зодиака (табл. 1). Напишите программу для ввода даты некоторого дня года и печати названия соответствующего знака Зодиака.
Таблица 1

Период

Знак Зодиака

20.01 - 18.02

Водолей

19.02 - 20.03

Рыбы

21.03 - 19.04

Овен

20.04 - 20.05

Телец

21.05 - 21.06

Близнецы

22.06 - 22.07

Рак

23.07 - 22.08

Лев

23.08 - 22.09

Дева

23.09 - 22.10

Весы

23.10 - 22.11

Скорпион

23.11 - 21.12

Стрелец

22.12 - 19.01

Козерог


4.42 Известно, что в следующем фрагменте программы массив матрица содержит оценки студентов группы, фамилии которых перечислены в типе фамилия:
Tуре

фамилия = (Иванов, Петров, Сидоров, Михайлов, Андреев, Борисов, Вадимов, Геннадьев, Дмитриев, Евгеньев);

предмет = (математика, физика, информатика, программирование, история, механика, дискретная_математика, физ_ра, начерт_геометрия);
Var

матрица : array [фамилия, предмет] of integer;

а) найдите средний балл всех студентов группы;

б) напечатайте фамилию первого студента списка, средний балл которого максимален;

в) измените на «3» все неудовлетворительные оценки (если такие имеются) у студента с минимальным средним баллом;

г) найдите количество студентов группы, которые учатся без троек (только на «4» и «5»);

д) выясните, сколько студентов группы имеют средний балл, наименее отклоняющийся по абсолютному значению от среднего балла всей группы;

е) напечатайте названия предметов, по которым студенты учатся без двоек;

ж) определите, по какому предмету самая высокая успеваемость;

з) составьте список отличников группы;

и) составьте список хорошистов группы;

к) составьте упорядоченный по неубыванию средних баллов список студен­тов группы.

4.43 Составьте программу «сжатия» исходной последовательности символов, ко­торая заменяет последовательность, состоящую из одинаковых символов, текстом вида х(k), где х— символ последовательности, k — число вхожде­ний. Определите для указанной последовательности коэффициент сжатия (отношение исходной длины последовательности к полученной).

1   2   3   4   5   6   7   8   9   10   ...   17
написать администратору сайта