Текст программы.
Проектирование циклических алгоритмов с заданным числом повторений и уравнением с условием
LineTo (hdc, X0 + modX * x, Y0 — modY * (4 * exp (-fabs (x)) — 1)); B = a + (a — b) * functionE (a) / (functionE (a) — functionE (b)); Printf («Введите количество разбиений: «); Rectangle (hdc, 10 + i * 10, 10 + 10 * j, 90 + i * 10, 90 + 10 * j); Rectangle (hdc, 10 + i * 10, 10 + 10 * j, 90 + i * 10, 90 + 10 * j); MoveToEx (hdc, X0 + modX * -1, Y0 — modY * cos (-1), NULL); SetConsoleTextAttribute… Читать ещё >
Текст программы. Проектирование циклических алгоритмов с заданным числом повторений и уравнением с условием (реферат, курсовая, диплом, контрольная)
Файлы исходного кода РГР.cpp.
#include «stdafx.h» .
extern HANDLE hStdOut;
extern CONSOLE_SCREEN_BUFFER_INFO csbInfo;
extern SMALL_RECT consolRect;
int main () {.
setlocale (LC_ALL, «RUS»);
SetConsoleTitle (L" РГР вариант 3. Гергерт Андрей Владимирович, ИВТ-163″);
hStdOut = GetStdHandle (STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo (hStdOut, &csbInfo);
consolRect = csbInfo. srWindow;
cls ();
drawMenu ();
}.
void Exit () {.
exit (0);
}.
AuthorInfo.cpp.
#include «stdafx.h» .
extern HANDLE hStdOut;
void drawInfo () {.
system («cls»);
SetConsoleTextAttribute (hStdOut, 47);
printf («Автор программы: Гергерт Андрей Владимирович «);
SetConsoleTextAttribute (hStdOut, 79);
printf («Группа: ИВТ-163 «);
SetConsoleTextAttribute (hStdOut, 160);
printf («Вариант: 3 «);
SetConsoleTextAttribute (hStdOut, 158);
}.
definedIntegral.cpp.
#include «stdafx.h» .
void computeIntegral () {.
system («cls»);
double a, b;
lint slices;
printf («Введите левую границу: «);
scanf («%lf», &a);
printf («Введите правую границу: «);
scanf («%lf», &b);
printf («Введите количество разбиений: «);
scanf («%ld», &slices);
printf («Интеграл равен: %.6lf (метод трапеций) %.6lf (метод прямоугольников) «, compute (a, b, slices), compute2(a, b, slices));
}.
double compute (double a, double b, lint slices) {.
double sum = 0, x = a, dx = fabs (b — a) / slices;
while (x < b) {.
sum += (functionI (x + dx) + functionI (x)) * dx / 2;
x += dx;
}.
return sum;
}.
double compute2(double a, double b, lint slices) {.
double sum = 0, x = a, dx = (b — a) / slices;
while (x < b) {.
sum += functionI (x — dx / 2);
x += dx;
}.
sum *= dx;
return sum;
}.
double functionI (double x) {.
return 1 / sqrt (2 + pow (x, 3));
}.
drawMenu.cpp.
#include «stdafx.h» .
#define KEY_ARROW_UP 72.
#define KEY_ARROW_DOWN 80.
#define KEY_ENTER 13.
#define KEY_ESC 27.
#define MAIN_X 5.
#define MAIN_Y 6.
typedef void (*FUN) (void);
typedef struct {.
int x, y;
char *str;
FUN f;
} ITEM;
HANDLE hStdOut;
CONSOLE_SCREEN_BUFFER_INFO csbInfo;
SMALL_RECT consolRect;
COORD curspos = { 0,1 };
WORD workWindowAttributes = 158;
WORD inactiveItemAttributes = 31;
WORD activeItemAttributes = 160;
ITEM menu[numMenu] = {.
{ MAIN_X, MAIN_Y, «ПОСТРОЕНИЕ ТАБЛИЦЫ ЗАДАННЫХ ФУНКЦИЙ «, doTable},.
{ MAIN_X, MAIN_Y + 2," РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ «, solveEquation},.
{ MAIN_X, MAIN_Y + 4," ВЫЧИСЛЕНИЕ ОПРЕДЕЛЁННОГО ИНТЕГРАЛА «, computeIntegral},.
{ MAIN_X, MAIN_Y + 6," ПОСТРОЕНИЕ ГРАФИКОВ ЗАДАННЫХ ФУНКЦИЙ", drawGraph},.
{ MAIN_X, MAIN_Y + 8," ИНФОРМАЦИЯ ОБ АВТОРЕ «, drawInfo},.
{ MAIN_X, MAIN_Y + 10," ГРАФИЧЕСКАЯ ЗАСТАВКА «, drawScreensaver},.
{ MAIN_X, MAIN_Y + 12," ВЫХОД (доступно на нажатию ESC) «, Exit}.
};
void getCursorPos (){.
GetConsoleScreenBufferInfo (hStdOut, &csbInfo);
curspos = csbInfo. dwCursorPosition;
}.
void showCursor (bool visible) {.
CONSOLE_CURSOR_INFO ccInfo;
ccInfo.bVisible = visible;
ccInfo.dwSize = 20;
SetConsoleCursorInfo (hStdOut, &ccInfo);
}.
void gotoXY (int x, int y) {.
COORD cursorPos = { x, y };
SetConsoleCursorPosition (hStdOut, cursorPos);
}.
void cls () {.
system («cls»);
}.
void drawMenu () {.
menuItems sel = TABLE;
prepare (sel);
itemMenu (sel, true);
fflush (stdin);
int iKey = 67;
while (true) {.
if (_kbhit ()) {.
iKey = _getch ();
switch (iKey) {.
case KEY_ARROW_DOWN:
if (sel < numMenu — 1) {.
itemMenu (sel, false);
sel = (menuItems)(sel + 1);
itemMenu (sel, true);
} else {.
itemMenu (sel, false);
sel = TABLE;
itemMenu (sel, true);
}.
showCursor (false);
break;
case KEY_ARROW_UP:
if (sel > 0) {.
itemMenu (sel, false);
sel = (menuItems)(sel — 1);
itemMenu (sel, true);
}.
else {.
itemMenu (sel, false);
sel = EXIT;
itemMenu (sel, true);
}.
showCursor (false);
break;
case KEY_ENTER:
gotoXY (curspos.X, curspos. Y);
SetConsoleTextAttribute (hStdOut, workWindowAttributes);
showCursor (true);
switch (sel) {.
case TABLE:
doTable ();
break;
case EQUATION:
solveEquation ();
break;
case INTEGRAL:
computeIntegral ();
break;
case GRAPH:
drawGraph ();
break;
case AUTHOR:
drawInfo ();
break;
case SCREENSAVER:
drawScreensaver ();
break;
default:
Exit ();
}.
cout << «Нажмите любую клавишу для выхода в меню» << endl;
getch ();
prepare (sel);
getCursorPos ();
fflush (stdin);
gotoXY (menu[sel]. x, menu[sel]. y);
showCursor (false);
break;
case KEY_ESC:
gotoXY (0, 0);
cls ();
Exit ();
}.
}.
}.
}.
void itemMenu (int sel, bool activate) {.
WORD itemAttributes;
if (activate) itemAttributes = activeItemAttributes;
else itemAttributes = inactiveItemAttributes;
gotoXY (menu[sel]. x, menu[sel]. y);
SetConsoleTextAttribute (hStdOut, itemAttributes);
cout << menu[sel]. str;
}.
void prepare (menuItems sel) {.
SetConsoleTextAttribute (hStdOut, 0);
cls ();
SetConsoleTextAttribute (hStdOut, inactiveItemAttributes);
for (int i = 0; i < numMenu; i++) {.
gotoXY (menu[i]. x, menu[i]. y);
cout << menu[i]. str;
}.
itemMenu (sel, true);
}.
equation.cpp.
#include «stdafx.h» .
#define precision 0.001.
void solveEquation () {.
system («cls»);
printf («Корни уравнения «5*x-exp (x)-2*x*sqrt (x)=0» с точностью %lf= x1 = %.5lf (метод бисекции) x2 = %.5lf (метод хорд) «, precision, solve (0.1, 0.8), solve2(1, 2));
}.
double solve (double a, double b) {.
double c;
while ((b — a) > 2 * precision) {.
c = (a + b) / 2;
if (functionE© == 0).
break;
else if (functionE (a)*functionE© < 0).
b = c;
else.
a = c;
}.
return c;
}.
double solve2(double a, double b) {.
while (fabs (b — a) > precision).
{.
a = b — (b — a) * functionE (b) / (functionE (b) — functionE (a));
b = a + (a — b) * functionE (a) / (functionE (a) — functionE (b));
}.
return b;
}.
double functionE (double x) {.
return 5 * x — exp (x) — 2 * x * sqrt (x);
}.
Graphics.cpp.
#include «stdafx.h» .
#define modX 75.
#define modY 50.
#define X0 100.
#define Y0 200.
HDC hdc;
extern HANDLE hStdOut;
extern CONSOLE_SCREEN_BUFFER_INFO csbInfo;
void drawGraph () {.
hdc = GetDC (GetConsoleWindow ());
GetConsoleScreenBufferInfo (hStdOut, &csbInfo);
system («cls»);
drawAxis ();
drawF1();
drawF2();
ReleaseDC (NULL, hdc);
}.
void drawAxis () {.
COLORREF whitePen = RGB (255, 255, 255);
HPEN axis = CreatePen (PS_SOLID, 2, whitePen);
SelectObject (hdc, axis);
MoveToEx (hdc, X0 — modX, Y0, NULL);
LineTo (hdc, X0 + 7 * modX, Y0);
MoveToEx (hdc, X0, Y0 — 4 * modY, NULL);
LineTo (hdc, X0, Y0 + 8 * modY);
DeleteObject (axis);
TextOutA (hdc, X0 + 7 * modX — 8, Y0 + 3, «x», 1);
TextOutA (hdc, X0 + 3, Y0 — 4 * modY + 24, «y», 1);
}.
void drawF1() {.
COLORREF penColor = RGB (0, 255, 0);
HPEN pen = CreatePen (PS_SOLID, 3, penColor);
SelectObject (hdc, pen);
MoveToEx (hdc, X0 + modX * -1, Y0 — modY * (4 * exp (-fabs (-1)) — 1), NULL);
for (double x = -1.0; x < 5 + 0.001; x += 0.01f) {.
LineTo (hdc, X0 + modX * x, Y0 — modY * (4 * exp (-fabs (x)) — 1));
}.
DeleteObject (pen);
SetBkColor (hdc, RGB (0, 255, 0));
TextOutA (hdc, X0 + 5 * modX, Y0 + modY, «F1(x) = 4 * exp (-|x|) — 1», 25);
}.
void drawF2() {.
COLORREF penColor2 = RGB (255, 0, 0);
HPEN pen2 = CreatePen (PS_SOLID, 3, penColor2);
SelectObject (hdc, pen2);
MoveToEx (hdc, X0 + modX * -1, Y0 — modY * cos (-1), NULL);
for (double x = -1.0; x < 5 + 0.001; x += 0.01f) {.
LineTo (hdc, X0 + modX * x, Y0 — modY * cos (x));
}.
DeleteObject (pen2);
SetBkColor (hdc, RGB (255, 0, 0));
TextOutA (hdc, X0 + 5 * modX, Y0 — modY / 1.5, «F2(x) = cos x», 13);
}.
Screensaver.cpp.
#include «stdafx.h» .
extern HDC hdc;
extern HANDLE hStdOut;
extern CONSOLE_SCREEN_BUFFER_INFO csbInfo;
void drawScreensaver () {.
GetConsoleScreenBufferInfo (hStdOut, &csbInfo);
system («cls»);
draw ();
}.
void draw () {.
srand (time (NULL));
int iKey = 0, i, j;
hdc = GetDC (GetConsoleWindow ());
COLORREF color;
while (iKey ≠ 27) {.
i = 0;
while (i < 50) {.
j = 0;
while (j < 30) {.
color = RGB (rand () % 256, rand () % 256, rand () % 256);
SelectObject (hdc, CreatePen (PS_DASHDOTDOT, 3, color));
Rectangle (hdc, 10 + i * 10, 10 + 10 * j, 90 + i * 10, 90 + 10 * j);
Sleep (150);
if (_kbhit ()) {.
iKey = _getch ();
if (iKey == 27).
goto END;
}.
j += 10;
}.
i += 15;
}.
END:Sleep (500);
SetConsoleTextAttribute (hStdOut, rand () % 256);
cls ();
}.
ReleaseDC (NULL, hdc);
SetConsoleTextAttribute (hStdOut, 158);
cls ();
}.
table.cpp.
#include «stdafx.h» .
extern HDC hdc;
extern HANDLE hStdOut;
extern CONSOLE_SCREEN_BUFFER_INFO csbInfo;
void drawScreensaver () {.
GetConsoleScreenBufferInfo (hStdOut, &csbInfo);
system («cls»);
draw ();
}.
void draw () {.
srand (time (NULL));
int iKey = 0, i, j;
hdc = GetDC (GetConsoleWindow ());
COLORREF color;
while (iKey ≠ 27) {.
i = 0;
while (i < 50) {.
j = 0;
while (j < 30) {.
color = RGB (rand () % 256, rand () % 256, rand () % 256);
SelectObject (hdc, CreatePen (PS_DASHDOTDOT, 3, color));
Rectangle (hdc, 10 + i * 10, 10 + 10 * j, 90 + i * 10, 90 + 10 * j);
Sleep (150);
if (_kbhit ()) {.
iKey = _getch ();
if (iKey == 27).
goto END;
}.
j += 10;
}.
i += 15;
}.
END:Sleep (500);
SetConsoleTextAttribute (hStdOut, rand () % 256);
cls ();
}.
ReleaseDC (NULL, hdc);
SetConsoleTextAttribute (hStdOut, 158);
cls ();
}.
Заголовочные файлы РГР.h.
#pragma once.
#ifndef RGR_H.
#define RGR_H.
int main (void);
void Exit (void);
#endif.
AuthorInfo.h.
#pragma once.
#ifndef AUTHORINFO_H.
#define AUTHORINFO_H.
void drawInfo (void);
#endif.
definedIntegral.h.
#pragma once.
#ifndef DEFINEDINTEGRAL_H.
#define DEFINEDINTEGRAL_H.
void computeIntegral (void);
double compute (double, double, lint);
double compute2(double, double, lint);
double functionI (double);
#endif.
drawMenu.h.
#pragma once.
#ifndef DRAWMENU_H_.
#define DRAWMENU_H_.
const int numMenu = 7;
enum menuItems { TABLE, EQUATION, INTEGRAL, GRAPH, AUTHOR, SCREENSAVER, EXIT };
void drawMenu (void);
void gotoXY (int, int);
void itemMenu (int, bool);
void cls (void);
void getCursorPos (void);
void showCursor (bool);
void prepare (menuItems);
#endif.
equation.h.
#pragma once.
#ifndef EQUATION_H_.
#define EQUATION_H_.
void solveEquation (void);
double solve (double, double);
double solve2(double, double);
double functionE (double);
#endif.
Graphics.h.
#pragma once.
#ifndef GRAPHICS_H.
#define GRAPHICS_H.
void drawGraph (void);
void drawAxis (void);
void drawF1(void);
void drawF2(void);
#endif.
screensaver.h.
#pragma once.
#ifndef SCREENSAVER_H_.
#define SCREENSAVER_H_.
void drawScreensaver (void);
void draw (void);
#endif.
stdafx.h.
#pragma once.
// libraries.
#include «targetver.h» .
#include.
#include.
#include.
#include.
#include.
#include.
#include.
using namespace std;
typedef unsigned int uint;
typedef long int lint;
// own headers.
#include «table.h» .
#include «equation.h» .
#include «definedIntegral.h» .
#include «drawMenu.h» .
#include «РГР.h» .
#include «Graphics.h» .
#include «AuthorInfo.h» .
#include «screensaver.h» .
table.h.
#pragma once.
#ifndef TABLE_H.
#define TABLE_H.
#define N 15.
void doTable (void);
void generateMassive (void);
void drawMassive (double [3][N][N]);
int getMinNumber (double[3][N][N], int);
int getMaxNumber (double[3][N][N], int);
#endif.