ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.05.2021

Просмотров: 1999

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

4. Циклы

  1. Составить программу вычисления суммы вида:

a)

b)

  1. Составить программу вычисления при заданных x и a значения функции y вида:

a) ;

b) .

  1. Вычислить: ;

  2. Написать программу вычисления при заданном x величины y по формуле

.

  1. Вычислить .

  2. Составить программу для нахождения и печати всех пифагоровых чисел, не превышающих 20.

  3. Дано натуральное n. Вычислить значение выражения

  4. Даны натуральное число n и действительное число x. Вычислить:

a)

b)

  1. Дано натуральное k. Напечатать k-ую цифру последовательности 12345678910111213…, в которой выписаны подряд все натуральные числа.

  2. Вычислить x1+x2+…+ x20, если последовательность x1, x2, … образована по следующему закону:

  1. ;

  2. x1 = 1; x2 = 0.3; xi = (i+1) ×xi – 2 , i = 3, 4, … .

  3. x1 = x2 = x3 =1; xi = (i+3) × (xi – 3 –1)+ (i+4) ×xi – 2, i = 4, 5, … .

  1. Дано вещественное число x и натуральное число n. Вычислить .

  2. Даны вещественные числа a, h, натуральное число n.
    Вычислить
    , где

  3. Дано натуральное число n. Вычислить 12+234+…+n2n.

  4. При некоторых заданных x, N и E, определяемых вводом, вычислить:

a) сумму N слагаемых заданного вида;

b) сумму тех слагаемых, которые по абсолютной величине больше Е.

Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R).

  1. (R=).

  2. (R=).

  3. (R=1)

  4. (R=1).

  5. (R=1).

  6. (R=1).

  7. (R=1).

  8. (R=1).

  9. (R=1)

  10. (R=1).

  11. (R=1).

  12. (R=1).

  13. (R=1).

  14. (R=1).

  15. (R=).

  16. (R=).

5. Последовательности чисел

  1. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько раз в последовательности меняется знак при переходе к следующему элементу.

  2. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, является ли эта последовательность возрастающей.

  3. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, номер числа, по абсолютной величине самого близкого к своему номеру.

  4. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, каких чисел в последовательности больше: положительных или отрицательных.

  5. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, упорядочены ли положительные элементы по возрастанию.

  6. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, равны ли все отрицательные.

  7. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, имеют ли первое и последнее числа последовательности один знак.

  8. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, заканчивается ли последовательность не менее чем двумя числами одного знака.

  9. Вводится последовательность целых чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, являются ли вводимые числа числами Фибоначчи.

  10. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, расположены ли все положительные числа после отрицательных.

  11. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти разность между суммой четных и нечетных значений.

  12. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти разность между суммой элементов, стоящих на четных и нечетных местах.

  13. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести числа последовательности, добавив к каждому, кроме первого, значение предыдущего.

  14. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образует ли эта последовательность ряд Фибоначчи.

  15. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сумму и количество тех из них, которые принадлежат отрезку [a,b]. a и b вводятся.

  16. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти количество и сумму положительных и отрицательных.

  17. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти количество и сумму элементов, равных первому отрицательному1| больших, чем первый отрицательный2| меньших, чем первый отрицательный3.

  18. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести числа последовательности, добавив к каждому, кроме последнего, значение следующего.

  19. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Найти сумму тех из них, которые находятся, начиная с позиции i, и заканчивая позицией j. i и j вводятся. Если элементов с указанными номерами нет, сообщить об этом.

  20. Вводится последовательность целых чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько раз встречаются два равных рядом.

  21. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Вывести для каждого количество стоящих перед ним положительных.

  22. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образуют ли эта последовательность арифметическую прогрессию.

  23. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образуют ли эта последовательность геометрическую прогрессию.

  24. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько в ней интервалов возрастания.

  25. Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, сколько из них имеют равных «соседей» слева и справа.


Строки

  1. Дана строка. Напечатать входящие в нее слова, но в обратном порядке (сначала последнее, потом предпоследнее и т.д.).

  2. Дана строка. Напечатать те слова этой строки, которые отличны от последнего слова и выполняется условие: в слове гласные буквы а, е, i, о, u чередуются с согласными.

  3. Вводится строка. Если она является записью римского числа, то преобразовать ее в целое число.

  4. Вводится 10 произвольных имен. Необходимо распечатать их в алфавитном порядке.

