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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

В начале 80-х годов в фирме Bell Telephone Laboratories Бьерном Страуструпом (США) в результате дополнения и расширения языка С был создан язык, получивший название «С с классами». В 1983 г. Это название было изменено на С++. В 1998 г. Был утвержден окончательный стандарт языка С++.

В настоящее время С++ является одним из наиболее распространенных и востребованных языков программирования. Этот язык представляет собой фундамент, на котором строится современное программирование, поэтому он является обязательным элементом подготовки современных программистов.

Целью данной курсовой работы по дисциплине «Основы программирования и алгоритмические языки» является практическое закрепление теоретической части курса и приобретение навыков алгоритмизации и программирования с помощью современного языка программирования C++, а также возможностей интегрированной среды разработки Visual Studio 2012.

Выполнение данной курсовой работы позволяет приобрести следующие практические умения и навыки:

— выбор и использование математических методов решения задач;

— формализация задач;

— алгоритмизация задач;

— разработка и отладка программ с использованием языка программирования C# средствами Visual Studio 2012;

— проведение анализа результатов компьютерных экспериментов;

— оформление программной документации в соответствии с ГОСТ и ЕСКД.

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

1. 1 Постановка задачи

Формульно-словесное представление алгоритма описано в табл. 1.1. Значение параметра b задается самостоятельно при вводе. В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1−9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу с использованием операторов: условных, циклов, ввода, вывода.

Таблица 1.1 Развёрнутая постановка задачи

Определить

Входные данные

Выходные данные

Определить: k — количество y < 0.5 иS — сумму y > 5.

— 5

dx = 0. 4

x, y, z, k, s

1. 2 Анализ существующих методов решения задачи

Метод решения задачи однозначно задан набором формул (1. 1) и предполагает составление циклического алгоритма: в цикле изменяется x, по формулам определяются y и z, а затем с учётом заданных условий вычисляются показатели k и s. Диапазон заданных значений и шаг изменения задают вещественный тип данных для x. Набор формул (1. 1) задают вещественный тип данных для y и z. Счётчик k целого типа. s вещественная сумма значений y. Наличие показательных и логарифмических функций предполагает составление логических и арифметических выражений, а также использование соответствующих операторов.

1. 3 Блок-схема решения задачи

На рис. 1.1 показана блок-схема, которая графически изображает логическую структуру алгоритма. Каждый этап представлен в виде геометрической фигуры (блока), имеющего определенную форму в зависимости от характера операции.

Рисунок 1.1 Блок-схема алгоритма

Блоки на схеме соединены стрелками (линиями связи), которые определяют последовательность выполнения операций. Использованы следующие основные блоки:

/

блок пуск-останов, определяющий начало или конец алгоритма (для блока пуск определен только выход, для останов только вход);

/

блок ввод-вывод, определяющий ввод информации в программу или вывод информации (допускает любое количество входов, но один выход);

/

блок процесс, определяющий изменение значения, формы представления или расположения данных (допускает любое количество входов, но один выход);

/

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

/

блок итерация, определяющий повторное выполнение шагов алгоритма некоторое количество раз (допускает любое количество входов и выходов).

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

1. 4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include < iostream>

#include < cmath>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы и их инициализирующие значения

double x, dx = 0. 4;

входные данные

double x = -5, MAX (x) = 15;

граничные значения

double z, y;

выходные данные

int k = 0; double z, y, s = 1;

выходные данные-показатели

Опишем методы программы № 1:

— cin функция ввода;

— cout функция вывода;

— log (), abs (), exp (), pow () стандартные математические функции.

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

1. 5 Листинги программы и результатов. Анализ результатов

В результате работы программы на экран были выведены посчитанные значения y, z для каждого x и определены параметры k и y.

2. Обработка одномерных массивов

2. 1 Постановка задачи

Словесное представление алгоритма (1): найти максимальный элемент массива A размерностью 25. Словесное представление алгоритма (2): найти среднее арифметическое элементов массива В (30). В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1−9], рассмотреть примеры. Для автоматизации алгоритмов необходимо составить программу, в которой предусмотреть ввод и вывод исходных массивов, а также вывод результата. Значения элементов исходных массивов необходимо задать произвольно.

2. 2 Анализ существующих методов решения задачи

