Разработка и отладка программ с использованием языка программирования C++
Изучение элементов языка С++, программирование разветвлений и циклов с использованием операторов условного и перехода. Обработка одномерных массивов. Поиск максимального элемента массива с заданной размерностью. Листинги программы и результатов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.02.2013 |
Размер файла | 647,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
В начале 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 Блок-схема алгоритма
Блоки на схеме соединены стрелками (линиями связи), которые определяют последовательность выполнения операций. Использованы следующие основные блоки:
Размещено на http://www.allbest.ru/
блок пуск-останов, определяющий начало или конец алгоритма (для блока пуск определен только выход, для останов только вход);
Размещено на http://www.allbest.ru/
блок ввод-вывод, определяющий ввод информации в программу или вывод информации (допускает любое количество входов, но один выход);
Размещено на http://www.allbest.ru/
блок процесс, определяющий изменение значения, формы представления или расположения данных (допускает любое количество входов, но один выход);
Размещено на http://www.allbest.ru/
блок решение, определяющий последующие шаги выполнения алгоритма в зависимости от выполнения условия (допускает любое количество входов, но только два выхода да (+) и нет ());
Размещено на http://www.allbest.ru/
блок итерация, определяющий повторное выполнение шагов алгоритма некоторое количество раз (допускает любое количество входов и выходов).
На основе представления алгоритма в виде блок-схемы составим наиболее подробное представление в виде программы.
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;
}
язык цикл массив программа
Размещено на Allbest.ru
Подобные документы
Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.
лабораторная работа [259,3 K], добавлен 14.05.2011Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014Обработка сложных структур данных как одна из наиболее распространенных возможностей применения языка программирования С++. Преимущества использования подпрограмм. Передача параметров, одномерных и двумерных массивов, функции и их возврат в функцию.
курсовая работа [1,1 M], добавлен 24.11.2013Краткое описание языка программирования С++. Алгоритм линейного выбора элемента, методов минимального (максимального) элемента и челночной сортировки. Анализ и разработка приложения, организующего сортировку массива данных пятью методами сортировки.
реферат [614,8 K], добавлен 12.04.2014Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.
учебное пособие [1,6 M], добавлен 28.12.2013Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013Определение размерности исходного массива на листе электронной таблицы, адреса ячейки. Считывание исходного массива в программу. Создание фрагмента программы для выполнения задания с использованием операторов условного перехода, адресация диапазонов.
контрольная работа [791,6 K], добавлен 16.04.2010Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Характеристика и основные особенности языка Pascal. Создание числового массива с использованием встроенной функции. Использование записей, массивов и файлов. Обработка и графическая визуализация данных средствами табличного процессора и пакета MathCAD.
курсовая работа [1,0 M], добавлен 22.08.2012