Замечание

Попытайтесь решить задачу, не сортируя сами имена. Поскольку требуется просто распечатать их в алфавитном порядке, заведите массив, содержащий порядковые номера имен. При необходимости перестановки, переставляйте не сами имена, а их порядковые номера. Такой подход особенно удобен, когда приходится сортировать сложные и "громоздкие" объекты.

  1. Напишите функцию RightPosition(str1, str2: string), которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1. Например, RightPosition('Миссисипи', 'си') вернет значение 6.

  2. Напишите функцию CountStr(str1, str2: string) которая получает два параметра str1 и str2 типа string и возвращает число, указывающее, сколько раз str2 встречается в str1. Функция не должна изменять свои параметры. Кроме того, любая литера в str1 может учитываться не более чем в одном вхождении str2. Например, CountStr('балалайка', 'ала') должна возвращать 1, а не 2.

  3. Напишите функцию NonAlpha(str: string), которая получает параметр str типа string и возвращает позицию его первой литеры, не являющейся буквой (как латинского, так и русского алфавитов) строчной или прописной. Например, NonAlpha( 'stev7n' ) дает 5.

  4. Напишите функцию Splite(name: string; var first, last : string), которая из параметра name, хранящего имя и фамилию человека, извлекает их в first (имя) и last (фамилия). Имя и фамилия разделены некоторым числом пробелов. Например, после обращения Splite('Вася Иванов', str1, str2) в str1 должно оказаться 'Вася', а в str2 'Иванов'. Необходимо также предусмотреть обнаружение и обработку некорректных данных. В частности, если в name вообще не окажется ни одного пробела, процедура должна установить в обоих выходных параметрах специальное значение 'error' (ошибка). Какие еще ошибочные ситуации следует учесть?

  5. Пусть даны две строки str1 и str2. Необходимо выяснить, можно ли из str1 путём перестановки литер получить строку str2. Напишите подпрограмму, которая решала бы указанную задачу.

  6. Напишите процедуру SortMid, которая сортировала бы ряд из n строк в алфавитном порядке, основываясь на k–ой литере каждой строки, где k является параметром, передаваемым процедуре SortMid. Например, если k=3, то элементы ряда должны быть отсортированы по возрастанию значения в третьей литере каждой строки. Если длина строки меньше k, то будем предполагать, что его k–ой литерой, реально не существующей, служит пробел.

  7. Напишите процедуру сортировки строк в обратном алфавитном порядке.

  8. Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые получают два параметра str и alpha типа string. В первом параметре задается слово, подлежащее шифрованию (расшифровке), второй представляет собой некоторую перестановку 26 латинских букв алфавита. Принцип преобразования для шифрации состоит в следующем. Если некоторая буква в str является k–ой буквой в обычном алфавите, то вместо нее должна быть взята буква из k–ой позиции "нового" алфавита alpha. Для подпрограммы дешифровки используется обратный принцип.

  9. Расширим предыдущую задачу. Напишите программу для тестирования Encode и Decode. Она должна начинаться с ввода ключа для шифрования и дешифрации — 26–буквенной строки. Затем вводится серия строк, подлежащих обработке. Над каждой строкой применяется сначала операция шифрования, а затем дешифрации. При этом необходимо контролировать некоторые ошибочные ситуации. Например, каждая содержащаяся в ключе буква должна быть представлена только один раз.

  10. Написать программу, которая будет вводить значения типа string и определять, является ли каждое из них правильным идентификатором, удовлетворяющем требованиям Паскаля. Напомним, вкратце правила построения имен. Всякое имя может содержать от 1 до 127 литер; первой литерой должна быть буква (строчная или прописная); любая другая литера (начиная со второй) может быть буквой, цифрой (от 0 до 9) или знаком подчеркивания. Если обнаружена ошибка, необходимо выдать сообщение, квалифицирующее ее.

  11. Усовершенствуйте программу из предыдущей задачи, чтобы она умела распознавать служебные слова Паскаля и отвергать попытки их предъявления. Для простоты ограничьте набор служебных слов, взяв за основу только некоторые из них.

  12. Усовершенствуйте программу из задачи 18, сделав возможным автоматическое преобразование неправильных идентификаторов в синтаксически допустимые. Если исходная строка имеет слишком большую длину, укоротите её до допустимого размера путем отбрасывания избыточных литер; если она пуста, добавьте букву 'x'. Если первая литера не является буквой, то вставьте перед ней 'x'. Если в строке присутствуют какие-то "незаконные" литеры, удалите их.

  13. Задано десять русских имен. В тексте проверить, все ли эти имена написаны с большой буквы, если нет, то исправить.

  14. Дана строка. Определить, стоят ли в данной строке подряд символы ′а′ и ′б′.

  15. Дана строка. Определить, есть ли в этой строке символы ′А′ и ′Е′, а также количество каждого из этих символов.

  16. Дана строка. Определить, сколько в ней знаков '+', и заменить их на '–'.

  17. Дана строка. Определить, есть ли в ней все буквы, входящие в слово ′шина′.

  18. Дана строка. Определить, какие символы и сколько раз встречаются в данной строке.

  19. В заданной строке установить пробелы вместо символов, номера позиций которых при делении на 4 дают в остатке 3.

  20. Дана строка. Найти слова, которые имеют четную длину и начинаются с заданного символа.

  21. Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1.

  22. Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.

  23. Дана строка. Вывести коды ее первого и последнего символа.

  24. Дана строка. Подсчитать количество содержащихся в ней цифр1|прописных букв2|строчных букв3.

  25. Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2.

  26. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.

  27. Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке.

  28. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).

  29. Дана строка, изображающая целое число. Вывести сумму цифр этого числа.

  30. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы ′.′ (точка).

  31. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.

  32. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0.

  33. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.

  34. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S.

  35. Даны строки S1, S2 и символ C. Перед1|после2 каждого вхождения символа C в строку S1 вставить строку S2.

  36. Даны две строки: S1и S2. Удалить из строки S1 первую1| последнюю2| все3 подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1без изменений.

  37. Даны три строки: S1, S2, S3. Заменить в строке S1 первое1| последнее2| все3 вхождения строки S2 на S3.

  38. Дана строка. Вывести подстроку, расположенную между первой и второй1|последней2 точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку.

  39. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке.

  40. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые [начинаются и заканчиваются одной и той же буквой]1|[содержат хотя бы одну букву ′А′]2.

  41. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы ′А′ .

  42. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого1|длинного2 слова.

  43. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом ′.′ (точка). В конце точку не ставить.

  44. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.

  45. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все последующие1|предыдущие2 вхождения первой1|последней2 буквы этого слова (количество пробелов между словами не изменять).

  46. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.

  47. Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.

  48. Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке [знаков препинания]1|[гласных букв]2.

  49. Дана строка-предложение на русском языке. Вывести самое короткое1|длинное2 слово в предложении (если таких слов несколько, то вывести первое3|последнее4 из них).

  50. Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами был ровно один пробел.

  51. Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из этой строки имя1|расширение2 файла.

  52. Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов ′\′ ). Если файл содержится в корневом каталоге, то вывести символ ′\′.

  53. Дана строка-предложение на русском языке. Зашифровать ее, выполняя циклическую замену каждой буквы на следующую за ней в алфавите и сохраняя при этом регистр букв (′А′ перейдет в ′Б′ , ′а′ — в ′б′ , ′Б′ — в ′В′ , ′я′ — в ′а′ и т.д.). Букву ′ё′ в алфавите не учитывать (′е′ должна переходить в ′ж′). Знаки препинания и пробелы не изменять.

  54. Дана строка-предложение на русском языке и число k (0 < k < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на k‑й позиции после шифруемой буквы (например, для k = 2 ′А′ перейдет в ′В′ , ′а′ — в ′в′ , ′Б′ — в ′Г′ , ′я′ — в ′б′ и т.д.). Букву ′ё′ в алфавите не учитывать, знаки препинания и пробелы не изменять.

  55. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 41) и кодовое смещение k (0 < k < 10). Расшифровать предложение.

  56. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 41) и его расшифрованный первый символ C. Определить кодовое смещение k и расшифровать предложение.

  57. Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка ′Программа′ превратится в ′ргамамроП′ ).

  58. Дано предложение, зашифрованное по правилу, описанному в предыдущем задании. Расшифровать это предложение.

  59. Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1.

  60. Дана строка, содержащая комментарии типа {...}. Создать другую строку, содержащую тот же текст, но без комментариев.

  61. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить, сколько слов в строке являются палиндромами (перевертышами), и вывести эти слова.

  62. Дана строка, содержащая некоторый текст. Определить, является ли данный текст палиндромом, т.е. читается ли он слева направо так же, как и справа налево (например: ′А роза упала на лапу Азора′).

  63. Дана строка, состоящая из латинских букв, в которой слова разделены пробелами (одним или несколькими). Напечатать те слова строки, которые отличны от последнего слова и удовлетворяют следующему свойству:


      1. слово симметрично;

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

      3. слово совпадает с начальным отрезком латинского алфавита (′a′, ′ab′, ′abc′ и т.д.);

      4. слово совпадает с конечным отрезком латинского алфавита (′z′, ′yz′, ′xyz′ и т.д.);

      5. длина слова максимальна;

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

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

      8. в слове гласные буквы (′a′, ′e′, ′i′, ′o′, ′u′) чередуются с согласными.

  1. Дана строка, ограниченная точкой, в которой слова разделены пробелом. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:

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

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

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

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

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

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

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

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