Традиционно метод решения задачи по работе с одномерным массивом сводится к выполнению трёх основных этапов: ввод-вывод массива, обработка массива, вывод результата обработки массива. Ввод-вывод одномерного массива в алгоритме реализуется с помощью циклической конструкции. Обработка массива также реализуется с помощью циклической конструкции, в которой для алгоритма (1) предусмотрена условная разветвляющаяся конструкция на сравнение элементов, а для алгоритма (2) предусмотрено вычисление выражения, позволяющего с помощью индексной формулы формировать элементы результирующего массива. Вывод результата для алгоритмов (1), (2) реализован в виде операции вывода значения переменной.

2. 3 Блок-схема решения задачи

На рис. 2.1 показана блок-схема, которая графически изображает логическую структуру алгоритмов (1) и (2). На основе представления алгоритмов в виде указанной блок-схемы составим их представление в виде программы.

Рисунок 2.1 Блок-схема алгоритмов

2.4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include < iostream>

#include < cmath>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы № 2 и их инициализирующие значения:

int *a = new int [25];

int *b = new int [30];

входные массивы, объявленные и динамически размещённые в памяти с помощью операции new

double max = a[0]

максимальный элемент последовательности А

double summa = 0

сумма элементов последовательности Б

Опишем методы программы № 2:

— cin функция ввода;

— cout функция вывода;

rand () — генератор случайных чисел.

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

2. 5 Листинги программы и результатов. Анализ результатов

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

3. Обработка двумерных массивов

3. 1 Постановка задачи

Словесное представление алгоритма: дана матрица действительных чисел размером 4×8. Определить числа b1, b2, b3, b4, равные соответственно: значениям средних арифметических элементов строк; разностям наибольших и наименьших значений элементов строк; наибольшим значениям элементов столбцов. В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1−9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой предусмотреть ввод и вывод исходного массива, а также вывод результатов обработки массива. Значение элементов входного массива необходимо задать самостоятельно в виде набора действительных чисел.

3. 2 Анализ существующих методов решения задачи

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

3.3 Блок-схема решения задачи

На рис. 3.1 показана блок-схема, которая графически изображает логическую структуру алгоритма. На основе представления алгоритма в виде блок-схемы составим его представление в виде программы.

Рисунок 3.1 Блок-схема алгоритма

3. 4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include < iostream>

#include < cmath>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы № 3 и их инициализирующие значения:

const int n = 4, m = 8;

константные размеры массива

double a[n] [m];

массив

double summa = 0;

среднее арифметическое строк

double min = a[i] [0], max = a[i] [0];

— наибольшее и наименьшее значение элементов строк, столбцов

Опишем методы программы № 3:

— cin функция ввода;

— cout функция вывода;

rand () — генератор случайных чисел.

Основной конструкцией являются вложенные циклы обработки вида:

for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

{

\

}

}

Структура программы включает отдельные фрагменты поиска максимального значения строки / столбца.

4. Составление программ с использованием функций при обработке одномерных массивов

4. 1 Постановка задачи

Словесное представление алгоритма: Найти для каждого массива количество элементов, значение которых меньше среднего между минимальным элементом и максимальным. Массивы размерности 18, 12 и 10 соответственно и строятся из элементов по следующим формулам:

b[i]=2.8 — (i+4. 5)

c[i]=-12. 6+(i-2. 2) (4. 1)

z[i]=-9.1 — (i+5. 7)

В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1−9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой для выполнения всех расчетов использовать несколько функций, каждая из которых выполняет отдельную задачу: ввод данных, вывод результатов, нахождение промежуточных и конечных результатов. Необходимо обосновать декомпозицию программы на функции.

4. 2 Анализ существующих методов решения задачи

Традиционно метод решения задачи по работе с одномерным массивом сводится к выполнению трёх основных этапов: ввод-вывод массива, обработка массива, вывод результата обработки массива. Основные особенности реализации таких этапов кратко описаны в п. 2.2.

Декомпозируем задачу на подзадачи:

— формирование массива с учётом формулы вида (4. 1);

— вывод массива;

— поиск максимума и минимума в массиве.

