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

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

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

struct

CMP

//

CoMPlex:

комплексный

тип

{

r;

//

Вещественная

часть

 

double

 

double

±;

//

Мнимая

часть

 

 

} ;

Написать определение функции, перегружающей операцию вычитания комплексных данных, и пример вызова этой функции. Имейте ввиду, что вещественная часть разности равна разности ве­ щественных частей операндов. Аналогично - для мнимых частей.

Вариант 7. Шаблоны функций. В одномерном массиве, со­ стоящем из п вещественных элементов, вычислить сумму элементов массива с нечетными номерами. Исходные данные и полученные

результаты обязательно передавать через список параметров.

Написать прототип, определение шаблона функций и пример ее вы­ зова для типов intafloat и double.

Вариант

8. Перегрузка

операций для пользовательских ти­

пов. Определен следующий пользовательский тип:

struct V

 

 

{

 

 

int

arr[ 4 ]; //

Вектор

} ;

Написать определение функции, перегружающей операцию вычитания векторов, и пример вызова этой функции. Имейте ввиду, что разность векторов равна поэлементной разности векторов.

Вариант

9. Перегрузка

операций для пользовательских ти­

пов. Определен следующий пользовательский тип:

struct V

 

 

{

 

 

double

arr[ 4 ]; //

Вектор

} ;

Написать определение функции, перегружающей операцию суммирования векторов, и пример вызова этой функции. Имейте ввиду, что сумма векторов равна поэлементной сумме векторов.

Вариант

10. Функции

с умалчиваемыми значениями пара­

метров.

Имеется следующий фрагмент программного кода:

void Rect

( float

w, tloat

1=1,5 ) ;

390

Является ли запись прототипа функции правильной (обоснуйте Ваш ответ)? Являются ли правильными приведенные ниже вызовы функции? В случае положительного ответа укажите, с какими зна­ чениями параметров функция будет выполняться?

Rect

(

) ;

;

Rect

(

2.0 )

Rect

(

2.00,

3.00 ) ;

Вариант 11. Шаблоны функций. В одномерном массиве, со­ стоящем из п элементов, вычислить наибольшее значение элемента массива. Исходные данные и полученные результаты обязатель­ но передавать через список параметров. Написать прототип, оп­ ределение шаблона функций и пример ее вызова для типов long, float и double.

Вариант 12. Директивы препроцессора.

Опишите:

действия препроцессора по директиве

include;

 

различие форматов ^include <file.h> и include

''file.h'\

Вариант 13. Функции с умалчиваемыми значениями пара­ метров. Где следует указывать умалчиваемые значения параметров функции (в прототипе, в заголовке определения функции, в обоих перечисленных местах)?

Вариант 14.

Функции

с умалчиваемыми значениями пара­

метров. Имеется следующий фрагмент программного кода:

void Point ( double

х, double

у=-1.5 ) ;

Является ли запись прототипа функции правильной (обоснуйте Ваш ответ)? Являются ли правильными приведенные ниже вызовы функции? В случае положительного ответа укажите, с какими зна­ чениями параметров функция будет выполняться?

Point

(

, )

;

) ;

Point

