МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ Кафедра информационных систем Методические указания и задания к курсовому проекту по дисциплине «Технологии программирования» Ставрополь, 2014 ВВЕДЕНИЕ Цель курсового проекта: изучить практические навыки разработки программ на языке С++ с использованием функционального подхода. 1 ПОРЯДОК ВЫПОЛНЕНИЯ КУРСОВОГО ПРОЕКТА Курсовой проект выполняется в несколько этапов. Подготовительный этап. Уточнение постановки задачи. Анализ научно-технической литературы с целью обоснования выбора метода решения. Разработка спецификации на программную систему. Проектный этап. На этом этапе рассматриваются различные пути реализации поставленной задачи, предлагаются критерии оценки эффективности алгоритма и оценка с их помощью различных вариантов решения. На этом этапе разрабатывается алгоритмическое и программное обеспечение моделирования. Реализационный этап. В начале этого этапа вырабатывается наиболее рациональное решение по машинной реализации модели системы и составляется график дальнейшей работы, в ходе которой необходимо реализовать алгоритм средствами выбранного языка программирования, выполнить окончательную отладку, получить результаты и проанализировать их. Оформительский этап. На данном этапе выполняется оформление пояснительной записки в соответствии с требованиями к оформлению технической документации, регламентируемыми стандартом Украины. Заключительный этап. На этом этапе проводится защита курсовых работ. Студент обязан представить окончательно оформленную пояснительную записку к курсовой работе не позже чем за два дня до защиты. На заключительном этапе проводится подготовка доклада и защита курсовой работы перед комиссией. Доклад должен сопровождаться демонстрацией работы программы. В докладе в сжатой форме следует представить поставленную задачу, основное содержание курсовой работы, краткий анализ состояния изучаемого вопроса, обоснование и принятие решения, анализ полученных результатов. 2 ВАРИАНТЫ ЗАДАНИЙ Вариант задания назначается научным руководителем. Допускается использовать тему, предложенную студентов по согласованию с научным руководителем. Во всех задачах реализовать ввод данных в программу пользователем. Для заданий с 3 по 6 реализовать функцию, выполняющую нужные действия. Каждая функция должна принимать необходимые исходные данные и возвращать требуемый результат в основную функцию main( ). Вариант № 1 Линейные алгоритмы 1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. Условные операторы 2. Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень — положительные (число 0 не изменять). Оператор switch-case 3. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года ("зима", "весна" и т.д.). Операторы цикла 4. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их возрастания, а также количество N этих чисел. Массивы 5. Дан массив размера N. Вывести его элементы в обратном порядке. 6. Дано число k и целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Поменять местами первую и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений. Вариант № 2 Линейные алгоритмы 1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. Условные операторы 2. Из трех данных чисел выбрать наименьшее. Из трех данных чисел выбрать наибольшее. Оператор switch-case 3. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести число дней в этом месяце для невисокосного года. Операторы цикла 4. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа), в порядке их убывания, а также количество N этих чисел. Массивы 5. Дан массив размера N. Вывести вначале его элементы с четными индексами, а затем — с нечетными. 6. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают. Вариант № 3 Линейные алгоритмы 1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой. Условные операторы 2. Из трех данных чисел выбрать наименьшее и наибольшее. Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y — большее. Оператор switch-case 3. Дано целое число в диапазоне 0 – 9. Вывести строку — название соответствующей цифры на русском языке (0 — "ноль", 1 — "один", 2 — "два", ...). Операторы цикла 4. Дано вещественное число A и целое число N (> 0). Вывести A в степени N: AN = A·A·...·A (числа A перемножаются N раз). Массивы 5. Дан массив размера N. Вывести вначале его элементы с нечетными индексами, а затем — четными. 6. Дан массив размера N. Найти номера двух ближайших чисел из этого массива. Вариант № 4 Линейные алгоритмы 1. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). В качестве значения Pi использовать 3.14. Условные операторы 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Оператор switch-case 3. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично"). Операторы цикла 4. Дано вещественное число A и целое число N (> 0). Вывести все целые степени числа A от 1 до N. Массивы 5. Дан целочисленный массив A размера 10. Вывести номер последнего из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0. 6. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее близка к данному числу. Вариант № 5 Линейные алгоритмы 1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Условные операторы 2. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию. Оператор switch-case 3. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат. Операторы цикла 4. Дано целое число N (> 1). Вывести наименьшее целое K, при котором выполняется неравенство 3K > N, и само значение 3K. Массивы 5. Дан целочисленный массив A размера 10. Вывести номер первого из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0. 6. Дан массив размера N. Найти количество его локальных минимумов. Вариант № 6 Линейные алгоритмы 1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. Условные операторы 2. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию. Оператор switch-case 3. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах. Операторы цикла 4. Дано вещественное число A и целое число N (> 0). Вывести 1 + A + A2 + A3 + ... + AN. Массивы 5. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы массива не изменять. 6. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов. Вариант № 7 Линейные алгоритмы 1. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b. Условные операторы 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения. Оператор switch-case 3. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах. Операторы цикла 4. Дано вещественное число A и целое число N (> 0). Вывести 1 – A + A2 – A3 + ... + (–1)NAN. Массивы 5. Дан целочисленный массив размера N. Преобразовать его, прибавив к нечетным числам последний элемент. Первый и последний элементы массива не изменять. 6. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива. Вариант № 8 Линейные алгоритмы 1. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба. Условные операторы 2. Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Оператор switch-case 3. Робот может перемещаться в четырех направлениях ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды. Операторы цикла 4. Дано целое число N (> 1). Вывести наибольшее целое K, при котором выполняется неравенство 3K < N, и само значение 3K. Массивы 5. Дан целочисленный массив размера N. Вывести вначале все его четные1 элементы, а затем — нечетные. 6. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз. Вариант № 9 Линейные алгоритмы 1. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3.14. Условные операторы 2. Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Оператор switch-case 3. Локатор ориентирован на одну из сторон света ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и может принимать три цифровые команды: 1 — поворот налево, –1 — поворот направо, 2 — поворот на 180 градусов. Дан символ C — исходная ориентация локатора и числа N1 и N2 — две посланные ему команды. Вывести ориентацию локатора после выполнения данных команд. Операторы цикла 4. Дано вещественное число A (> 1). Вывести наименьшее из целых чисел N, для которых сумма 1 + 1/2 + ... + 1/N будет больше A, и саму эту сумму. Массивы 5. Дан целочисленный массив размера N. Вывести вначале все его нечетные элементы, а затем — четные. 6. Дан массив размера N. Найти минимальный из его локальных максимумов. Вариант № 10 Линейные алгоритмы 1. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей. Условные операторы 2. Даны целочисленные координаты точки на плоскости. Если точка не лежит на координатных осях, то вывести 0. Если точка совпадает с началом координат, то вывести 1. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 2 или 3. Оператор switch-case 3. Элементы окружности пронумерованы следующим образом: 1 — радиус (R), 2 — диаметр (D), 3 — длина (L), 4 — площадь круга (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения Pi использовать 3.14. Операторы цикла 4. Дано вещественное число A (> 1). Вывести наибольшее из целых чисел N, для которых сумма 1 + 1/2 + ... + 1/N будет меньше A, и саму эту сумму. Массивы 5. Поменять местами минимальный и максимальный элементы массива размера 10. 6. Дан массив размера N. Преобразовать его, вставив после каждого положительного элемента нулевой элемент. Вариант № 11 Линейные алгоритмы 1. Дана длина окружности. Найти площадь круга, ограниченного этой окружностью. В качестве значения Pi использовать 3.14. Условные операторы 2. Даны вещественные координаты точки, не лежащей на координатных осях OX и OY. Вывести номер координатной четверти, в которой находится данная точка. Оператор switch-case 3. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 — катет (a), 2 — гипотенуза (c), 3 — высота, опущенная на гипотенузу (h), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). Операторы цикла 4. Дано целое число N (> 0). Вывести произведение 1·2·...·N. Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и выводить его как вещественное число. Массивы 5. Заменить все положительные элементы целочисленного массива размера 10 на значение минимального. 6. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента. Вариант № 12 Линейные алгоритмы 1. Дана площадь круга. Найти длину окружности, ограничивающей этот круг. В качестве значения Pi использовать 3.14. Условные операторы 2. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. Оператор switch-case 3. Элементы равностороннего треугольника пронумерованы следующим образом: 1 — сторона (a), 2 — радиус вписанной вписаной (R1), 3 — радиус описанной окружности (R2), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). Операторы цикла 4. Дано целое число N (> 0). Если N — нечетное, то вывести произведение 1·3·...·N; если N — четное, то вывести произведение 2·4·...·N. Чтобы избежать целочисленного переполнения, вычислять это с помощью вещественной переменной и выводить его как вещественное число. Массивы 5. Заменить все отрицательные элементы целочисленного массива размера 10 на значение максимального. 6. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно два раза. Вариант № 13 Линейные алгоритмы 1. Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании (угол дан в радианах). Условные операторы 2. Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Вывести порядковый номер этого числа. Оператор switch-case 3. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. Операторы цикла 4. Дано целое число N (> 0). Вывести сумму 2 + 1/(2!) + 1/(3!) + ... + 1/(N!) (выражение N! — "N факториал" — обозначает произведение всех целых чисел от 1 до N: N! = 1·2·...·N). Полученное число является приближенным значением константы e = exp(1) (= 2.71828183...). Массивы 5. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами. 6. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу. Вариант № 14 Линейные алгоритмы 1. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах). Условные операторы 2. Дан номер некоторого года (положительное целое число). Вывести соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год. Оператор switch-case 3. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной. Операторы цикла 4. Дано вещественное число X и целое число N (> 0). Вывести 1 + X + X2/2! + ... + XN/N! (N! = 1·2·...·N). Полученное число является приближенным значением функции exp в точке X. Массивы 5. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию. 6. Дан массив размера N. Преобразовать его, вставив после каждого отрицательного элемента нулевой элемент. Вариант № 15 Линейные алгоритмы 1. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2). Условные операторы 2. Дан номер некоторого года (положительное целое число). Вывести число дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются). Оператор switch-case 3. Дано целое число в диапазоне 20 – 69, определяющее возраст (в годах). Вывести строку — словесное описание указанного возраста, обеспечив правильное согласование числа со словом "год", например: 20 — "двадцать лет", 32 — "тридцать два года", 41 — "сорок один год". Операторы цикла 4. Дано вещественное число X и целое число N (> 0). Вывести X – X3/3! + X5/5! – ... + (–1)NX2N+1/(2N+1)! (N! = 1·2·...·N). Полученное число является приближенным значением функции sin в точке X. Массивы 5. Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию. 6. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся ровно три раза. Вариант № 16 Линейные алгоритмы 1. Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь. Условные операторы 2. Для данного x вычислить значение следующей функции f, вещественные значения: –1 если x <= , 0, f(x x· если 0 < x )= x, < 2, 4, если x >= 2. Оператор switch-case 3. Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа, например: 256 — "двести пятьдесят шесть", 814 — "восемьсот четырнадцать". Операторы цикла 4. Дано вещественное число X и целое число N (> 0). Вывести 1 – X2/2! + X4/4! – ... + (–1)NX2N/(2N)! (N! = 1·2·...·N). Полученное число является приближенным значением функции cos в точке X. Массивы 5. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево на k позиций. 6. Дан массив размера N. Преобразовать его, вставив перед каждым отрицательным элементом нулевой элемент. Вариант № 17 Линейные алгоритмы 1. Найти корни квадратного уравнения A·x2 + B·x + C = 0, заданного своими коэффициентами A, B, C (коэффициент A не равен 0), если известно, что дискриминант уравнения неотрицателен. Условные операторы 2. Для данного x вычислить значение следующей функции f, принимающей значения целого типа: 0, если x < 0, f(x 1, если x принадлежит [0,1), )= [2,3), ... , –1 если x принадлежит [1,2), , [3,4), ... . Оператор switch-case 3. В восточном календаре принят 60-летний цикл, состоящий из 12летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 год был началом цикла — годом зеленой крысы. Операторы цикла 4. Дано вещественное число X (|X| < 1) и целое число N (> 0). Вывести X – X2/2 + X3/3 – ... + (–1)N–1XN/N. Полученное число является приближенным значением функции ln в точке 1+X. Массивы 5. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива вправо на k позиций. 6. Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом нулевой элемент. Вариант № 18 Линейные алгоритмы 1. Найти решение системы уравнений вида A1·x + B1·y = C1, A2·x + B2·y = C2, заданной своими коэффициентами A1, B1, C1, A2, B2, C2, если известно, что данная система имеет единственное решение. Условные операторы 2. Дано целое число, лежащее в диапазоне от –999 до 999. Вывести строку — словесное описание данного числа вида "отрицательное двузначное число", "нулевое число", "положительное однозначное число" и т.д. Оператор switch-case 3. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года ("зима", "весна" и т.д.). Операторы цикла 4. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их возрастания, а также количество N этих чисел. Массивы 5. Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет — вывести 0. 6. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность. Вариант № 19 Линейные алгоритмы 1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. Условные операторы 2. Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень — положительные (число 0 не изменять). Оператор switch-case 3. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести число дней в этом месяце для невисокосного года. Операторы цикла 4. Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 2, AN = 2 + 1/A N–1, N = 2, 3, ... Найти первый из номеров K, для которых выполняется условие |AK–AK– 1| < D, и вывести этот номер, а также числа A K–1 и AK. Массивы 5. Проверить, образуют ли элементы целочисленного массива размера N геометрическую прогрессию. Если да, то вывести знаменатель прогрессии, если нет — вывести 0. 6. Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу. Вариант № 20 Линейные алгоритмы 1. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах). Условные операторы 2. Дан номер некоторого года (положительное целое число). Вывести соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год. Оператор switch-case 3. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной. Операторы цикла 4. Дано целое число N (> 2) и две вещественные точки на числовой оси: A, B (A < B). Функция F(X) задана формулой F(X) = 1 – sin(X). Вывести значения функции F в N равноотстоящих точках, образующих разбиение отрезка [A, B]: F(A), F(A + H), F(A + 2H), ..., F(B). Массивы 5. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию. 6. Дан массив размера N. Преобразовать его, вставив после каждого отрицательного элемента нулевой элемент. Вариант № 21 Линейные алгоритмы 1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. Условные операторы 2. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию. Оператор switch-case 3. Дано целое число в диапазоне 0 – 9. Вывести строку — название соответствующей цифры на русском языке (0 — "ноль", 1 — "один", 2 — "два", ...). Операторы цикла 4. Дано целое число N (> 2) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на равные отрезки длины H с концами в N точках вида A, A + H, A + 2H, A + 3H, ..., B. Вывести значение H и набор из N точек, образующий разбиение отрезка [A, B]. Массивы 5. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность. 6. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Преобразовать массив, уменьшив каждую его серию на один элемент. Вариант № 22 Линейные алгоритмы 1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой. Условные операторы 2. Из трех данных чисел выбрать наибольшее. Оператор switch-case 3. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично"). Операторы цикла 4. Дано вещественное число X (|X| < 1) и целое число N (> 0). Вывести X – X3/3 + X5/5 – ... + (–1)NX2N+1/(2N+1). Полученное число является приближенным значением функции arctg в точке X. Массивы 5. Дан массив размера N. Найти количество его локальных максимумов. 6.Дано число k и целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Поменять местами последнюю и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений. Вариант № 23 Линейные алгоритмы 1. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b. Условные операторы 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения. Оператор switch-case 3. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах. Операторы цикла 4. Дано вещественное число A и целое число N (> 0). Вывести 1 – A + A2 – A3 + ... + (–1)NAN. Массивы 5. Дан целочисленный массив размера N. Преобразовать его, прибавив к нечетным числам последний элемент. Первый и последний элементы массива не изменять. 6. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива. Вариант № 24 Линейные алгоритмы 1. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3.14. Условные операторы 2. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Оператор switch-case 3. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат. Операторы цикла 4. Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 1, A2 = 2, AN = (A N–2+ A N–1)/2, N = 3, 4, ... Найти первый из номеров K, для которых выполняется условие |A K - A K–1| < D, и вывести этот номер, а также числа A K–1 и A K. Массивы 5. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Преобразовать массив, увеличив первую серию наибольшей длины на один элемент. 6. Даны два массива A и B размера 5, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным. Вариант № 25 Линейные алгоритмы 1. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей. Условные операторы 2. Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Оператор switch-case 3. Робот может перемещаться в четырех направлениях ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды. Операторы цикла 4. Дано целое число N (> 1). Вывести наибольшее целое K, при котором выполняется неравенство 3K < N, и само значение 3K. Массивы 5. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Преобразовать массив, увеличив последнюю серию наибольшей длины на один элемент. 6. Дано множество A из N точек на плоскости. Среди всех точек этого множества, лежащих в первой четверти, найти точку, наиболее близкую от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами. Вариант № 26 Линейные алгоритмы 1. Дана площадь круга. Найти длину окружности, ограничивающей этот круг. В качестве значения Pi использовать 3.14. Условные операторы 2. Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y — большее. Оператор switch-case 3. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах. Операторы цикла 4. Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 2, AN = 2 + 1/A N–1, N = 2, 3, ... Найти первый из номеров K, для которых выполняется условие |AK–AK– 1| < D, и вывести этот номер, а также числа A K–1 и AK. Массивы 5. Дан массив размера N. Определить количество участков, на которых его элементы монотонно убывают. 6. Дано число k и целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Удалить из массива все серии, длина которых меньше k. Вариант № 27 Линейные алгоритмы 1. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b. Условные операторы 2. Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Оператор switch-case 3. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах. Операторы цикла 4. Дано вещественное число A (> 1). Вывести наименьшее из целых чисел N, для которых сумма 1 + 1/2 + ... + 1/N будет больше A, и саму эту сумму. Массивы 5. Дано число k и целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Удалить из массива все серии, длина которых равна k. 6. Дано множество A из N точек на плоскости. Среди всех точек этого множества, лежащих в третьей четверти, найти точку, наиболее близкую от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами. 3 СОДЕРЖАНИЕ ОТЧЕТА Введение 1 Постановка задачи 2 Описание программы 3 Руководство оператора 4 Программа и методика испытаний Заключение Библиография Приложения (текст программы) Раздел «Описание программы» должен соответствовать требованиям ГОСТ 19.101-77, «Руководство оператора» - ГОСТ 19.105—78, «Программа и методика испытаний» - ГОСТ 19.105-78 (приложение А). Образцы титульного листа и листа задания представлены в приложении Б. ЛИТЕРАТУРА 1 Лаптев В.В., Морозов А.В., Бокова А.В. С++. Объектно- ориентированное программирование. Задачи и упражнения. – СПб.:Питер, 2007. – 288 с. 2 Страуструп Б. Язык программирования С++: Спец. изд. / Пер. с англ. – М.: Бином, 2001. 3 Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2002. ПРИЛОЖЕНИЕ А ГОСТ 19.101-77 ВИДЫ ПРОГРАММ И ПРОГРАММНЫХ ДОКУМЕНТОВ Настоящий стандарт устанавливает виды программ и программных документов для вычислительных машин, комплексов и систем независимо от их назначения и области применения. Стандарт полностью соответствует СТ СЭВ 1626-79. 1. ВИДЫ ПРОГРАММ 1.1. Программу (по ГОСТ 19781-90) допускается идентифицировать и применять самостоятельно и (или) в составе других программ. 1.2. Программы подразделяют на виды: - Компонент. Программа, рассматриваемая как единое целое, выполняющая законченную функцию и применяемая самостоятельно или в составе комплекса - Комплекс. Программа, состоящая из двух или более компонентов и (или) комплексов, выполняющих взаимосвязанные функции, и применяемая самостоятельно или в составе другого комплекса 1.3. Документация, разработанная на программу, может использоваться для реализации и передачи программы на носителях данных, а также для изготовления программного изделия. 2. ВИДЫ ПРОГРАММНЫХ ДОКУМЕНТОВ 2.1. К программным относят документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программ. 2.2. Виды программных документов и их содержание Спецификация. Состав программы и документации на нее. Ведомость держателей подлинников. Перечень предприятий, на которых хранят подлинники программных документов. Текст программы. Запись программы с необходимыми комментариями. Описание программы. Сведения о логической структуре и функционировании программы. Программа и методика испытаний Требования, подлежащие проверке при испытании программы, а также порядок и методы их контроля Техническое задание. Назначение и область применения программы, технические, технико-экономические и специальные требования, предъявляемые к программе, необходимые стадии и сроки разработки, виды испытаний. Пояснительная записка. Схема алгоритма, общее описание алгоритма и (или) функционирования программы, а также обоснование принятых технических и технико-экономических решений Эксплуатационные документы. Сведения для обеспечения функционирования и эксплуатации программы. 2.3. Виды эксплуатационных документов и их содержание Ведомость эксплуатационных документов. Перечень эксплуатационных документов на программу. Формуляр. Основные характеристики программы, комплектность и сведения об эксплуатации программы. Описание применения. Сведения о назначении программы, области применения, применяемых методах, классе решаемых задач, ограничениях для применения, минимальной конфигурации технических средств. Руководство системного программиста. Сведения для проверки, обеспечения функционирования и настройки программы на условия конкретного применения. Руководство программиста. Сведения для эксплуатации программы. Руководство оператора. Сведения для обеспечения процедуры общения оператора с вычислительной системой в процессе выполнения программы. Описание языка. Описание синтаксиса и семантики языка. Руководство по техническому обслуживанию Сведения для применения тестовых и диагностических программ при обслуживании технических средств. 2.4. В зависимости от способа выполнения и характера применения программные документы подразделяются на подлинник, дубликат и копию (ГОСТ 2.102-68), предназначенные для разработки, сопровождения и эксплуатации программы. ГОСТ 19.101-77. ОПИСАНИЕ ПРОГРАММЫ 1. Настоящий стандарт устанавливает состав и требования к содержанию программного документа "Описание программы", определенного ГОСТ 19.101-77. Стандарт полностью соответствует СТ СЭВ 2092—80. 2. Структуру и оформление документа устанавливают в соответствии с ГОСТ 19.105-78. Составление информационной части (аннотации и содержания) является обязательным. 3. Описание программы должно содержать следующие разделы общие сведения: - функциональное назначение; - описание логической структуры; - используемые технические средства; - вызов и загрузка; - входные данные; - выходные данные. В зависимости от особенностей программы допускается вводить дополнительные разделы или объединять отдельные разделы. 4. В разделе "Общие сведения" должны быть указаны: - обозначение и наименование программы; - программное обеспечение, необходимое для функционирования программы; - языки программирования, на которых написана программа. 5. В разделе "Функциональное назначение" должны быть указаны классы решаемых задач и (или) назначение программы и сведения о функциональных ограничениях на применение. 6. В разделе "Описание логической структуры" должны быть указаны: - алгоритм программы; - используемые методы; - структура программы с описанием функций составных частей и связей между ними; - связи программы с другими программами. Описание логической структуры программы выполняют с учетом текста программы на исходном языке. 7. В разделе "Используемые технические средства" должны быт указаны типы электронных вычислительных машин и устройств, которые используются при работе программы. 8. В разделе "Вызов и загрузка" должны быть указаны: - способ вызова программы с соответствующего носителя данных; - входные точки в программу. Допускается указывать адреса загрузки, сведения об использовании оперативной памяти, объем программы. 9. В разделе "Входные данные" должны быть указаны: - характер, организация и предварительная подготовка входных данных; - формат, описание и способ кодирования входных данных. 10. В разделе "Выходные данные" должны быть указаны: - характер и организация выходных данных; - формат, описание и способ кодирования выходных данных. 11. Допускается содержание разделов иллюстрировать пояснительными примерами, таблицами, схемами, графиками. • 12. В приложение к описанию программы допускается включать различные материалы, которые нецелесообразно включать в разделы описания. ГОСТ 19.105—78. РУКОВОДСТВО ОПЕРАТОРА 1. Общие положения 1.1. Структура, устанавливаются в и оформление соответствии с ГОСТ программного 19.105—78. документа Составление информационной части (аннотации и содержания) является обязательным. 1.2. Руководство оператора должно содержать следующие разделы: назначение программы; условия выполнения программы; выполнение программы; сообщения оператору. В зависимости от особенностей документа допускается объединять отдельные разделы или вводить новые. (Измененная редакция, Изм. № 1). 2. Содержание разделов 2.1. В разделе "Назначение программы" должны быть указаны сведения о назначении программы и информация, достаточная для понимания функций программы и ее эксплуатации. 2.2. В разделе "Условия выполнения программы" должны быть указаны условия, необходимые для выполнения программы минимальный и (или) максимальный состав аппаратурных и программных. средств и т. п.). (Измененная редакция, Изм. № 1). 2.3. В разделе "Выполнение программы" должна быть указана последовательность действий оператора, обеспечивающих загрузку, запуск, выполнение и завершение программы, приведено описание функций, формата и возможных вариантов команд, с помощью которых оператор осуществляет загрузку и управляет выполнением программы, а также ответы программы на эти команды. (Измененная редакция, Изм. № 1). 2.4. (Исключен, Изм. № 1). 2.5. В разделе "Сообщения оператору" должны быть приведены текст сообщений, выдаваемых в ходе выполнения программы, описание их содержания и соответствующие действия оператора (действия оператора в случае сбоя, возможности повторного запуска программы и т. п.). 2.6. Допускается содержание разделов иллюстрировать поясняющими примерами, таблицами, схемами, графиками. 2.7. В приложения к руководству оператора допускается включать различные материалы, которые нецелесообразно включать в разделы руководства. ГОСТ 19.105-78. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ 1. Общие положения 1.1. Структура и оформление соответствии с ГОСТ 19.105-78. документа устанавливаются в Составление информационной части (аннотации и содержания) является необязательным. 1.2. Документ "Программа и методика испытаний" должен содержать следующие разделы: объект испытаний; цель испытаний; требования к программе; требования к программной документации; средства и порядок испытаний; методы испытаний. В зависимости от особенностей документа допускается вводить дополнительные разделы. (Измененная редакция, Изм. № 2). 2. Содержание разделов 2.1. В разделе "Объект испытаний" указывают наименование, область применения и обозначение испытуемой программы. 2.2. В разделе "Цель испытаний" должна быть указана цель проведения испытаний. 2.3. В разделе "Требования к программе" должны быть указаны требования, подлежащие проверке во время испытаний и заданные в техническом задании на программу. 2.4. В разделе "Требования к программной документации" должны быть указаны состав программной документации, предъявляемой на испытания, а также специальные требования, если они заданы в техническом задании на программу. 2.3, 2.4. (Измененная редакция, Изм. № 2). 2.5, 2.6. (Исключены, Изм. № 2). 2.7. В разделе "Средства и порядок испытаний" должны быть указаны технические и программные средства, используемые во время испытаний, а также порядок проведения испытаний. 2.8. В разделе "Методы испытаний" должны быть приведены описания используемых методов испытаний. Методы испытаний рекомендуется по отдельным показателям располагать в последовательности, в которой эти показатели расположены в разделах "Требования к программе" и "Требования к программной документации". В методах испытаний должны быть приведены описания проверок с указанием результатов проведения испытаний (перечней тестовых примеров, контрольных распечаток тестовых примеров и т. п.). 2.7, 2.8. (Измененная редакция, Изм. № 2). 2.9. В приложение к документу могут быть включены тестовые примеры, контрольные распечатки тестовых примеров, таблицы, графики и т.п. МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ Кафедра информационных систем Специальность 230201.65 - «Информационные системы и технологии» КУРСОВОЙ ПРОЕКТ по дисциплине «Технологии программирования» вариант №____ Выполнил: студент _______ группы направления «Информационные системы и технологии» _________________________________ (Ф.И.О.) _________________________________ (подпись) Проверил: Доцент кафедры информационных систем, к.т.н., доцент Гайчук Д.В. ________________________________ (подпись) Ставрополь, 2014 МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ Кафедра Информационных систем УТВЕРЖДАЮ И.о заведующего кафедрой информационных систем к.т.н. Д.В. Шлаев «____» _________________ 2014 г. ЗАДАНИЕ на курсовой проект Студенту ____________________________________ 1. Срок сдачи студентом законченного КП « » _____________ 2014 г. 2. Исходные данные к проекту и постановка задачи: Линейные алгоритмы Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. Условные операторы Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень — положительные (число 0 не изменять). Оператор switch-case Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года ("зима", "весна" и т.д.). Операторы цикла Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их возрастания, а также количество N этих чисел. Массивы Дан массив размера N. Вывести его элементы в обратном порядке. Дано число k и целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). 3. Содержание пояснительной записки. Введение 1 Постановка задачи 2 Описание программы 3 Руководство оператора 4 Программа и методика испытаний Заключение Библиография Приложения (текст программы) Дата выдачи задания « » Руководитель: доцент кафедры ИС, к.т.н., доцент Задание к исполнению принял: Студент 2014 г. Д.В. Гайчук