Для каждой подзадачи выберем классический метод на базе циклической поэлементной обработки массива. Подзадача поиска максимума и минимума решается линейно. Начальное значение максимума (минимума) устанавливается равным значению первого элемента массива. Затем выполняется последовательное сравнение текущего максимума со значением очередного элемента массива.

4. 3 Блок-схема решения задачи

Основной блок процесс с утолщённой рамкой графически изображает определённую функцию. На основе представления алгоритма в виде блок-схемы составим его представление в виде программы с необходимыми подпрограммами-функциями.

Рисунок 4.1 Блок-схема алгоритма

4. 4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include < iostream>

#include < cmath>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы № 4 и их инициализирующие значения:

const int n1 = 18, n2 = 12, n3 = 10;

размеры массивов

double b[n1], c[n2], z[n3];

массивы

Опишем методы программы № 4, уточнив параметры для вызова пользовательских методов:

— double SearchMax (double a[], int n) функция, выполняющая поиск максимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

— double SearchMin (double a[], int n) функция, выполняющая поиск минимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

— int Count (double a[], int n, double max, double min) — функция поиска для массива, а количества элементов, значения которых меньше среднего между минимальным элементом и максимальным.

Особенностью программной реализации является исключение цикла и троекратный вызов функций Count.

5. Составление программ с использованием функций при обработке матриц

5. 1 Постановка задачи

Словесное представление алгоритма: Заданы массивы F (8), G (11), H (14). Для каждого из массивов найти произведение ненулевых элементов, если количество положительных элементов больше половины и сумму отрицательных элементов, в противном случае. Элементы массивов определяются по формулам: Элементы массивов необходимо определить по формулам:

Fi = 1,4i + tg (i — 5,5);

Gj = 8,5j + tg (j + 3,9);

Hk = 2,9k — tg (k + 1,7). (5. 1)

В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1−9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой использована подпрограмма-функция для формирования и обработки массивов. Массивы необходимо описать в основной программе. Формирование, вывод и обработку массивов необходимо выполнить в подпрограмме при вызове ее из главной программы.

5. 2 Анализ существующих методов решения задачи

Традиционно метод решения задачи по работе с одномерным массивом сводится к выполнению трёх основных этапов: ввод-вывод массива, обработка массива, вывод результата обработки массива. Основные особенности реализации таких этапов кратко описаны в п. 2.2.

Вынесем в программу описание данных и вызов подпрограммы. Детализируем подзадачи подпрограммы:

— поиск максимума в массиве;

— поиск минимума в массиве;

— поиск суммы отрицательных элементов;

— поиск произведения ненулевых элементов;

Для каждой подзадачи выберем классический метод на базе циклической поэлементной обработки массива. Подзадачи поиска максимума, минимума суммы положительных элементов, произведения отрицательных элементов решаются линейно. Начальное значение максимума / минимума устанавливается равным значению первого элемента массива. Затем выполняется последовательное сравнение текущего максимума / минимума со значением очередного элемента массива. Если текущее сравниваемое значение оказывается больше / меньше максимума / минимума, то максимум / минимума переопределяется. Начальное значение суммы / произведения устанавливается равным нулю / единице. Затем выполняется проверка на количество положительных элементов. Если их количество больше половины, то вычисляем произведение положительных элементов, иначе — сумму отрицательных.

5. 3 Блок-схема решения задачи

На рис. 5.1 показана блок-схема, которая графически изображает логическую структуру алгоритма. Основной блок процесс с утолщённой рамкой графически изображает определённую подзадачу функции.

Рисунок 5.1 Укрупнённая блок-схема алгоритма

5. 4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include < iostream>

#include < cmath>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы № 5 и их инициализирующие значения:

const int n1 = 8, n2 = 11, n3 = 14;

размеры массивов

double f[n1], g[n2], h[n3];

массивы

Опишем методы программы № 5, уточнив параметры для вызова пользовательского метода:

— double SearchMax (double a[], int n) функция, выполняющая поиск максимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

— double SearchMin (double a[], int n) функция, выполняющая поиск минимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

— double Calc (double a[], int n) — функция поиска произведения ненулевых элементов, если количество положительных элементов больше половины и сумму отрицательных элементов, в противном случае.

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

6. Составление программ для вывода графических изображений

6. 1 Постановка задачи