Входные строковые параметры, если они не изменяются в теле процедуры/функции, для экономии памяти рекомендуется описывать как параметры-константы.

  1. Описать функцию IsIdent(S) целого типа, проверяющую, является ли строка S допустимым идентификатором Паскаля. При утвердительном ответе возвращается 0. Если S является пустой строкой, то возвращается –1, если строка начинается с цифры, то возвращается –2. Если S содержит недопустимые символы, то возвращается номер первого недопустимого символа.

  2. Описать функцию FillStr(S, Len) строкового типа, возвращающую строку длины Len, заполненную повторяющимися копиями строки-шаблона S (последняя копия строки-шаблона может входить в результирующую строку частично).

  3. Описать процедуру UpCase(S)1|LowCase(S)2, преобразующую все строчные1|прописные2 буквы строки S в прописные1|строчные2 (остальные символы строки S не изменяются).

  4. Описать процедуру TrimL(S)1|TrimR(S)2|Trim(S)3, удаляющую в строке S начальные1|конечные2|[начальные и конечные]3 пробелы.

  5. Описать функцию PosLast(subS, S) целого типа, возвращающую номер позиции, с которой в строке S содержится последнее вхождение подстроки subS. Если в строке S отсутствуют подстроки subS, то функция возвращает 0.

  6. Описать функцию PosK(subS, S, k) целого типа, возвращающую номер позиции, с которой в строке S содержится k-е вхождение подстроки subS (k > 0). Если количество вхождений subS в строке S меньше k, то функция возвращает 0.

  7. Описать функцию WordN(S, k) строкового типа, возвращающую k‑е слово строки S (под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше k, то функция возвращает пустую строку. Используя эту функцию, выделить из данной строки S слова с номерами k1, k3, k3.

  8. Описать процедуру SplitStr(S, W, N), которая формирует по данной строке S набор слов W, входящих в S (W — выходной строковый массив; N — его размер; предполагается, что N не будет превышать 10). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки. Используя эту функцию, вывести количество слов N, содержащихся в данной строке S, и сами эти слова.


Одномерные массивы

  1. Даны действительные числа x1, x2, ... , xn, y1, y2, ... , yn, r1, r2, ... , rn. Выяснить, есть ли на плоскости точка, принадлежащая всем кругам с1, с2, ... , сn, где ci имеет центр с координатами xi, yi и радиус ri.

  2. Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой оси (a1, a2), (a3, a4), ..., (a2n-1, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы этого интервала.

  3. Даны действительные числа a1, a2, ... , a2n. Эти точки определяют n интервалов числовой (a1, a2), (a3, a4), ..., (a2n-1, a2n). Имеются ли точки числовой оси, принадлежащие по крайней мере трем каким-нибудь из данных интервалов. Если да, то указать какую-нибудь из этих точек.

  4. Даны целые числа a1, a2, ..., an. Пусть M — наибольшее, m — наименьшее из них. Получить в порядке возрастания все целые числа из интервала (m, M), которые не входят в последовательность a1, a2, ..., an.

  5. Даны координаты центров n окружностей и их радиусы. Определить число пересекающихся окружностей.

  6. Все отрицательные элементы массива X перенести в его начало, а все остальные — в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов. Дополнительный массив не заводить.

  7. Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.

  8. Имеются десять гирь весом a1, a2, ..., a10. Обозначим через ck — число способов, которыми можно составить вес k, то есть ck — это число решений уравнения a1x1 + a2x2 +...+ a10x10 = k, где xi может принимать значения 0 или 1 (i=1,..., 10). Получить с0, с1, ..., с10.

  9. Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c — целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых совпадающие или параллельные.

  10. Прямая на плоскости может быть задана уравнением ax + by = c, где a, b одновременно не равны нулю, a, b, c — целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ..., an, bn, cn. Определить, имеются ли среди этих прямых три прямые, пересекающиеся в одной точке.

  11. Даны две последовательности по n чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую (считать, что хотя бы одно такое число есть).

  12. Даны натуральное число n, целые числа a, x1, x2, ..., xn. Если в последовательности x1, x2, ..., xn есть хотя бы один член, равный a, то получить сумму всех членов, следующих за первым таким членом, иначе найти минимальный среди нечетных чисел последовательности x1, x2, ..., xn.

  13. Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, которые входят в последовательность по одному разу.

  14. Даны целые числа a1, a2, ..., an, среди которых могут быть повторяющиеся. Составить новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности.

  15. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность min(a1, a2, ..., ak), min(ak+1ak+2, ..., a2k), ..., min(ak(n-1)+1, ..., akn).

  16. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить последовательность последовательность max(a1, a2, ..., ak), max (ak+1ak+2, ..., a2k), ..., max (ak(n-1)+1, ..., akn).

  17. Даны натуральные числа k, n, действительные числа a1, a2, ..., akn. Получить min(a1 + a2 + ... + ak, ak+1 + ak+2 + ... + a2k, ..., ak(n-1)+1 + ... + akn).

  18. Сформировать одномерный массив размера N по следующему принципу: четные элементы равны квадрату индекса, а нечетные его обратной величине.

  19. Заполнить одномерный массив размера N так, чтобы каждый элемент с четным индексом был равен половине своего номера, а каждый элемент с нечетным индексом — 0.

  20. Даны два массива А(N) и В(N).Сформировать С(N) такой, что С[i]=А[i]/B[i], если i нечетное, и C[i]=A[i]*B[i], если i четное.

  21. Дан массив размера N. Вывести его элементы в обратном порядке.

  22. Подсчитать сумму элементов одномерного массива.

  23. Подсчитать сумму элементов двухмерного массива.

  24. Найти максимальный элемент в массиве. Найти индекс максимального элемента.

  25. Найти минимальный элемент в массиве. Найти индекс минимального элемента.

  26. Поменять местами минимальный и максимальный элементы массива.

  27. Найти среднее арифметическое элементов массива.

  28. Вывести всех элементов массива из интервала C..D.

  29. Массив размера N заполнен случайными числами от –15 до 15.Определить количество отрицательных элементов и их индексы.

  30. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево (вправо) на одну позицию.

  31. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево (вправо) на k позиций.

  32. Вывести наиболее часто встречающийся элемент массива.

  33. Проверить, все ли элементы массива различны.

  34. Проверить, имеется ли в массиве размера N. хотя бы одна пара чисел, совпадающих по величине.

  35. Дан массив размера N. Определить индексы всех равных элементов.

  36. Дан массив размера N. Вывести вначале его элементы с четными (нечетными) индексами, а затем — с нечетными (четными).

  37. Дан целочисленный массив A размера N. Вывести номер первого (последнего) из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[N]. Если таких элементов нет, то вывести 0.

  38. Дан целочисленный массив A размера N и два числа x и y (x < y). Найти номера элементов, удовлетворяющих условию xA[i] < y.

  39. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным (нечетным) числам первый (последний) элемент. Первый и последний элементы массива не изменять.

  40. Дан целочисленный массив размера N. Вывести вначале все его четные (нечетные) элементы, а затем — нечетные (четные).

  41. Дан целочисленный массив размера N. Изменить знак всех элементов с четными индексами на противоположный.

  42. Дан целочисленный массив размера N. Заменить нулевые элементы квадратами их индексов.

  43. Дан целочисленный массив размера N. Поменять местами соседние четные и нечетные по номеру элементы. Указание: дополнительные массивы не использовать.

  44. Заменить все положительные (отрицательные) элементы целочисленного массива на значение минимального (|максимального).

  45. Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

  46. Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет — вывести 0.

  47. Проверить, образуют ли элементы целочисленного массива размера N геометрическую прогрессию. Если да, то вывести знаменатель прогрессии, если нет — вывести 0.

  48. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

  49. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

  50. Дан массив ненулевых целых чисел размера N. Определить число соседств из двух чисел разного знака.

  51. Дан массив размера N. Вычислить сумму произведений всех пар соседних чисел.

  52. Дан массив размера N. Вычислить сумму произведений всех троек соседних чисел.

  53. Дан массив размера N. Определить количество пар соседних чисел, являющихся противоположными.

  54. Дан массив размера N. Определить произведение нечетных элементов, имеющих четные индексы.

  55. Дан массив размера N. Найти количество его локальных минимумов.

  56. Дан массив размера N. Найти количество его локальных максимумов.

  57. Дан массив размера N. Найти максимальный из его локальных минимумов.

  58. Дан массив размера N. Найти минимальный из его локальных максимумов.

  59. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают.

  60. Дан массив размера N. Определить количество участков, на которых его элементы монотонно убывают.

  61. Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

  62. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее близок к данному числу.

  63. Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу.

  64. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее близка к данному числу.

  65. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.

  66. Дан массив размера N. Найти номера двух ближайших чисел из этого массива.

  67. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

  68. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее двух раз.

  69. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз.

  70. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза.

  71. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно три раза.

  72. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на один нуль.

  73. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить группы элементов, состоящие из нечетного количества нулей, на один нулевой элемент, а из четного — на два.

  74. Дан целочисленный массив размера N, содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на элемент, состоящий из двух цифр, где первая цифра — 0, а вторая — количество нулей в группе.

  75. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.

  76. Дан массив размера N. Преобразовать его, вставив перед1|после2 каждого положительного3|отрицательного4 элемента нулевой элемент.

  77. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива.

  78. Дан целочисленный массив размера N. Преобразовать массив, увеличив1|уменьшив2 каждую его серию на один элемент.

  79. Дан целочисленный массив размера N. Преобразовать массив, увеличив первую1|последнюю2|все3 серии наибольшей длины на один элемент.

  80. Дан целочисленный массив размера N. Вставить перед1|после2 каждой серии нулевой элемент.

  81. Дано число k и целочисленный массив размера N. Поменять местами первую1|последнюю2 и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений.

  82. Дано число k и целочисленный массив размера N. Удалить из массива все серии, длина которых меньше1|равна2|больше3 k.

  83. Дано число k и целочисленный массив размера N. Заменить каждую серию, длина которой меньше1|равна2|больше3 k, на один нулевой элемент.

  84. Даны два массива A и B размера N, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным.

  85. Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую1|убывающую2 последовательность.

  86. Дана точка A и  массив B из N точек. Найти номер точки из массива B, наиболее близкой1|удаленной2 от точки A.

  87. Дан массив из N точек. Среди всех точек этого массива, лежащих в первой1|второй2|третьей3|четвертой4 четверти, найти точку, наиболее близкую5|удаленную6 от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами.

  88. Дан массив из N точек. Найти пару различных точек этого массива с минимальным1|максимальным2 расстоянием между ними и само это расстояние (точки выводятся в порядке возрастания индексов.

  89. Дан массив из N точек. Найти такую точку из данного массива, сумма расстояний от которой до остальных его точек минимальна1|максимальна2, и саму эту сумму.

  90. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное1|максимальное2 расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.

  91. Дано множество A из N точек. Найти наименьший1|наибольший2 периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A).


Процедуры и функции

Задания

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

Вспомогательные локальные переменные-массивы в процедурах или функциях при выполнении заданий использовать не следует.

  1. Дано число k (0 < k < n) и матрица размера n×m. Найти сумму и произведение элементов k-го столбца данной матрицы.

  2. Дана матрица размера n×m. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4.

  3. Дана матрица размера n×m. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4.

  4. Дана матрица размера n×m. В каждой строке1|столбце2 найти количество элементов, больших3|меньших4 среднего арифметического всех элементов этой строки1|столбца2.

  5. Дана матрица размера n×m. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке1|столбце2.

  6. Дана матрица размера n×m. Найти минимальное1|максимальное2 значение среди сумм элементов всех ее строк3|столбцов4 и номер строки3|столбца4 с этим минимальным1|максимальным2 значением.

  7. Дана матрица размера n×m. Найти минимальный1 или максимальный2 среди максимальных1 или минимальных2 элементов каждой строки3 или столбца4.

  8. Дана целочисленная матрица размера n×m. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк3|столбцов4 нет, то вывести 0.

  9. Дана матрица размера n×m. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего только положительные элементы. Если таких строк3|столбцов4 нет, то вывести 0.

  10. Дана целочисленная матрица размера N×M. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2.

  11. Дана целочисленная матрица размера N×M. Найти количество ее строк1|столбцов2, все элементы которых различны.

  12. Дана целочисленная матрица размера N×M. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов.

  13. Дана квадратная матрица порядка N. Найти сумму элементов ее главной1|побочной2 диагонали.

  14. Дана квадратная матрица порядка N. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали A[1,N]1 | A[1,1]2).

  15. Дана квадратная матрица порядка I. Вывести минимальные1|максимальные2 из элементов каждой ее диагонали, параллельной главной3|побочной4 (начиная с одноэлементной диагонали A[1,M]3 | A[1,1]4).

  16. Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже1|выше2 главной3|побочной4 диагонали.

  17. Дана квадратная матрица порядка M. Заменить нулями элементы, лежащие одновременно выше1|ниже2 главной диагонали (включая эту диагональ) и выше3|ниже4 побочной диагонали (также включая эту диагональ).

  18. Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно [горизонтальной оси симметрии]1|[вертикальной оси симметрии]2|[главной диагонали]3|[побочной диагонали]4 матрицы.

  19. Дана квадратная матрица порядка M. Повернуть ее на 901|1802|2703 градусов в положительном направлении.

  20. Дана матрица размера N×M. Вывести количество строк1|столбцов2, элементы которых монотонно возрастают3|убывают4.

  21. Дана матрица размера N×M. Найти минимальный1|максимальный2 среди элементов тех строк3|столбцов4, которые упорядочены либо по возрастанию, либо по убыванию. Если такие строки3|столбцы4 отсутствуют, то вывести 0.

  22. Даны два числа k1 и k2 и матрица размера N×M. Поменять местами строки1|столбцы2 матрицы с номерами k1 и k2.

  23. Дана матрица размера N×M. Поменять местами строки1|столбцы2, содержащие минимальный и максимальный элементы матрицы.

  24. Дана матрица размера N×M. Поменять местами столбец с номером 11|M2 и первый3|последний4 из столбцов, содержащих только положительные элементы.

  25. Дано число k и матрица размера N×M. Удалить строку1|столбец2 матрицы с номером k.

  26. Дана матрица размера N×M. Удалить строку1|столбец2, содержащий минимальный3|максимальный4 элемент матрицы.

  27. Дана матрица размера N×M. Удалить первый1|последний2|все3 столбцы, содержащие только положительные элементы.

  28. Дано число k и матрица размера N×M. Перед1|после2 строки3|столбца4 матрицы с номером k вставить строку3|столбец4 из нулей.

  29. Дана матрица размера N×M. Продублировать строку1|столбец2 матрицы, содержащий ее минимальный3|максимальный4 элемент.

  30. Дана матрица размера N×M. Перед1|после2 первого3|последнего4 столбца, содержащего только положительные элементы, добавить столбец, состоящий из единиц.

  31. Дана целочисленная матрица размера N×M. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

  32. Дана матрица размера N×M. Элемент называется локальным минимумом (максимумом), если он меньше (больше) всех окружающих его элементов. Заменить все локальные минимумы1|максимумы2 данной матрицы на 0.

  33. Дана матрица размера N×M. Поменять местами ее строки1|столбцы2 так, чтобы их минимальные3|максимальные4 элементы образовывали возрастающую5|убывающую6 последовательность.

  34. Даны два упорядоченных по возрастанию массива A и B. Получить из них путем слияния упорядоченный по возрастанию массив C; совпадающие элементы вставлять единожды. Подсчитать количество элементов в массиве C.

  35. Из двух упорядоченных по невозрастанию массивов A(m) и B(n) получить путем слияния упорядоченный по убыванию массив C; удаляемые элементы собрать в массиве D. Подсчитать количество элементов в массивах C и D.

  36. Путем слияния из возрастающего A(m) и невозрастающего B(n) массивов получить возрастающий массив C (с удалением совпадающих элементов). Подсчитать количество элементов в массиве С.