Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Давыдов В.Г. - Программирование и основы алгоритмизации - 2003

.pdf
Скачиваний:
839
Добавлен:
13.08.2013
Размер:
9.55 Mб
Скачать

Вариант 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