Необходимо выполнить вывод на экран прямоугольника и эллипса внутри него. Фигуры изменяют свои цвета и размеры, двигаются вправо по экрану

6. 2 Анализ существующих методов решения задачи

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

Вывод графических примитивов целесообразно реализовать в виде Windows-приложения, где основным элементов управления является область вывода.

6. 3 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек:

#include «stdafx. h»

#include < Windows. h>

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы № 6 и их инициализирующие значения:

#define Red RGB (255,0,0)

#define Blue RGB (0,0,255)

цвета

static HWND hWnd;

— дескриптор окна

HPEN hPen;

кисть

HDC DrawHDC

— контекст устройства

Опишем методы программы № 6, уточнив параметры для вызова пользовательского метода:

void Paint (int nLeftRect, int nTopRect, int nRightRect, int nBottomRect) — функция рисования графических примитивов.

int Draw_Ellipce (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC=0) — функция рисования эллипса.

int Draw_Rect (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC = 0) — функция рисования прямоугольника.

HWND GetConsoleWndHandle (void) — функция получения дескриптора окна.

Заключение

Выполнение данной курсовой работы в соответствии с индивидуальными заданиями распределено на 6 этапов. В процессе выполнения каждого этапа:

— сформулирована развернутая постановка задачи и сформирована словесная / словесно-формульное представление алгоритма;

— разработана структура, укрупненный алгоритм решения задачи представлен в виде блок-схемы;

— сделан анализ и выбран метод решения задачи по классической теории алгоритмов;

— разработана программа, реализующая решение задачи;

— получены и проанализированы результаты решения задачи;

— оформлено описание решения задачи.

Список литературы

Биллиг В. А. Основы программирования на C#. — М.: Изд-во «Интернет-университет информационных технологий — ИНТУИТ. ру», 2006. — 488 c.

Ватсон К. C#.  — М.: Лори, 2004. — 880 с.

Вирт Н. Алгоритмы и структуры данных. — Спб: Невский диалект, 2001 г. — 352 с.

Либерти Д. Программирование на C#. — СПб.: Символ-Плюс, 2003. — 688 с.

Прайс Д. , Гандэрлой М. Visual C#. NET. Полное руководство. — Киев: «Век», 2004. — 960 с.

Робинсон С. , Корнес О. , Глинн Дж. и др. C# для профессионалов. В двух томах. — М.: Лори, 2003. — 512 с.

Смайли Д. Учимся программировать на C# вместе с Джоном Смайли. — Киев: «ДиаСофт», 2003. — 528 с.

Тай Т. , Лэм Х. К. Платформа. NET. Основы. — СПб.: Символ-Плюс, 2003. — 336 с.

Шилдт Г. Полный справочник по C#. — М.: Издательский дом «Вильямс», 2004. — 752 с.

Приложение А

#include «stdafx. h»

#include < iostream>

#include < cmath>

using namespace std;

int _tmain (int argc, _TCHAR* argv[])

{

setlocale (0, «RUS»);

double dx = 0. 4;

double b;

cout< < «Введите значение параметра b: «;

cin> >b;

int k = 0;

double s = 0;

for (double x = -5; x <= 15; x+=dx)

{

double z = 0;

if (x > 2)

z = log (abs (x+b));

else if (x < -2)

z = b*exp (x);

else

z = b*(x*x + 1);

double y = pow (z, 3) + exp (b*z);

if (y < 0. 5)

k++;

if (y > 0. 5)

s+=y;

cout< <"x = «< <x<<"tz = «< <z<<"ty = «< <y<<endl;

}

cout< <"k = «< <k<<endl;

cout< <"s = «< <s<<endl;

system («pause»);

return 0;

}

Рисунок А.1 Программная реализация решения задачи № 1

#include «stdafx. h»

#include < iostream>

#include < cmath>

using namespace std;

int _tmain (int argc, _TCHAR* argv[])

{

setlocale (0, «RUS»);

int *a = new int [25];

int *b = new int [30];

for (int i = 0; i < 25; i++)

{

a[i] = (double) rand ();

cout< <a[i]<<";t";

}

double max = a[0];

for (int i = 1; i < 25; i++)

if (a[i] > max)

max = a[i];

cout< <endl<<"Максимальный элемент последовательности: «< <max<<endl;

for (int i = 0; i < 30; i++)

{

b[i] = (double) rand ();

cout< <b[i]<<";t";

}

double summa = 0;

for (int i = 1; i < 30; i++)

summa += b[i];

cout< <endl<<"Среднее арифметическое: «< <summa<<endl;

system («pause»);

return 0;

}

