Работа с несколькими файлами
3. Имеется текстовый файл. Переписать его строки в другой файл. Порядок строк во втором файле должен:
a. совпадать с порядком строк в заданном файле;
b. быть обратным по отношению к порядку строк в заданном файле.
4. Имеется текстовый файл. Переписать его строки в перевёрнутом виде в другой файл.
5. Имеется текстовый файл. Переписать в другой файл те его строки, в которых имеется более 30 символов.
6. Имеется текстовый файл. Переписать в другой файл все его строки с заменой в них символа «0» на символ «1» и наоборот.
7. Имеются два текстовых файла с одинаковым числом строк. Выяснить, совпадают ли их строки. Если нет, то получить номер первой строки, в которой эти файлы отличаются друг от друга.
Текстовые файлы
1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).
2. Дана строка S и текстовый файл. Добавить строку S в начало1|конец2 файла.
3. Дан текстовый файл. Удалить из него первую1|последнюю2 строку.
4. Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке).
5. Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2.
6. Дан текстовый файл, содержащий более трех строк. Удалить из него три последние строки.
7. Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые1|последние2 k строк.
8. Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.
9. Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
10. Дано число k и текстовый файл. Вставить пустую строку перед1|после2 строки с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
11. Дан текстовый файл. Удалить из него пустые строки.
12. Дана строка S и текстовый файл. Заменить в файле все пустые строки на строку S.
13. Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
14. Дан текстовый файл, содержащий текст, выровненный по левому краю. Выровнять его по [правому краю]1|центру2, добавив в начало каждой непустой строки необходимое количество пробелов (ширину текста считать равной 50). Строки нечетной длины перед центрированием дополнять слева пробелом.
15. Дан текстовый файл, содержащий текст, выровненный по левому краю. Абзацы текста разделяются одной пустой строкой. Выровнять текст по ширине (то есть и по левому, и по правому краю), увеличив в каждой непустой строке (кроме последних строк абзацев) количество пробелов между словами, начиная с первого1|последнего2 пробела в строке (ширину текста считать равной 50).
16. Дан текстовый файл. Найти количество абзацев в тексте, если абзацы отделяются друг от друга одной или несколькими пустыми строками.
17. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.
18. Дан текстовый файл. Абзацы выделяются в нем с помощью красной строки (5 пробелов), а пустых строк нет. Вставить между соседними абзацами по пустой строке.
19. Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке).
20. Дан текстовый файл. Вывести первое1|последнее2 слово текста наибольшей длины (с учетом знаков препинания, расположенных в начале и в конце слов).
21. Дано целое число N и текстовый файл. Создать строковый файл, содержащий все слова длины N из исходного файла (знаки препинания, p`qonknfemm{e в начале и в конце слов, не учитывать). Если исходный файл не содержит слов длины N, оставить результирующий файл пустым.
22. Дан символ C (прописная русская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся1|оканчивающиеся2 этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым.
23. Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы отделяются друг от друга одной или несколькими пустыми строками и нумеруются от 1). Пустые строки, предшествующие и следующие за удаляемым абзацем, не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.
24. Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.
25. Дан текстовый файл, каждая строка которого изображает целое число, дополненное слева и справа несколькими пробелами. Вывести сумму этих чисел и их количество.
26. Дан текстовый файл, каждая строка которого изображает целое или вещественное число, дополненное слева и справа несколькими пробелами (вещественные числа имеют ненулевую дробную часть). Вывести сумму целых1|вещественных2 чисел и их количество.
27. Дан текстовый файл, каждая строка которого содержит изображения нескольких вещественных чисел, разделенных пробелами. Создать файл вещественных чисел, содержащий эти числа в том же порядке.
28. Даны два текстовых файла с именами Name1 и Name2. Добавить в начало1|конец2 каждой строки файла Name1 соответствующую строку файла Name2. Если файл Name2 короче файла Name1, то оставшиеся строки файла Name1 не изменять.
29. Дан текстовый файл NameT и файл целых чисел NameN. Добавить в начало1|конец2 каждой строки файла NameT изображение соответствующего числа из файла NameN. Если файл NameN короче файла NameT, то оставшиеся строки файла NameT не изменять.
30. Дан текстовый файл с именем NameT. В каждой его строке первые 60 позиций отводятся под текст, а оставшаяся часть — под вещественное число. Создать два файла: строковый файл с именем NameS, содержащий текстовую часть исходного файла, и файл вещественных чисел с именем NameR, содержащий числа из исходного файла.
31. Даны два файла целых чисел одного размера с именами Name1 и Name2. Создать текстовый файл с именем NameT, содержащий изображения этих чисел, расположенные в два столбца шириной по 30 символов: первый содержит числа из файла Name1, второй — из файла Name2. В начале и конце каждой строки текстового файла ввести разделитель " | " (код 124). Числа выравниваются по левому1|правому2 краю столбца.
32. Даны вещественные числа A, B и целое число N. Создать текстовый файл, содержащий таблицу значений функции f(x) = [sin(x)]1|[cos(x)]2|[exp(x)]3 на промежутке [A, B] с шагом (B- A)/N. Таблица состоит из двух столбцов: с аргументами x (10 позиций, из них 3 под дробную часть) и со значениями f(x) (15 позиций, из них 8 под дробную часть). Столбцы выравниваются по правому краю и разделяются 10 пробелами.
33. Дан текстовый файл с именем NameT, содержащий таблицу из трех столбцов вещественных чисел. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Специальных символов-разделителей таблица не содержит. Создать файлы вещественных чисел с именами Name1, Name2 и Name3, каждый из которых содержит числа из соответствующего qrnkav` таблицы.
34. Дан текстовый файл, представляющий собой таблицу, состоящую из трех столбцов с целыми числами. В начале и в конце каждой строки таблицы, а также между ее столбцами располагается символ-разделитель. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Создать файл целых чисел, содержащий сумму чисел из каждой строки исходной таблицы.
35. Дан текстовый файл. Создать символьный файл, содержащий все символы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке [возрастания их кодов]1|[убывания их кодов]2|[их первого появления в тексте]3.
36. Дан текстовый файл с именем NameT. Подсчитать число повторений в нем строчных русских букв ("а"–"я") и создать строковый файл с именем NameS, элементы которого имеют вид: "<буква>–<число повторений данной буквы>". Буквы, отсутствующие в тексте, в файл не включать. Строки упорядочить по [возрастанию кодов букв]1|[убыванию числа повторений букв, а при равном числе повторений — по возрастанию кодов букв]2.
37. Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле с именем Name2.
38. Дано целое число N и текстовый файл Name1, содержащий текст, выровненный по левому краю. Абзацы текста отделяются друг от друга одной пустой строкой. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю, сохранив деление на абзацы. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле Name2.
39. Дана строка K, состоящая из 10 цифр, и файл с русским текстом. Зашифровать файл, выполнив циклическую замену каждой русской буквы, стоящей на i-й позиции строки, на букву того же регистра, расположенную в алфавите на K[i]-м месте после шифруемой буквы (символы строки K также перебираются циклически: для i = 11 снова используется смещение K[1] и т.д.). Букву "ё" в алфавите не учитывать, знаки препинания и пробелы не изменять.
40. Дана строка S1 и файл с русским текстом, зашифрованным по правилу, описанному в задании Text39. Строка S1 представляет собой первую расшифрованную строку текста. Расшифровать остальные строки и заменить в файле зашифрованный текст на расшифрованный. Если информации для расшифровки недостаточно, то исходный файл не изменять.
Функции и процедуры
Теория - ? и пример - ?
1. Получить все шестизначные счастливые номера. Счастливым называют такое шестизначное число, для которого сумма его первых трёх цифр равна сумме его последних трёх цифр. Определить функцию для расчёта суммы цифр трёхзначного числа.
2. Даны шесть различных чисел. Определить максимальное из них. Определить функцию, находящую максимум из двух различных чисел.
3. Даны два предложения. В каком из них доля в % вхождений букв «б» больше? Определить функцию для расчёта доли вхождений некоторой буквы в предложение.
4. Даны стороны двух треугольников. Найти сумму их периметров и сумму их площадей. Определить процедуру для расчёта периметра и площади треугольника по его сторонам.
5. Написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке.
6. Описать функцию Min2(A,B)1|Max2(A,B)2 вещественного типа, находящую минимальное1|максимальное2 из двух вещественных чисел A и B. С помощью этой функции найти минимальные1|максимальные2 из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D.
7. Описать процедуру Minmax(A,B), записывающую в переменную A минимальное из значений A и B, а в переменную B — максимальное из этих значений (A и B — вещественные параметры, являющиеся одновременно входными и выходными). Используя четыре вызова этой процедуры, найти минимальное и максимальное из ·исел A, B, C, D.
8. Используя процедуру Minmax из задания Proc2, описать функцию Min3(A,B,C)1|Max3(A,B,C)2 вещественного типа, находящую минимальное1|максимальное2 из трех вещественных чисел A, B и C. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C), (A,B,D), (A,C,D), если даны числа A, B, C, D.
9. Используя функцию Min21|Max22 из задания Proc1, описать функцию Min4(A,B,C,D)1|Max4(A,B,C,D)2 вещественного типа, находящую минимальное1|максимальное2 из четырех вещественных чисел A, B, C и D. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C,D), (A,B,C,E), (A,C,D,E), если даны числа A, B, C, D, E.
10. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1·2·...·N (N > 0 — параметр целого типа). С помощью этой фунЄции вычислить факториалы 10 данных чисел.
11. Описать функцию FactR(N) вещественного типа, позволяющую вычислять приближенное значение факториала N! = 1·2·...·N для целых N (> 0). С помощью этой функции вычислить факториалы пяти данных чисел.
12. Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1·3·5·...·N, если N — нечетное, N!! = 2·4·6·...·N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел.
13. Описать нерекурсивную функцию Fib(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... . С помощью этой функции вычислить 10 чисел Фибоначчи с указанными номерами.
14. Описать процедуру SumDigit(N,S), находящую сумму цифр S целого числа N (N — входной, S — выходной параметр). Используя эту процедуру, найти суммы цифр пяти данных чисел.
15. Описать нерекурсивную функцию NOD2(A,B) целого типа, находящую наибольший общий делитель (НОД) двух натуральных чисел A и B, используя алгоритм Евклида: НОД(A,B) = НОД(B mod A,A), если A <> 0; НОД(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.
16. Используя функцию NOD2 из задания Proc10, описать процедуру Frac(a,b,p,q), преобразующую дробь a/b к несократимому виду p/q (все параметры процедуры — целого типа). Знак результирующей дроби p/q приписывается числителю (т.е. q > 0). С помощью этой процедуры найти несократимые дроби, равные a/b + c/d, a/b + e/f, a/b + g/h (числа a, b, c, d, e, f, g, h даны).
17. Описать функцию Exp1(x,eps) вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции exp(x): exp(x) = 1 + x + x2 / 2! + x3 / 3! + ... + xn / n! + ... . В сумме учитывать все слагаемые, большие eps. С помощью Exp1 найти приближенное значение экспоненты для данного x при шести данных eps.
18. Описать функцию Sin1(x,eps)1|Cos1(x,eps)2 вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции sin(x)1|cos(x)2: [sin(x) = x – x3 / 3! + x5 / 5! – ... + (–1)n x2n+1 / (2n+1)! + ...]1| [cos(x) = 1 – x2 / 2! + x4 / 4! – ... + (–1)n x2n / (2n)! + ...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Sin11|Cos12 найти приближенное значение синуса1|косинуса2 для данного x при шести данных значениях eps.
19. Описать функцию Ln1(x,n)1|Arctg1(x,n)2 вещественного типа (параметры x, eps — вещественные, |x| < 1, eps > 0), находящую приближенное значение функции ln(1+x)1|arctg(x)2: [ln(1+x) = x – x2 / 2 + x3 / 3 – ... + (–1)n xn+1 / (n+1) + ...]1| [arctg(x) = x – x3 / 3 + x5 / 5 – ... + (–1)n x2n+1 / (2n+1) + ...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Ln11|Arctg12 найти приближенное значение ln(1+x)1|arctg(x)2 для данного x при шести данных значениях eps.
20. Описать функцию PowerA(x,a,eps) вещественного типа (параметры x, a, eps — вещественные, |x| < 1, a > 0, eps > 0), находящую приближенное значение функции (1+x)a: (1+x)a = 1 + a·x + a·(a–1)·x2 / 2! + ... + a·(a–1)·...·(a–n+1)·xn / n! + ... . В сумме учитывать все слагаемые, большие по модулю eps. С помощью PowerA найти приближенное значение (1+x)a для данных x и a при шести различных значениях eps.
21. Описать функцию Otr(Ax,Ay,Bx,By) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов: |AB| = sqrt((Ax-Bx)2 + (Ay-By)2) (Ax, Ay, Bx, By — вещественные параметры). С помощью этой функции найти длины отрезков AB, AC, AD, если даны координаты точек A, B, C, D.
22. Используя функцию Otr из задания Proc16, описать функцию Perim(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (Ax, Ay, Bx, By, Cx, Cy — вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
23. Используя функции Otr и Perim из заданий Proc16 и Proc17, описать функцию Area(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую okny`d| треугольника ABC по формуле Герона: SABC = sqrt(p·(p–|AB|)·(p–|AC|)·(p–|BC|)), где p — полупериметр. С помощью этой функции найти площади треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
24. Используя функции Otr и Area из заданий Proc16 и Proc18, описать процедуру Dist(Px,Py,Ax,Ay,Bx,By,D), находящую расстояние D от точки P до прямой AB по формуле D = 2SPAB / |AB|, где SPAB — площадь треугольника PAB. С помощью этой процедуры найти расстояния от точки P до прямых AB, AC, BC, если даны координаты точек P, A, B, C.
25. Используя процедуру Dist из задания Proc19, описать процедуру Heights(Ax,Ay,Bx,By,Cx,Cy,hA,hB,hC), находящую высоты hA, hB, hC треугольника ABC, проведенные соответственно из вершин A, B, C. С помощью этой процедуры найти высоты треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
Классы
Теория - ? и пример - ?
1. Определить класс «Дом», содержащий следующие поля:
· количество этажей
· ширина дома
· длина дома
· стоимость постройки 1 кв.м дома
Определить методы класса:
· общая площадь дома
· количество затрачиваемых материалов
· стоимость постройки дома
Создать три экземпляра класса «Дом»
2. Определить класс «Студент», содержащий следующие поля:
· номер студента
· оценка по экзамену 1
· оценка по экзамену 2
· оценка по курсовой работе
Определить методы класса:
· средняя оценка
· минимальная оценка
· максимальная оценка
Создать три экземпляра класса «Студент»
3. Определить класс «Рабочий», содержащий следующие поля:
· номер рабочего
· год рождения рабочего
· заработная плата рабочего
· премия рабочего
Определить методы класса:
· выдача заработной платы (заработная плата + премия – 13% подоходный налог)
· возраст рабочего
Создать три экземпляра класса «Рабочий»
4. Определить класс «Поезд», содержащий следующие поля:
· номер поезда
· длина маршрута (в км)
· стоимость 1 км
· количество пассажиров
Определить методы класса:
· стоимость билета на поезд для одного пассажира
· стоимость билетов на поезд для всех пассажиров
Создать три экземпляра класса «Поезд»
5. Определить класс «Магазин», содержащий следующие поля:
· номер товара
· стоимость единицы товара
· количество товара (в шт.)
· скидка на товар (в %)
Определить методы класса:
· стоимость всех единиц данного товара
· стоимость всех единиц данного товара со скидкой
Создать три экземпляра класса «Магазин»
6. Определить класс «Банк», содержащий следующие поля:
· номер расчетного счета
· сумма на расчетном счете в руб.
· поступившая сумма в евро
· текущий курс евро
Определить методы класса:
· поступившая сумма в рублях
· общая сумма на расчетном счете в рублях
· общая сумма в евро
Создать три экземпляра класса «Банк»
7. Определить класс «Склад», содержащий следующие поля:
· номер клиента склада
· количество товара, отгруженного клиенту
· стоимость единицы товара (руб.)
· месяц отгрузки товара
· текущий курс евро
Определить методы класса:
· стоимость товара, отгруженного клиенту в руб.
· стоимость товара, отгруженного клиенту в евро
· количество месяцев, прошедшее с момента отгрузки товара
Создать три экземпляра класса «Склад»
8. Определить класс «Животное», содержащий следующие поля:
· номер животного
· вес животного
· год рождения животного
· количество еды, необходимое для питания на 1 кг веса животного
Определить методы класса:
· возраст животного
· рассчитать количество еды, необходимое животному
Создать три экземпляра класса «Животное»
9. Определить класс «Аптека», содержащий следующие поля:
· номер лекарства
· стоимость 1 г лекарства
· сколько г лекарства необходимо на 1 кг больного
· вес больного, для которого заказывается лекарство
· скидка
Определить методы класса:
· рассчитать количество лекарства, необходимого человеку
· рассчитать стоимость лекарства
· рассчитать стоимость лекарства со скидкой
Создать три экземпляра класса «Аптека»
10. Определить класс «Ребенок», содержащий следующие поля:
· номер ребенка
· год рождения
· стоимость 100 г каши
· количество каши, съедаемое ребенком за один прием пищи (в г)
· количество приемов пищи ребенком за день
Определить методы класса:
· возраст ребенка
· количество каши, съедаемое ребенком за день
· стоимость каши, съедаемой ребенком за день
· стоимость каши, съедаемой ребенком за один прием пищи
Создать три экземпляра класса «Ребенок»
11. Определить класс «Пляж», содержащий следующие поля:
· номер пляжа
· количество посетителей пляжа
· количество коктейлей, выпиваемых одним посетителем
· стоимость одного коктейля
Определить методы класса:
· стоимость коктейлей, выпиваемых одним посетителем пляжа за 1 день
· стоимость коктейлей, выпиваемых всеми посетителями пляжа за 1 день
· стоимость коктейлей, выпиваемых одним посетителем пляжа за 7 дней
· стоимость коктейлей, выпиваемых всеми посетителями пляжа за 7 дней
Создать три экземпляра класса «Пляж»
12. Определить класс «Фотоателье», содержащий следующие поля:
· номер фотоателье
· стоимость одной фотографии 10 х 15
· стоимость одной фотографии на загранпаспорт
Определить методы класса:
· стоимость фотографии 10 х 15 и трёх фотографий на загранпаспорт
· стоимость 36 фотографий 10 х 15
· стоимость 100 фотографий 10 х 15 со скидкой 5%
Создать три экземпляра класса «Фотоателье»
13. Определить класс «Салон красоты», содержащий следующие поля:
· номер услуги, оказываемой салоном
· стоимость услуги
· количество посещений салона клиентом
· скидка в % на каждое последующее посещение салона
Определить методы класса:
· стоимость всех посещений без скидки
· стоимость всех посещений со скидкой
· сколько сэкономил клиент за все посещения
Создать три экземпляра класса «Салон красоты»
14. Определить класс «Цветок», содержащий следующие поля:
· номер цветка
· высота цветка (в см)
· количество удобрений, необходимое для 1 см цветка ( в г)
· стоимость 1 г удобрений
Определить методы класса:
· количество удобрений, необходимое для цветка
· стоимость удобрений для цветка
· стоимость удобрений для 10 таких цветов
Создать три экземпляра класса «Цветок»
15. Определить класс «Посуда», содержащий следующие поля:
· номер посуды
· стоимость 1 тарелки
· стоимость 1 чашки
· стоимость 1 блюдца
Определить методы класса:
· стоимость набора посуды: 3 чашки + 3 блюдца
· стоимость набора посуды: 3 чашки + 3 блюдца + 3 тарелки
· стоимость набора посуды: 6 чашек + 6 блюдец + 6 тарелок
Создать три экземпляра класса «Посуда»
Библиографический список