Методические указания для студентов механикоматематического, физического и экономического факультетов РостовнаДону 2004
Скачать 0.6 Mb.
|
одинакового размера. Это позволяет использовать для обработки строковых файлов методы прямого доступа, однако делает невозможным их просмотр и редактирование в обычных текстовых редакторах. В языке Pascal строковые файлы описываются как file of string (в Borland Delphi необходимо ис- пользовать описание file of ShortString). В языке Basic строковые фай- лы надо описывать как файлы прямого доступа (открытые в режиме Random) с элементами-строками фиксированного размера, например, String*80. В язы- ке C++ строковые файлы, как любые двоичные файлы, должны открываться в режиме ios_base::binary и иметь в качестве элементов строки фиксиро- ванного размера, например, char[80]. Под размером двоичного типизированного файла всегда подразумевается количество содержащихся в нем элементов указанного типа (а не количество байтов, как это принято в операционной системе). Как и для элементов массива, для элементов файла в формулировках заданий применяется «естественная» нумерация: первый элемент файла имеет порядковый номер 1. Это следует учи- тывать при организации перемещения к элементу с требуемым номером; в ча- стности, в языке Pascal для перехода к K-му элементу файла F необходимо вы- звать процедуру Seek(F, K–1). 10 Максимальный размер исходных файлов не указывается, поэтому при ре- шении заданий на файлы не следует использовать вспомогательные массивы, содержащие все элементы исходных файлов, однако допускается использова- ние вспомогательных файлов. Все исходные файлы считаются существующими и непустыми, за исключением специально оговоренных случаев (см., например, задания File4, File5, File9), в которых существование исходных файлов требует- ся проверять в ходе выполнения задания. Если при выполнении заданий не используется электронный задачник Programming Taskbook, то следует позаботиться о генерации исходных фай- лов, а также о наглядном выводе содержимого результирующих двоичных фай- лов. Для этих целей целесообразно применять специальные процедуры, кото- рые может разработать либо преподаватель, либо сами учащиеся. Указатели В заданиях этой группы используется особые типы данных: записи типа TNode и указатели на них типа PNode. Описание этих типов на языках Pascal и C++ приводится в начале раздела «Указатели». При использовании электронно- го задачника Programming Taskbook эти типы не следует описывать в про- грамме учащегося, так как они уже описаны в модулях задачника, подключае- мых к программе. Для нулевого указателя в формулировках заданий используется обозначе- ние nil, заимствованное из языка Pascal. Если при выполнении заданий не используется электронный задачник Programming Taskbook, то следует позаботиться о подготовке тестовых дина- мических структур (и размещении их в динамической памяти в начале работы программы), а также о наглядном выводе содержимого результирующих струк- тур. Здесь, как и в случае с файлами, могут оказаться полезными специальные процедуры, разработанные либо преподавателем, либо самими учащимися. 3 Ввод и вывод данных, оператор присваивания: группа Begin Все входные и выходные данные в заданиях этой группы являются веще- ственными числами. Begin1. Дана сторона квадрата a. Найти его периметр P = 4·a. Begin2. Дана сторона квадрата a. Найти его площадь S = a 2 Begin3 °. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и пе- риметр P = 2·(a + b). Begin4. Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значе- ния π использовать 3.14. 11 Begin5. Дана длина ребра куба a. Найти объем куба V = a 3 и площадь его по- верхности S = 6·a 2 Begin6. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c). Begin7 °. Найти длину окружности L и площадь круга S заданного радиуса R: L = 2· π·R, S = π·R 2 В качестве значения π использовать 3.14. Begin8. Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2. Begin9. Даны два неотрицательных числа a и b. Найти их среднее геометриче- ское, то есть квадратный корень из их произведения: a b ⋅ Begin10. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов. Begin11. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их модулей. Begin12. Даны катеты прямоугольного треугольника a и b. Найти его гипоте- нузу c и периметр P: c = 2 a b 2 + , P = a + b + c. Begin13. Даны два круга с общим центром и радиусами R 1 и R 2 (R 1 > R 2 ). Найти площади этих кругов S 1 и S 2 , а также площадь S 3 кольца, внешний радиус которого равен R 1 , а внутренний радиус равен R 2 : S 1 = π·(R 1 ) 2 , S 2 = π·(R 2 ) 2 , S 3 = S 1 – S 2 В качестве значения π использовать 3.14. Begin14. Дана длина L окружности. Найти ее радиус R и площадь S круга, ог- раниченного этой окружностью, учитывая, что L = 2· π·R, S = π·R 2 . В ка- честве значения π использовать 3.14. Begin15. Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = π·D, S = π·D 2 /4. В качестве значения π использовать 3.14. Begin16. Найти расстояние между двумя точками с заданными координатами x 1 и x 2 на числовой оси: |x 2 – x 1 |. Begin17. Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму. Begin18. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC. Begin19. Даны координаты двух противоположных вершин прямоугольника: (x 1 , y 1 ), (x 2 , y 2 ). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника. 12 Begin20. Найти расстояние между двумя точками с заданными координатами (x 1 , y 1 ) и (x 2 , y 2 ) на плоскости. Расстояние вычисляется по формуле 2 2 2 1 2 1 ( ) ( ) . x x y y − + − Begin21. Даны координаты трех вершин треугольника: (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ). Найти его периметр и площадь, используя формулу для расстояния между двумя точками на плоскости (см. задание Begin20). Для нахождения пло- щади треугольника со сторонами a, b, c использовать формулу Герона: ( ) ( ) ( S p p a p b p c = ⋅ − ⋅ − ⋅ − ), где p = (a + b + c)/2 — полупериметр. Begin22 °. Поменять местами содержимое переменных A и B и вывести новые значения A и B. Begin23. Даны переменные A, B, C. Изменить их значения, переместив содер- жимое A в B, B — в C, C — в A, и вывести новые значения переменных A, B, C. Begin24. Даны переменные A, B, C. Изменить их значения, переместив содер- жимое A в C, C — в B, B — в A, и вывести новые значения переменных A, B, C. Begin25. Найти значение функции y = 3·x 6 – 6·x 2 – 7 при данном значении x. Begin26. Найти значение функции y = 4·(x–3) 6 – 7·(x–3) 3 + 2 при данном значе- нии x. Begin27 °. Дано число A. Вычислить A 8 , используя вспомогательную перемен- ную и три операции умножения. Для этого последовательно находить A 2 , A 4 , A 8 . Вывести все найденные степени числа A. Begin28. Дано число A. Вычислить A 15 , используя две вспомогательные пере- менные и пять операций умножения. Для этого последовательно находить A 2 , A 3 , A 5 , A 10 , A 15 . Вывести все найденные степени числа A. Begin29. Дано значение угла α в градусах (0 < α < 360). Определить значение этого же угла в радианах, учитывая, что 180° = π радианов. В качестве зна- чения π использовать 3.14. Begin30. Дано значение угла α в радианах (0 < α < 2·π). Определить значение этого же угла в градусах, учитывая, что 180° = π радианов. В качестве зна- чения π использовать 3.14. Begin31. Дано значение температуры T в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цель- сию T C и температура по Фаренгейту T F связаны следующим соотношени- ем: T C = (T F – 32)·5/9. 13 Begin32. Дано значение температуры T в градусах Цельсия. Определить значе- ние этой же температуры в градусах Фаренгейта. Температура по Цельсию T C и температура по Фаренгейту T F связаны следующим соотношением: T C = (T F – 32)·5/9. Begin33. Известно, что X кг конфет стоит A рублей. Определить, сколько стоит 1 кг и Y кг этих же конфет. Begin34. Известно, что X кг шоколадных конфет стоит A рублей, а Y кг ирисок стоит B рублей. Определить, сколько стоит 1 кг шоколадных конфет, 1 кг ирисок, а также во сколько раз шоколадные конфеты дороже ирисок. Begin35. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T 1 ч, а по реке (против течения) — T 2 ч. Определить путь S, пройденный лодкой (путь = время · скорость). Учесть, что при движении против течения скорость лодки уменьшается на величину скорости течения. Begin36. Скорость первого автомобиля V 1 км/ч, второго — V 2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Данное расстояние равно сумме на- чального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость. Begin37. Скорость первого автомобиля V 1 км/ч, второго — V 2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. Данное рас- стояние равно модулю разности начального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость. Begin38. Решить линейное уравнение A·x + B = 0, заданное своими коэффици- ентами A и B (коэффициент A не равен 0). Begin39. Найти корни квадратного уравнения A·x 2 + B·x + C = 0, заданного своими коэффициентами A, B, C (коэффициент A не равен 0), если извест- но, что дискриминант уравнения положителен. Вывести вначале меньший, а затем больший из найденных корней. Корни квадратного уравнения на- ходятся по формуле x 1,2 = ( ) / B D − ± (2·A), где D — дискриминант, рав- ный B 2 – 4·A·C. Begin40. Найти решение системы линейных уравнений вида A 1 ·x + B 1 ·y = C 1 , A 2 ·x + B 2 ·y = C 2 , заданной своими коэффициентами A 1 , B 1 , C 1 , A 2 , B 2 , C 2 , если известно, что данная система имеет единственное решение. Воспользоваться формулами x = (C 1 ·B 2 – C 2 ·B 1 )/D, y = (A 1 ·C 2 – A 2 ·C 1 )/D, где D = A 1 ·B 2 – A 2 ·B 1 14 4 Целые числа: группа Integer Все входные и выходные данные в заданиях этой группы являются целыми числами. Все числа, для которых указано количество цифр (двузначное число, трехзначное число и т. д.), считаются положительными. Integer1. Дано расстояние L в сантиметрах. Используя операцию деления наце- ло, найти количество полных метров в нем (1 метр = 100 см). Integer2. Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг). Integer3 °. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта). Integer4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без на- ложений). Используя операцию деления нацело, найти количество отрез- ков B, размещенных на отрезке A. Integer5. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без на- ложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A. Integer6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем — его правую цифру (единицы). Для нахождения десятков исполь- зовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления. Integer7. Дано двузначное число. Найти сумму и произведение его цифр. Integer8 °. Дано двузначное число. Вывести число, полученное при перестанов- ке цифр исходного числа. Integer9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни). Integer10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки). Integer11 °. Дано трехзначное число. Найти сумму и произведение его цифр. Integer12. Дано трехзначное число. Вывести число, полученное при прочтении исходного числа справа налево. Integer13. Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число. Integer14. Дано трехзначное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число. 15 Integer15. Дано трехзначное число. Вывести число, полученное при переста- новке цифр сотен и десятков исходного числа (например, 123 перейдет в 213). Integer16. Дано трехзначное число. Вывести число, полученное при переста- новке цифр десятков и единиц исходного числа (например, 123 перейдет в 132). Integer17. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответ- ствующую разряду сотен в записи этого числа. Integer18. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответ- ствующую разряду тысяч в записи этого числа. Integer19. С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток. Integer20 °. С начала суток прошло N секунд (N — целое). Найти количество полных часов, прошедших с начала суток. Integer21. С начала суток прошло N секунд (N — целое). Найти количество се- кунд, прошедших с начала последней минуты. Integer22. С начала суток прошло N секунд (N — целое). Найти количество се- кунд, прошедших с начала последнего часа. Integer23. С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала последнего часа. Integer24. Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, …, 6 — суббота. Дано целое число K, ле- жащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было понедельником. Integer25. Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, …, 6 — суббота. Дано целое число K, ле- жащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было четвергом. Integer26. Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, …, 6 — суббота, 7 — воскресенье. Дано целое число K, ле- жащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было вторником. Integer27. Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, …, 6 — суббота, 7 — воскресенье. Дано целое число K, ле- жащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было субботой. |