Рисунок А.2 Программная реализация решения задачи № 2

#include «stdafx. h»

#include < iostream>

#include < cmath>

using namespace std;

int _tmain (int argc, _TCHAR* argv[])

{

setlocale (0, «RUS»);

const int n = 4, m = 8;

double a[n] [m];

for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++)

a[i] [j] = (double) rand ();

for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

cout< <a[i] [j]< <"t";

cout< <endl;

}

double b1, b2, b3, b4;

for (int i = 0; i < n; i++)

{

double summa = 0;

for (int j = 0; j < m; j++)

summa += a[i] [j];

summa /= m;

cout< <"Среднее арифметическое «< <i<<» строки: «< <summa<<endl;

double min = a[i] [0], max = a[i] [0];

for (int j = 1; j < m; j++)

{

if (a[i] [j] < min)

min = a[i] [j];

if (a[i] [j] > max)

max = a[i] [j];

}

cout< <i<<": MAX — MIN = «< <max-min<<endl;

}

for (int i = 0; i < m; i++)

{

double max = a[0] [i];

for (int j = 1; j < n; j++)

if (a[j] [i] > max)

max = a[j] [i];

cout< <i<<": «< <max<<endl;

}

system («pause»);

return 0;

}

Рисунок А.3 Программная реализация решения задачи № 3

#include «stdafx. h»

#include < iostream>

#include < cmath>

using namespace std;

double SearchMax (double a[], int n);

double SearchMin (double a[], int n);

int Count (double a[], int n, double max, double min);

int _tmain (int argc, _TCHAR* argv[])

{

setlocale (0, «RUS»);

const int n1 = 18, n2 = 12, n3 = 10;

double b[n1], c[n2], z[n3];

cout< <"Array b: «<<endl;

for (int i = 0; i < n1; i++)

{

b[i] = 2.8 — (i + 4. 5);

cout< <b[i]<<"t";

}

cout< <endl<<"Array c: «<<endl;

for (int i = 0; i < n2; i++)

{

c[i] = -12.6 + (i — 2. 2);

cout< <c[i]<<"t";

}

cout< <endl<<"Array z: «<<endl;

for (int i = 0; i < n3; i++)

{

z[i] = -9.1 — (i + 5. 7);

cout< <z[i]<<"t";

}

cout< <endl;

cout< <"Array b: «< <Count (b, n1, SearchMax (b, n1), SearchMin (b, n1))< <endl;

cout< <"Array c: «< <Count (c, n2, SearchMax (c, n2), SearchMin (c, n2))< <endl;

cout< <"Array z: «< <Count (z, n3, SearchMax (z, n3), SearchMin (z, n3))< <endl;

system («pause»);

return 0;

}

double SearchMax (double a[], int n)

{

double max = a[0];

for (int i = 1; i < n; i++)

if (a[i] > max)

max = a[i];

return max;

}

double SearchMin (double a[], int n)

{

double min = a[0];

for (int i = 1; i < n; i++)

if (a[i] < min)

min = a[i];

return min;

}

int Count (double a[], int n, double max, double min)

{

double x = (max-min)/2;

int c = 0;

for (int i = 0; i < n; i++)

if (a[i] < x)

c++;

return c;

}

Рисунок А.4 Программная реализация решения задачи № 4

// App5. cpp: Defines the entry point for the console application.

//

#include «stdafx. h»

#include < iostream>

#include < cmath>

using namespace std;

double Calc (double a[], int n);

int _tmain (int argc, _TCHAR* argv[])

