В программах для решения следующих задач обязательно использовать процедуры
31. На плоскости заданы своими координатами п точек. Составить программу, определяющую, между какими из пар точек самое большое расстояние. Указание. Координаты точек занести в массив.
32. Составить программу, которая в массиве A(N) находит второе по величине число (вывести на печать число, которое меньше максимального элемента массива, но больше всех других элементов).
33. Задан массив D. Определить следующие суммы:
D[1]+D[2]+D[3]; D[3]+D[4]+D[5]; D[4]+D[5]+D[6]; ….
Пояснение. Составить подпрограмму для вычисления суммы трех последовательно расположенных элементов массива с номерами от k до т.
34. На плоскости заданы своими координатами п точек. Создать массив размером п(п-1), элементами которого являются расстояния от каждой из точек до п -1 других.
35. Сформировать массив X(N), N-й член которого определяется формулой
36. Заменить отрицательные элементы линейного массива их модулями, не пользуясь стандартной функцией вычисления модуля. Подсчитать количество произведенных замен.
37. Дан массив A(N). Сформировать массив В(М), элементами которого являются большие из двух рядом стоящих в массиве А чисел. (Например, массив А состоит из элементов 1; 3; 5; -2; 0; 4;0. Элементами массива В будут 3; 5; 4).
38. Дан массив A(N)(N – четное). Сформировать массив В(М),элементами которого являются средние арифметические соседних пар рядом стоящих в массиве А чисел. (Например, массив А состоит из элементов 1; 3; 5; -2; 0; 4; 0; 3. Элементами массива В будут 2; 1,5; 2; 1,5).
39. Даны натуральные числа K и N. Составить программу формирования массива А, элементами которого являются числа, сумма цифр которых равна K и которые не больше N.
40. Даны три квадратных матрицы А, В, С n-го порядка. Вывести на печать ту из них, норма которой наименьшая. Пояснение. Нормой матрицы назовем максимум из абсолютных величин ее элементов.
Лабораторная работа 10. Работа со строками
1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.
2. В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.
3. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.
4. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы b.
5. Дана строка. Подсчитать в ней количество вхождений букв r, k, t.
6. Дана строка. Определить, сколько в ней символов *, ;, :.
7. Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова.
8. Дана строка символов, среди которых есть двоеточие (:). Определить, сколько цифровых символов ему предшествует.
9. Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.
10. Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.
11. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы.
12. Дана строка. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *.
13. Дана строка. Определить, сколько раз входит в нее группа букв abc.
14. Определить, сколько раз в строке встречается заданное слово.
15. Дана строка. Подсчитать количество букв k в последнем ее слове.
16. Дан набор слов, разделенных точкой с запятой (;). Набор заканчивается двоеточием (:). Определить сколько в нем слов, заканчивающихся буквой a.
17. Дана строка. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран.
18. Дана строка. Подсчитать самую длинную последовательность подряд идущих букв a.
19. Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.
20. Дана строка. Указать те слова, которые содержат хотя бы одну букву k.
21. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.
22. В строке удалить символ двоеточие (:) и подсчитать количество удаленных символов.
23. В строке между словами вставить вместо пробела запятую и пробел.
24. Удалить часть символьной строки, заключенной в скобки (вместе со скобками).
25. Дана строка. Преобразовать ее, заменив все двоеточия (:), встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после n/2 символов.
26. Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т.е. является ли оно палиндромом).
27. В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение.
28. Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.
29. Строка, содержащая произвольный русский текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте. Ответ должен приводиться в грамматически правильной форме: например: а — 25 раз, к — 3 раза и т.д.
30. Упорядочить данный массив английских слов по алфавиту.
31. Даны две строки A и B. Составьте программу, проверяющую, можно ли из букв, входящих в A, составить B (буквы можно использовать не более одного раза и можно переставлять).
Например, A: ИНТЕГРАЛ; B: АГЕНТ — составить можно; B: ГРАФ — составить нельзя.
32. Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных.
33. Двумерный массив n´m содержит некоторые буквы русского алфавита, расположенные в произвольном порядке. Написать программу, проверяющую, можно ли из этих букв составить данное слово S. Каждая буква массива используется не более одного раза.
34. Результаты вступительных экзаменов представлены в виде списка из N строк, в каждой строке которого записаны фамилия студента и отметки по каждому из M экзаменов. Определить количество абитуриентов, сдавших вступительные экзамены только на «отлично».
35. Составить программу преобразования натуральных чисел, записанных в римской нумерации, в десятичную систему счисления.
36. Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.
37. В символьном массиве хранятся фамилии и инициалы учеников класса. Требуется напечатать список класса с указанием для каждого ученика количества его однофамильцев.
38. Дано число в двоичной системе счисления. Проверить правильность ввода этого числа (в его записи должны быть только символы 0 и 1). Если число введено неверно, повторить ввод. При правильном вводе перевести число в десятичную систему счисления.
39. Для заданного текста определить длину содержащейся в нем максимальной серии символов, отличных от букв.
40. Расстояние между двумя словами равной длины — это количество позиций, в которых различаются эти слова. В заданном предложении найти пару слов заданной длины с максимальным расстоянием.
41. Отредактировать заданное предложение, удаляя из него те слова, которые встречаются в предложении заданное число раз.
42. Напечатать те слова, которые встречаются в каждом из двух заданных предложений.
43. Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами.
44. Шифрация. Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма, и код каждого символа строки заменяется кодом, получающимся в результате операции: новый код=старый код XOR гамма. Написать программу, реализующую: а) данный метод шифрации; б) дешифрацию строки при заданной гамме.
Входные данные: шифруемая строка.
Выходные данные:
· гамма
· зашифрованная строка.
45. Кодировщик. Написать программу, перекодирующую строку в кодировке KOI в строку в кодировке Windows-1251 и обратно.
46. Тэг курсива. Дан текст, в котором встречаются структуры «<i>« и «</i>«. Заменить каждое вхождение «<i>« на «<курсив>«, а каждое вхождение «</i>« на «<конец курсив>«. Замечание. В программе следует учесть, что буква «i» может быть как строчной, так и прописной.
47. Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы. Замечание. Текст может быть как на русском, так и на английском языке.
48. Статистика. Дан текст. Напишите программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.
49. Статистика-2. Дан текст. Определите, каких букв (строчных или прописных) в нем больше, и преобразуйте следующим образом: если больше прописных букв, чем строчных, то все буквы преобразуются в прописные; если больше строчных, то все буквы преобразуются в строчные; если поровну и тех и других — текст остается без изменения.
50. Частота появления букв в словах. Дан текст, содержащий слова на латинице, разделенные пробелами. Определить, какие буквы в словах совпадают чаще: первые, последние или средние. Позиция средней буквы в слове определяется по формуле:
поз_средн_буквы = длина_слова div 2 + 1,
где div — операция целочисленного деления.
51. Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он
· стоит в начале строки;
· стоит в конце строки;
· следует за пробелом.
52. Форматный вывод числа. С клавиатуры вводится целое число в десятичной системе счисления. Написать программу, реализующую вывод его представления с разделением на триады цифр.
Пример
Число:100000
Форматированный вывод: 100 000
Число: 1000000
Форматированный вывод: 1 000 000
53. В заданном массиве слов найти наибольшее.
54. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.
55. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.
56. а) Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка "Программа" превратится в "ргамамроП"). б) Решить обратную задачу.
57. Дана строка. Получить новую строку, где каждый символ исходной строки заменён на его код.
Лабораторная работа 11. Числовые файлы
1. Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те компоненты файла f, которые являются четными.
2. Записать в файл последовательного доступа N действительных чисел. Вычислить произведение компонент файла и вывести на печать.
3. Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g все компоненты файла f, которые делятся на m и не делятся на n.
4. Записать в файл последовательного доступа N целых чисел, полученных с помощью генератора случайных чисел. Подсчитать количество пар противоположных чисел среди компонент этого файла.
5. Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные вхождения чисел. Вывести файл g на печать.
6. Записать в файл последовательного доступа N произвольных натуральных чисел. Переписать в другой файл последовательного доступа те элементы, которые кратны K. Вывести полученный файл на печать.
7. Заполнить файл последовательного доступа N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму минимального и максимального элементов этого файла.
8. Записать в файл последовательного доступа N натуральных чисел: a1, a2, ¼, an (числа получить с помощью датчика случайных чисел). Сформировать новый файл последовательного доступа, элементами которого являются числа: a1, a1 × a2, a1×a2×a3, ¼, a1 × a2 × a3 × ¼ × an.
9. Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла f, кроме тех, которые кратны K. Вывести полученный файл на печать.
10. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти количество удвоенных нечетных чисел среди компонент файла.
11. Заполнить файл f натуральными числами, полученными с помощью генератора случайных чисел. Найти количество квадратов нечетных чисел среди компонент.
12. Записать в файл прямого доступа N действительных чисел. Найти наибольшее из значений модулей компонент с нечетными номерами.
13. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные вхождения чисел. Порядок следования чисел сохранить.
14. Записать в файл последовательного доступа N действительных чисел. Найти разность первой и последней компонент файла.
15. Записать в файл f N целых чисел, полученных с помощью генератора случайных чисел. Заполнить файл g числами, которые являются произведениями соседних компонент файла f.
16. Записать в файл последовательного доступа n элементов последовательности Вывести на печать те компоненты файла, для которых выполняется |bn| > e, где e — заданное число.
17. Записать в файл последовательного доступа N действительных чисел a1, a2, ¼, an. Организовать новый файл последовательного доступа, элементы которого вычисляются по формуле . Вывести полученный файл на печать.