
Programmirovanie_i_osnovyi_algo
.pdfВариант 13. Вычислить значения функций и сумму ряда
|
с |
|
b |
а |
(\g{a/{a+b) |
при |
(а'Ь+с)>5, |
|
|
У = < |
sin(a) |
при |
0<=(а'Ь+с)<=5, |
|
I |
0 |
в |
остальных |
случаях |
|
|
Вариант 14. Вычислить значения функций и сумму ряда
X-Z |
при |
х>0 |
и |
|
2 |
2 |
X |
>Z |
, |
||||
2 |
при |
х<0 |
и |
|
2 |
2 |
У = ^ X 'Z |
X |
>Z |
, |
|||
0 |
в |
остальных |
|
случаях |
у = иК2-а+\Г
а=0
Вариант 15. Вычислить значения функций и сумму ряда
\ ' |
при |
л:>0. |
|
|
при |
-l<=jc<=0. |
|||
|
||||
у = 1"в |
остальных |
случаях |
У = Z^^
Вариант 16. Вычислить значения функций и сумму ряда
?'^'^*^\-Ъ'Б\Г?{Х) |
, , |
In(a^) |
||
|
а""}!^ |
|
|
24,61-10" |
\ ' |
при |
|
jc>0. |
|
при |
|
-1<=л:<=0, |
||
У=<1"в |
остальных |
случаях |
400
|
|
|
п |
|
|
Вариант |
17. Вычислить значения функций и сумму ряда |
||||
|
^ . ( ^ - ) 2 - a . ( , _ 5 ) 3 . s m ( ^ . 1 0 - 5 |
||||
|
{sin(x) |
при |
|
х>0, |
|
|
1 |
при |
п |
х=0, |
случаях |
|
ij—x |
в |
остальных |
||
|
|
|
а=\ |
|
|
Вариант |
18. Вычислить значения функций и сумму ряда |
||||
|
|
е~^'^+] |
х^ . ^ - 4 |
||
|
\%{х 1{а-\-Ь)) |
при |
(сг+^))>0, |
||
|
^ 1 \а |
|
|
при |
(а+Ь)<=0 |
|
+6|-lg(jc) |
|
у = Е8-(2.а-1) а=1
Вариант 19. Вычислить значения функций и сумму ряда
^а-х
f'' |
при |
х>3. |
при |
1<х<=3, |
|
У = гU |
при |
л:<=1 |
й=1 2-0+1
Вариант 20. Вычислить значения функций и сумму ряда
1п*(х)
г |
a-x+4 |
при |
х>4. |
|
у = \ |
а(1-е-^) при |
0<=д:<=4, |
||
1 |
0 |
в |
остальных |
случаях |
|
|
401
|
o^l ^' |
Указания no выполнению |
программных проектов |
• При вычислении значения |
функции следует проверить область |
допустимых значений аргументов функции (например, при вычис лении х^, где а - вещественное, должно быть д:>0; подкоренное выражение, аргументы логарифмических функций должны быть также положительными; делитель должен быть отличен от нуля; ар гумент тангенса не должен быть кратен ж/2 и т.п.).
• Для получения возможности использования математических функций необходимо подключить соответствующий заголовочный файл:
^include <math.h>
При этом следует иметь ввиду, что большинство математических функций используют аргументы и имеют возвращаемое значение с типом double. Поэтому аргументы функций, вычисляемых в про граммных проектах 1 и 2 также должны иметь тип double. Исчерпы вающий перечень и описание стандартных математических и других стандартных функций приведен в [5].
П. 1.2,3. Средства модульного программирования в языке C++. Варианты программных проектов
Среда программирования. Любая интегрированная среда про граммирования языка C++. Повторяем, что начальном этапе обуче ния можно рекомендовать использование простой интегрированной среды программирования Borland C++ 3.1 с переходом в будущем на более современную и широко распространенную среду программи рования Microsoft Visual Studio C++ 6.0 или 7.0 (.NET).
Задание (формулировка решаемой задачи). Задача, предло женная для решения, может, в частности, предусматривать работу с массивами. Например, с использованием средств структурного и модульного программирования языка C++ спроектировать програм му для обработки двумерного целочисленного массива. Характери стикой строки такого массива является сумма элементов строки с положительными четными значениями. Переставляя строки задан ного массива, расположить их в соответствии с ростом характери стик. Варианты программных проектов такого рода приводятся ни же. Отличительной особенностью данного программного проекта
402
является использование модульного программирования, в рамках которого студент осваивает методологию нисходящего иерархиче ского программирования, в соответствии с которой обоснованно проектирует файловую и функциональную структуру программного продукта. Другой важной особенностью программного проекта яв ляется изучение и практическое освоение методики отладки про граммных проектов.
Рекомендации по созданию программного проекта приведены в приложении П.5.
Содержание отчета.
1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ - формулировка решаемой зада чи, требования к программе (в том числе та часть спецификации, которая относится к обработке ошибок и предупреждений), язык программирования.
2.ТЕКСТ ПРОГРАММЫ - для программы в заголовкекомментарии указать ее назначение, привести листинг с исходным текстом в самодокументируемом виде. Пример оформления исход ного текста программы приведен в приложении П.5.
3.ОПИСАНИЕ ПРОГРАММЫ - описание файловой и функ циональной структур программного проекта (вторая часть спецификации), краткое описание работы программы и схемы 2-3 функций, выполненные в соответствии с действующими стандарта ми. 4. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ - описание методики отладки, требования к контрольным примерам, разработка контрольных примеров с их обоснованием и анализом, результаты вычислений по отлаженной программе, выводы.
Указания по выполнению программных |
проектов, |
|
|||
1. Предусмотреть |
запуск |
программного |
проекта |
с |
использованием командной строки.
2.Использовать файловый ввод-вывод.
3.Массив размещать в динамической памяти (особенности размещения матрицы в динамической памяти рассмотрены выше в разд. 8).
Вариант 1. Найти максимальное число, встречающееся в за данном векторе более одного раза.
Вариант 2. Определить норму заданной матрицы, т.е. значе
ние
тах(Х|Ф][У]|)
у
Вариант 3. По заданной квадратной матрице размером N-N
403
построить вектор длиной (2Л^-1), элементы которого - максимумы элементов диагоналей, параллельных главной, включая главную диагональ.
Вариант 4, Характеристикой строки матрицы назовем сумму ее положительных элементов, имеющих четные значения индексов. Переставляя строки заданной матрицы, расположить их в соответст вии с ростом характеристик.
Вариант 5. Для заданной квадратной матрицы найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали.
Вариант 6. Говорят, что матрица имеет седловой элемент Ф][уЪ если элемент a[i][j] является минимальным в /-ой строке и максимальным в у-ом столбце. Найти номера строки и столбца ка кого-либо седлового элемента и его значение.
Вариант 7. Найти значение наибольшего элемента матрицы среди всех элементов тех строк матрицы, которые упорядочены ли бо по возрастанию, либо по убыванию значений элементов.
Вариант 8, Характеристикой столбца матрицы назовем сумму его отрицательных элементов, имеющих нечетные значения индек сов. Переставляя столбцы заданной матрицы, расположить их в со ответствии с убыванием характеристик.
Вариант 9, Элемент матрицы называется локальным миниму мом, если его значение строго меньше значений всех имеющихся соседей. Подсчитать количество локальных минимумов заданной матрицы и напечатать информацию о каждом из них.
Вариант 10, Составить программу нахождения элемента вектора, имеющего максимальное значение. Элементы, стоящие после максимального, заменить нулями и переставить в начало вектора. Исходный и полученный векторы напечатать.
Вариант 11, Составить программу нахождения максимально го значения элемента вектора среди отрицательных и минимального значения — среди положительных элементов.
Вариант 12, Написать программу, которая упорядочивала бы элементы вектора по знаку, сначала положительные, а затем — отри-
404
дательные, в таком же порядке, как в исходном векторе.
Вариант 13. Составить программу, позволяющую найти мак симальный элемент вектора и, если он не равен нулю, то разделить на него все элементы вектора. Если же максимальный элемент век тора равен нулю, то вектор не изменять.
Вариант 14. Составить программу поиска элементов, встре чающихся в векторе более одного раза. Из найденных элементов сформировать новый вектор.
Вариант 15. Составить программу упорядочения по возраста нию элементов каждой строки матрицы. Сортировка строк должна выполняться на месте, что означает, что вспомогательный вектор не должен использоваться.
Вариант 16. Составить программу вычисления количества положительных элементов в левом нижнем треугольнике квадрат ной матрицы. Треугольник включает диагональ матрицы.
Вариант 17. Составить программу обмена местами макси мального элемента главной диагонали квадратной матрицы и мини мального элемента побочной диагонали.
Вариант 18. Составить программу печати значений элементов той строки матрицы, сумма элементов которой минимальна.
Вариант 19. Составить программу нахождения суммы значе ний элементов тех строк матрицы, у которых на главной диагонали расположены элементы, имеющие отрицательные значения.
Вариант 20. Составить программу перестановки строк матри цы по убыванию значения их первого элемента.
П.1.3. Экзаменационное тестирование
Наряду с традиционной формой, экзаменационное тестирова ние можно проводить в форме тестовых вопросов.
На экзамене каждому студенту может быть предложена ком плексная проверочная работа, содержащая пять вопросов по некото рым из перечисленных основных разделов курса:
•программирование на ПМ-ассемблере;
•ввод;
авывод;
405
•простейшие ветвления;
ациклы;
• структуры;
афункции;
•области действия определений;
•массивы и указатели;
•работа с динамической памятью и операции с линейным списком;
•препроцессор, перечисления, функции с умалчиваемыми значениями аргументов, перегрузка функций, шаблоны функций, перегрузка операций.
Комплексная проверочная работа рассчитана на 1 ч. 15 мин. Ответ на каждый тестовый вопрос, в зависимости от правильности и
полноты, оценивается О, 0,25, 0,5, |
0,75 или 1 баллом. Таким обра |
зом, максимальная сумма баллов может достигнуть 5. |
|
В соответствии с набранными |
баллами выставляются следую |
щие экзаменационные оценки: |
|
•"отлично" (4,25-5 баллов);
•"хорошо" (3,5-4 балла);
•"удовлетворительно" (2,5-3,25 балла);
•"неудовлетворительно" (менее 2,5 баллов).
Примеры формулировок тестовых экзаменационных вопросов содержатся в подразд. П.1Л.
КОМПЛЕКСНАЯ ЭКЗАМЕНАЦИОННАЯ РАБОТА Пример варианта
!• Структуры. В файле операционной системы "Task4.in'' хра нится в текстовой форме ведомость сдачи экзаменов студентами не которой группы. Каждая строка этого файла содержит сведения об одном студенте, представленные в следующем формате:
|
позиции 1...2 |
- порядковый номер студента в группе; |
|||
|
позиция 3 |
- пробельная литера; |
|||
|
позиции 4...22 |
- фамилия студента длиной не более 18 сим |
|||
волов в произвольном месте поля; |
|||||
|
позиция 23 |
- пробельная литера; |
|||
|
позиция 24 |
- четыре оценки по четырем предметам, раз |
|||
деленные не менее чем одной пробельной литерой. |
|||||
|
Количество студентов в группе равно 16. Пример строк ука |
||||
занного файла: |
|
|
|
|
|
01 |
Андреев |
5 |
4 |
5 |
5 |
02 |
Быков |
5 |
5 |
5 |
5 |
16 |
Яковлев |
4 |
4 |
5 |
4 |
406
1.1.Написать объявление массива структур для хранения ука занной ведомости.
1.2.Написать фрагмент программы, который заполнит экзаме национную ведомость данными, вводимыми из файла операционной системы "Task4.in". Ввод данных должен осуществляться в тексто вом режиме.
1.3.Написать фрагмент программы, который вычисляет сред нюю экзаменационную оценку по всем предметам и студентам (т.е. среднюю оценку из 64 оценок), а затем выводит значение этого по
казателя в файл операционной системы ''Task4.ouf\
Примечание.
Закрыть открытые файлы, как только они станут не нуж
ны.
Предусмотреть контроль корректности значений, возвра щаемых функциями библиотеки Си ^^fopen^\ ^^fscanf\ Указать, какие включаемые файлы требует представленный фрагмент.
2.Функции. Написать прототип, определение функции и при мер вызова функции, которая подсчитывает тах:=наиб{а,6,с}. Исход ные данные имеют тип с плавающей точкой.
Все исходные данные должны передаваться через список параметров, а найденный максимум следует получить как зна чение, возвращаемое функцией. Выполнение этого требования является обязательным.
3.Массивы и указатели. Что напечатает следующая про
грамма?
^include <stdlo.h>
xnt |
|
Array[ |
] |
= { 0 , 4 , 5 , 2 , |
3 } ; |
|
±nt main ( void ) |
|
|
|
|
||
{ |
|
|
|
|
|
|
±nt |
Index; |
|
|
|
||
±nt |
^Pointer; |
|
|
|||
for( Index |
= 0; Index |
<= 4; Index+=2 ) |
|
|||
printf |
( |
" %3d"r * (Array+Index--) |
); |
|||
prlntf |
( "\n" |
) ; |
|
|
|
|
Pointer |
= Array |
+ 1; |
|
|
||
fox:( Index |
= 0; |
Index |
<= 2; ) |
|
||
printf( |
|
" %3d". Pointer[ ++Index ] |
); |
|||
printf |
( "\n" |
) ; |
|
|
|
|
return |
0; |
|
|
|
|
|
407
4. Операции с линейным списком. Работа с динамической памятью. Определен следующий указатель на начало линейного списка:
stJTuct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
|
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
||||||
double |
Info; |
// |
указатель |
на очередной |
|||
// |
INFOrmation: |
информация |
|||||
} * |
start; |
|
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая должна определить, сколько в линейном списке имеется элементов с отрицательными значениями. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные (указатель на начало линейного спи ска) и все результаты работы функции (количество найденных элементов) должны передаваться через список параметров — это обязательное требование.
5. Шаблоны функций. В одномерном массиве, состоящем из п элементов, вычислить сумму отрицательных элементов. Написать прототип, определение шаблона функций и пример ее вызова для типов int, float и double.
Приложение П.2. Создание программного проекта
Ниже рассматривается создание программного проекта в двух средах программирования:
•в интегрированной среде проектирования программ (IDE - Inte grated Development Environment) MS Visual Studio C++ 6.0;
•в IDE Borland C++ 3.1.
П.2.1. IDE MS Visual Studio C++ 6.0.
Создание программного проекта
Интегрированная среда проектирования программ (IDE) пред ставляет собой комплект программных инструментов - Tools (рис. 106). Этот комплект инструментов - хороший, инструментов — мно го, но среда не русифицирована (в ней используется английский язык).
408
Проекты (Projects). Проекты IDE характеризуются следую щими особенностями.
1. Единицей работы IDE является проект. Проект — это ком плект файлов.
2.Виды файлов в составе проекта:
•исходные файлы, написанные программистом {*.срр — С Plus Plas
—тексты на языке 0++ и *./; — Header — заголовочные файлы), IDE содержит инструменты, которые позволяют автоматизировать со ставление исходных файлов;
•служебные файлы, которые автоматически создаются IDE, но по инструкциям программиста.
3.Каталог проекта. Служебные файлы обязательно располага ются в этом каталоге. Исходные файлы хотя и могут располагаться где угодно, но, чтобы не запутаться, их тоже следует поместить в каталог проекта.
4.Проекты IDE и проекты программного обеспечения. Про стые программы представляют собой просто один проект IDE. Сложное программное обеспечение реализуется в виде некоторого множества проектов IDE.
Компилятор |
Компоновщик |
Редактор |
Символичес |
|
|
текстов (Text |
кий отладчик |
Tools |
|||
СИ/С++ |
(Linker) |
||||
Editor) |
(Debugger) |
||||
|
|
|
|||
Рис. 106. Интегрированная среда проектирования программ |
|
||||
|
MS Visual Studio С-ь+ 6.0 |
|
|
||
Создание |
нового проекта для консольного |
прило:исения. Для |
того чтобы создать новое приложение (программу), необходимо соз дать новый проект. Для этого в IDE выполните команду New... из меню File, в результате чего на экране появится диалоговое окно
New.
Вэтом окне необходимо выполнить следующее:
•Выбрать тип создаваемого приложения. В данном случае следует выбрать опцию Win32 Console Application, поскольку мы создаем консольное приложение, которое является Windowsаналогом старого доброго знакомого - программы для MS DOS.
•Выбрать место расположения нового проекта. Информация
орасположении новой рабочей области проекта (диск:\путь\подкаталог) вводится в поле Location (местоположение).
409