{

setlocale (0, «RUS»);

const int n1 = 8, n2 = 11, n3 = 14;

double f[n1], g[n2], h[n3];

cout< <"Array f: «<<endl;

for (int i = 0; i < n1; i++)

{

f[i] = 1. 4*i + tan (i — 5. 5);

cout< <f[i]<<"t";

}

cout< <endl<<"Array g: «<<endl;

for (int i = 0; i < n2; i++)

{

g[i] = 8. 5*i + tan (i + 3. 9);

cout< <g[i]<<"t";

}

cout< <endl<<"Array h: «<<endl;

for (int i = 0; i < n3; i++)

{

h[i] = 2. 9*i — tan (i + 1. 7);

cout< <h[i]<<"t";

}

cout< <endl;

cout< <"Array f: «< <Calc (f, n1)< <endl;

cout< <"Array g: «< <Calc (g, n2)< <endl;

cout< <"Array h: «< <Calc (h, n3)< <endl;

system («pause»);

return 0;

}

double Calc (double a[], int n)

{

int pos = 0;

for (int i = 0; i < n; i++)

if (a[i] > 0)

pos++;

double pr = 1, summa = 0;

if (pos > n/2)

{

for (int i = 0; i < n; i++)

if (a[i] > 0)

pr *=a[i];

return pr;

}

for (int i = 0; i < n; i++)

if (a[i] < 0)

summa += a[i];

return summa;

}

Рисунок А.5 Программная реализация решения задачи № 5

#include «stdafx. h»

#include < Windows. h>

// Цвет для вывода графика

#define Red RGB (255,0,0)

#define Blue RGB (0,0,255)

// дескриптор окна консоли

static HWND hWnd;

HWND GetConsoleWndHandle (void);

void Paint (int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

int Draw_Ellipce (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC=0);

int Draw_Rect (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC = 0);

int _tmain (int argc, _TCHAR* argv[])

{

Paint (10, 10, 10,10);

return 0;

}

void Paint (int nLeftRect, int nTopRect, int nRightRect, int nBottomRect)

{

hWnd = GetConsoleWndHandle ();

Draw_Rect (hWnd, 450, 50, 250, 150, Red);

Draw_Ellipce (hWnd, 350, 200, 250, 100, Blue);

getchar ();

}

int Draw_Ellipce (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC)

{

HPEN hOPen;

HPEN hNPen = CreatePen (PS_SOLID, 2, Pen);

if (! DrawHDC) DrawHDC = GetDC (Wnd);

hOPen = (HPEN) SelectObject (DrawHDC, hNPen);

Ellipse (DrawHDC, x1, y1, x2, y2);

DeleteObject (SelectObject (DrawHDC, hOPen));

return 0;

}

int Draw_Rect (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DrawHDC)

{

HPEN hOPen;

HPEN hNPen = CreatePen (PS_SOLID, 2, Pen);

if (! DrawHDC) DrawHDC = GetDC (Wnd);

hOPen = (HPEN) SelectObject (DrawHDC, hNPen);

RECT rect;

rect. bottom = x2;

rect. left = x1;

rect. right = y2;

rect. top = y1;

FillRect (DrawHDC, & rect, (HBRUSH) (COLOR_WINDOW+1));

DeleteObject (SelectObject (DrawHDC, hOPen));

return 0;

}

HWND GetConsoleWndHandle (void)

{

HWND hConWnd;

OSVERSIONINFO os;

char szTempTitle[64], szClassName[128], szOriginalTitle[1024];

os. dwOSVersionInfoSize = sizeof (OSVERSIONINFO);

GetVersionEx (& os);

if (os. dwPlatformId == VER_PLATFORM_WIN32s) return 0;

GetConsoleTitle ((LPWSTR) szOriginalTitle, sizeof (szOriginalTitle));

SetConsoleTitle ((LPWSTR) szTempTitle);

Sleep (40);

hConWnd = FindWindow (NULL, (LPWSTR) szTempTitle);

SetConsoleTitle ((LPWSTR) szOriginalTitle);

if (os. dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)

{

hConWnd = GetWindow (hConWnd, GW_CHILD);

if (hConWnd == NULL) return 0;

GetClassName (hConWnd, (LPWSTR) szClassName, sizeof (szClassName));

while (strcmp (szClassName, «ttyGrab»)≠ 0)

{

hConWnd = GetNextWindow (hConWnd, GW_HWNDNEXT);

if (hConWnd == NULL) return 0;

GetClassName (hConWnd, (LPWSTR) szClassName, sizeof (szClassName));

}

}

return hConWnd;

}

язык цикл массив программа

ПоказатьСвернуть
Заполнить форму текущей работой