(

2.0,

-1.5

Point

(

2.00,

3.00,

4.7 ) ;

Point

(

4.7

) ;

 

Вариант 15. Шаблоны функций. В одномерном массиве, со­ стоящем из п элементов, вычислить среднее арифметическое значе­ ние для отрицательных элементов массива. Постарайтесь не поте­ рять дробную часть результата. Исходные данные и полученные

результаты обязательно передавать через список параметров.

Написать прототип, определение шаблона функций и пример ее вы-

391

зова для типов int и double.

Вариант 16. Шаблоны функций. В одномерном массиве, со­ стоящем из п элементов, вычислить максимальный по модулю отри­ цательный элемент массива. Исходные данные и полученные ре­ зультаты обязательно передавать через список параметров. На­ писать прототип, определение шаблона функций и пример ее вызова для типов int и double.

Вариант 17. Шаблоны функций. В матрице, состоящей из п строк и т столбцов, определить количество строк, не содержащих ни одного нулевого элемента. Исходные данные и полученные ре­ зультаты обязательно передавать через список параметров. На­ писать прототип, определение шаблона функций и пример ее вызова для типов int и double.

Вариант 18. Шаблоны функций. В матрице, состоящей из п строк и т столбцов, определить максимальное из отрицательных значений элементов матрицы. Исходные данные и полученные ре­ зультаты обязательно передавать через список параметров. На­ писать прототип, определение шаблона функций и пример ее вызова для типов int и double.

Вариант

19. Директивы препроцессора. Что напечатает дан­

ная программа?

 

 

 

^include

 

<stdio.h>

 

 

^define

AREA (г)

3.14*г*г

 

±пЬ main

(

void

)

 

 

{

 

 

 

 

 

printf(

 

"%f\n'\

AREA( 2.0-1.0

) ) ;

jretujm

0;

 

 

 

}

Вариант 20. Шаблоны функций. В одномерном массиве, со­ стоящем из п элементов, вычислить среднее арифметическое значе­ ние элементов массива (не потеряйте дробную часть) и индекс наи­ большего элемента. Исходные данные и полученные результаты обязательно передавать через список параметров. Написать про­ тотип, определение шаблона функций и пример ее вызова для типа int.

П.1.2. Программные проекты

На практических занятиях студенты выполняют три про-

392

граммных проекта:

решение простой задачи с использованием ПМ-ассемблера (выпол­ няется по усмотрению преподавателя и требует наличия компактдиска, прилагаемого к данному учебному пособию);

структурное программирование средствами языков Си/С++;

средства модульного программирования в языке C++.

П. 1.2.1. Программирование

на ПМ-ассемблере.

Варианты

программных

проектов

 

Среда программирования. Интегрированная среда програм­ мирования ПМ-ассемблера описана в [1] и имеется на компактдиске.

Формулировка решаемой задачи. Задача, предложенная для решения, должна предусматривать работу с массивами с использо­ ванием косвенной адресации. Варианты программных проектов приведены ниже. Для ввода и вывода использовать файлы MS

DOS. Для обеспечения наглядности вывода использовать стро­ ковые данные.

Содермсание отчета

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ - формулировка решаемой зада­ чи, требования к программному проекту, язык программирования.

2.ТЕКСТ ПРОГРАММЫ - назначение программы, листинг с исходным текстом программы в самодокументируемой форме. Многочисленные примеры оформления исходных текстов ПМпрограмм имеются в [1] и на компакт-диске.

3.ОПИСАНИЕ ПРОГРАММЫ - назначение программы; метод решения задачи и основные расчетные соотношения; схема про­ граммы с необходимыми пояснениями, выполненная в соответствии

сдействующими стандартами.

3.ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ - разработка контрольного примера (примеров) с их обоснованием и анализом, результаты вычислений по отлаженной программе, выводы.

Варианты 1-5, В качестве первых пяти вариантов можно ис­ пользовать приведенные выше варианты 1-5 из подразд. П. 1.1.1.

Вариант 6. Ввести и напечатать значения элементов массива целого типа с заданной размерностью. Вычислить и напечатать сумму элементов массива, расположенных до минимального эле­ мента.

393

Вариант 7. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Вычислить и напеча­ тать произведение положительных элементов массива. Если массив не содержит элементов с положительными значениями, то в качест­ ве ответа напечатать "В массиве нет положительных элементов".

Вариант 8. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Вычислить и напеча­ тать сумму положительных элементов массива, расположенных до максимального элемента. Если массив не содержит элементов с по­ ложительными значениями, то в качестве ответа напечатать "В мас­ сиве нет положительных элементов".

Вариант 9. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Вычислить и напеча­ тать количество отрицательных элементов массива.

Вариант 10, Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Преобразовать мас­ сив таким образом, чтобы вначале располагались все элементы, от­ личающиеся от максимального не более, чем на 20%. Модифициро­ ванный массив напечатать.

Вариант 1L Ввести и напечатать значения элементов массива целого типа с заданной размерностью. Вычислить и напечатать сумму элементов массива, расположенных после последнего нулево­ го элемента. Если массив не содержит нулевых элементов, то в ка­ честве ответа напечатать "В массиве нет нулевых элементов".

Вариант 12. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. В массиве все отри­ цательные элементы заменить их квадратами и определить их коли­ чество. Модифицированный массив и количество измененных эле­ ментов напечатать.

Вариант 13. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Вычислить и напеча­ тать сумму модулей элементов массива, расположенных после мак­ симального элемента.

Вариант 14. Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Преобразовать мас­ сив таким образом, чтобы вначале располагались все отрицательные элементы. Модифицированный массив напечатать.

394

Вариант 15, Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Упорядочить массив по возрастанию значений элементов. Отсортированный массив на­ печатать.

Вариант 16, Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Ввести значения гра­ ниц диапазона. Вычислить и напечатать количество элементов массива, лежащих в заданном диапазоне, и информацию о заданном диапазоне.

Вариант. 17, Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Ввести значения гра­ ниц диапазона. Сжать массив, удалив из него элементы, значения которых находятся в заданном диапазоне. Освободившиеся элемен­ ты заполнить нулями. Модифицированный массив и заданный диа­ пазон значений напечатать.

Вариант 18, Ввести и напечатать значения элементов массива вещественного типа с заданной размерностью. Преобразовать мас­ сив таким образом, чтобы в первой его половине располагались эле­ менты, стоявшие в четных позициях, а во второй половине — эле­ менты, стоявшие в нечетных позициях. Модифицированный массив напечатать.

Вариант 19, Ввести и напечатать значения элементов массива целого типа с заданной размерностью. Преобразовать массив таким образом, чтобы нулевые элементы располагались в конце массива. Модифицированный массив напечатать.

Вариант 20, Ввести и напечатать значения элементов массива целого типа с заданной размерностью. Преобразовать массив таким образом, чтобы нулевые элементы располагались в начале массива. Модифицированный массив напечатать.

П.1.2.2. Структурное программирование средствами языков Си/С++. Варианты программных проектов

Среда программирования. Любая интегрированная среда про­ граммирования языка С+-ь. На начальном этапе обучения можно ре­ комендовать использование простой интегрированной среды про­ граммирования Borland С+-ь 3.1 с переходом в будущем на более со-

395

временную и широко распространенную среду программирования Microsoft Visual Studio C++ 6.0.

Формулировка решаемой задачи, С использованием средств структурного программирования языков Си/С++ спроектировать три элементарных программы для решения.

1. Задачи с линейным следованием операторов. Например, вы­ числить значение функции

у = arctg( 1 1 4 • 1п(«))

спроверкой области допустимых значений ее аргументов.

2.Задачи с ветвлением (использовать структурированные операторы if, switch). Например, вычислить значение функции

[

а+Ь

при

х<1,

у := [

а*Ь

при

1<=х<=2,

[

а-Ь

в остальных случаях

3. Задачи с циклом (использовать структурированные операто­ ры while, do-while, for). Например, вычислить сумму ряда

Набор вариантов программных проектов приводится ниже.

Содерлсание отчета.

1.ТЕХНИЧЕСКОЕ ЗАДАНИЕ - формулировка решаемой задачи, требования к программам, язык программирования.

2.ТЕКСТ ПРОГРАММЫ - для каждой программы в заголовкекомментарии указать ее назначение, привести листинг с исход­ ным текстом в самодокументируемом виде. Создание программ­ ного проекта рассмотрено в приложении П.2. Рекомендации по структуре программы и пример оформления исходного текста программы приведены в приложении П.З.

3.ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ - разработка кон­ трольных примеров с их обоснованием и анализом, результаты вычислений по отлаженной программе, выводы. Рекомендации по методике отладки разработанной программы приведены в приложении П.4.

Вариант 1. Вычислить значения функций и сумму ряда

у = arctg('';5Lii^-.ln(a)) +10"^. 2,5 19(111(^7))

396

fa+b

при

х<\.

у = } ab

при

1<=:X<=2,

Уа-b

при

х>2

Вариант 2. Вычислить значения функций и значение факториала

V5^tg^(arcsin(x))^^:

ШЫ

{" при jc>3. при 1<х<=3,

у = Y

U при д:<=1

п\

Вариант 3. Вычислить значения функций и сумму ряда

 

х^

 

 

к

 

 

е

. ,

,ч2,33

sin'^Cx+TT/Z)

 

Vtg(in(A:))

 

 

j2 . ig(x)

 

11 6 , 7 J C + 9 , 2 X ^

-1,02OC^

«рм

jc<=0,

•^

»

^

при

x>0

 

ax

+b-x

•sin(A:)

 

 

Вариант 4. Вычислить значения функций и сумму ряда

 

s2(el^4.3

 

у = дЯ^В^-*^»^ У ) .(2.3-^^1)

 

In* (л:)

 

a-\-bz-\-C'Z

при

х=\.

 

J^ = < d-\-n-z-¥f-z

при

jc-2.

 

g-bh-z+mz

в

остальных

случаях

х-\-\

х+Ъ

х+п

 

у =

+

+ ... +

 

1

3

«

 

Вариант 5. Вычислить значения функций и сумму ряда

_ s'm(x^+x~^+x^^^) \0~^'k

397

f

а-х+4

при

x>4,

у = Ja(l-e-^)

I 0

при 0<=х<=4,

в остальных случаях

У = Е{(-1Г/(2-а+1)}

 

 

 

 

 

а=0

 

 

 

 

 

 

 

Вариант

6, Вычислить значения функций и сумму ряда

 

 

 

 

sin'^(^2,8-e^+x)

2

 

^^

^ л

 

 

 

У

V-

 

 

 

 

=

х ^ - а "

 

 

•9,110^

 

 

 

 

 

 

 

 

 

 

 

 

 

Са+Ь

при

 

 

 

а>Ь,

 

 

 

Д'

=

"

при

 

а<-Ь

и

 

а>0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в

 

остальных

 

случаях

 

 

 

 

 

 

 

 

 

 

 

 

1

V^2,3

 

 

 

 

 

 

 

 

 

 

 

а=1

а!

 

 

 

 

Вариант

7. Вычислить значения функций и сумму ряда

 

 

 

 

75,73-я •^^г^

 

 

 

 

 

 

>^

 

 

 

 

 

И)-11.7

 

 

 

г

к1

при

 

\х\>\

и

 

а>0.

 

>^ = <

\+х

при

 

|x|<=l

и

 

а>0.

 

 

 

1 sin(x)

в

 

остальных

 

случаях

 

 

 

 

у =

Z(2.a-l)-0,5а-\

 

 

 

 

 

 

 

 

а=1

 

 

 

 

 

 

 

Вариант

8. Вычислить значения функций и сумму ряда

 

 

 

_

(е^^^+Ь/а)'Л:

(л-/)

У24-23,6

 

 

 

 

 

к1

 

 

 

5/

п

 

 

 

 

 

 

 

 

 

 

с

 

9

 

 

 

при

 

 

 

х>0.

 

 

z^+\g(a+b'C)/x

 

 

 

 

У

= <

 

^/z'X'Sm(a'X)

 

при

x<=0

 

W

(x*z)>0.

 

 

 

 

1

 

 

в

остальных

случаях

 

у = 2+ I

 

{Ы)'''^^<-;г^+~^)}

 

 

 

 

а=0

 

 

 

Ъа-\-\ 2'а+2

Вариант

9. Вычислить значения функций и сумму ряда

 

 

 

 

У =

a+b

 

 

 

 

 

 

 

398

 

 

 

 

7г/4-\-х'-1/J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a+b+c

при

\b\<=\a\

и

\c\<=\b\.

 

у

= J

a+b

при

\b\<=\a\

и

к1>1*|.

 

 

[

-

в

остальных

случаях

 

 

 

 

 

 

 

Вариант 10.

Вычислить значения

функций

и произведение

сомножителей

 

 

 

 

 

 

 

 

у = e«(^^>(^psin(x)-x(^"'-x'/'"))10-3

 

Г(ж/2)-е<-^^'=*д<^)) при

 

х>0.

 

У = }

Я-/2

 

при

 

х=0.

 

 

[

(^/2)е(*-*>

в

остальных

случаях

 

 

у =

\\+

П(2-а+1)

 

 

 

Вариант 11. Вычислить значения функций и сумму ряда

sin(x)'10 -4

 

 

|^c|-arcsin(x) •(7r/2 + e^^^'

(а^-х^)))

 

х+2

при

jc<3,

 

у = <

. 2 - 5

при

3<=jc<6,

 

зГ

в

остальных

случаях

 

х+ух

 

 

 

у = Z(-l)"+'-l/a

Вариант 12. Вычислить значения функций и сумму ряда

.5

 

т-л/аЬ

 

 

 

(l/Q+a)^

при

х>=1,

 

У = \

а^-,х

при

х<0.

 

 

ОМх-а

в

остальных

случаях

У = Z(-l)''-l/(2-f3-a) а=0

399