Список используемой литературы
1. Информатика: учебник для вузов / А.Н. Гуда [и др.]; под ред. В.И. Колесникова. – М.: Дашков и К, 2008. – 400 с.
2. Чекмарев, Ю.В. Вычислительные системы, сети и телекоммуникации [Электронный ресурс]/ Ю.В. Чекмарев.– «ДМК Пресс», 2010.– 184 с. Режим доступа: http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1108.
3. Шаньгин, В.Ф. Защита компьютерной информации [Электронный ресурс]/ В.Ф. Шаньгин.– «ДМК Пресс», 2010.–544 с. Режим доступа: http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1146 .
4. Галявов, И.Р. Borland C++ для себя [Электронный ресурс]/ И.Р.. Галявов. – «ДМК Пресс», 2009.– 214 с.. Режим доступа: http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1230.
5. Буч, Г., Рамбо Д., Якобсон И.Язык UML руководство пользователя [Электронный ресурс]/ Г.Буч, Д. Рамбо, И. Якобсон. – «ДМК Пресс», 2008.– 496 с. Режим доступа: http: //e.lanbook.com/books/element.php?pl1_cid =258&pl1_id =1246.
6. OpenOffice.org для профессионала [Электронный ресурс].– «ДМК Пресс», 2009. – 448 с. Режим доступа: http: //e.lanbook.com/books/ element.php?pl1_cid =258&pl1_id =1223.
7. Дьяконов, В.П. MATHLAB 9.5 /10/11 в математике, физике и образовании [Электронный ресурс]/ В.П.Дьяконов. –«ДМК Пресс»,– 2010.–752 с. Режим доступа: http: //e.lanbook.com/books/ element.php?pl1_cid =258&pl1_id =1181.
ПРИЛОЖЕНИЕ
#include <iostream>
using namespace std;
int Function_3() {
float h;
float a;
float b;
float n;
float x[100]; // резервируем массив значений переменной.
float y[100]; // резервируем массив значений переменной.
cout << "\n Решение дифференциального уравнения методом Эллера \n";
cout << "Уравнение y'=x^3-y^3 y(0.1)=0.5 \n\n\n";
y[1]=0.5; // известное решение уравнения по условию задачи. Первый элемент в массиве.
cout << "введите интервал значения Х [a;b] и шаг h \n";
cin >> a;
cin >> b;
cin >> h;
n=(b-a)/h; // определяем количество циклов.
for (int i = 0; i <= n+1; i++) {
x[i] = a; // заносим значение Х в массив
a=a+h;
}
cout << "число циклов равно " << n << "\n\n"; // проверяем правильность количества циклов
for (int i = 0; i <= n; i++) {
cout << "X(" << i <<") = " << x[i] <<"\n"; // проверяем значение Х в массиве
}
cout << "\n\n";
for (int i = 1; i <= n+1; i++) {
y[i+1]=y[i]+h*(x[i]*x[i]*x[i]-y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.
cout << "X(" << i-1 <<") = " << x[i-1] << " Y(" << i-1 << ")= " << y[i] <<"\n";
}
for (int i = 1; i <= n+1; i++) {
y[i+1]=y[i]+h*(x[i]*x[i]*x[i]-y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.
cout << x[i-1] <<"\n";
}
for
(int i = 1; i <= n+1; i++) {y[i+1]=y[i]+h*(x[i]*x[i]*x[i]+y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.
cout << y[i] <<"\n";
}
return 0;
}
int Function_2() {
cout << "\n---Программа перемножения матриц---\n";
cout << "Пожалуйста,дайте исходные данные: \n";
cout << "матрица размерности 3х3 и матрица-вектор размерности 3x1. \n";
float Matrix[3][3]; // объявляем переменную массива размерности 3х3.
float vector[3]; // объявляем переменную массива 3x1
float vector_new[3]; // обявляем массив для результирующего значения.
cout << "\nШаг 1,Аккуратно введи данные матрицы 3x3: \n";
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 2; j++) {
cout << "укажите значение столбца " << i + 1 << " строки " << j + 1 << " : "; // выводим на экран подсказку, и изменяем нумерацию для наглядности.
cin >> Matrix[i][j]; // ожидаем ввода элемента массива.
cout << "\n";
}
}
cout << "\n \nДанные первой матрицы записал,а отменить несможешь;D.\n\n\n";
cout << "Шаг 2: \n";
cout << "Введите значения второй матрицы желательно без ошибок 3x1 (вектора): \n \n \n";
for (int x = 0; x <= 2; x++) {
cout << "Вектор. Значение "<< x + 1 << " : "; // Для удобства пользователя изменяем нумерацию строк..
cin >> vector[x];
cout << "\n";
}
cout << " \nВвод данных завершён.\n\n\n";
cout << "Внимательно проверьте введённые значения ! \n \n \n";
for (int j = 0; j <= 2; j++) {
for (int i = 0; i <= 2; i++) { //выводим на экран матрицу в привычном для человека виде.
cout << Matrix[i][j] << " "; // столбцы и строки не могут быть "нулевыми" по счёту.
}
cout << "\n\n";
}
cout << "\n\n";
for (int x = 0; x <= 2; x++) {
cout << "Вектор. Значение "<< x + 1 << " : " << vector[x] << "\n"; // строки не могут быть "нулевыми" по счёту.
}
cout << "\n\n\nЕсли всё верно,хотя мы ее получим в лбом случае главное что бы результат устраивал \n";
cout << "в результате перемножения получим матрицу 3x1 : \n";
for (int j = 0; j <= 2; j++) {
float result = 0.0; // переменная result действует только в этом цикле.
for (int i = 0; i <= 2; i++) {
result = result + Matrix[i][j]*vector[i]; // математика перемножения матрицы на вектор.
}
vector_new[j] = result; // присваиваем полученное значение результирующему вектору.
}
cout << "\n\n\n";
//cout << setprecision(7);
/* используя cout для вывода значений с плавающей точкой,
обычно нельзя сделать каких-либо предположений о том, сколько цифр будет выводить cout no умолчанию.
Однако, используя манипулятор setprecision, вы можете указать количество требуемых цифр. */
for (int x = 0; x <= 2; x++) {
cout << "Результат. Значение "<< x + 1 << " : " << vector_new[x] << "\n"; // строки не могут быть "нулевыми" по счёту.
}
cout
<< "\n\n\n Открой программу рабочую
написанную другим человеком,ибо все
познается в сравнении , \n";cout << "например, на сайте http://reshish.ru \n";
return 0; // возврат в основную программу.
}
int Function_1() {
// подпрограммма решения нелинейного уравнения методом половинного деления
float a; // левая граница интервала
float b; // правая граница интервала
float a1; // левая граница интервала для отображения в решении
float b1; // правая граница интервала для отображения в решении
float sigma; // значение погрешности вычисления
float max_step; // ограничение количества шагов вычислений для индикации процесса вычисления
float xm; // середина интервала
float f_a; // значение функции в начале интервала
float f_b; // значение функции в конце интервала
float f_xm; // значение функции в середине интервала
int k; // целая часть функции f_xm
cout << "\n---Программа решения уравнения методом половинного деления---\n\n";
cout << "Шаг 1:\nВвод исходных значений.\n";
cout << "Задано уравнение x^3+3*x^2-6x-1=0\n\n";
cout << "введите начальное значение исследуемого интервала:\n";
cin >> a;
a1=a;
cout << "\nвведите конечное значение исследуемого интервала:\n";
cin >> b;
b1=b;
cout << "\nвведите значение погрешности вычисления результата: например, 0.0001 \n";
cin >> sigma;
cout << "\nвведите ограничение количества шагов: например, 1000 \n\n";
cin >> max_step;
//cout.precision(7); // определяем вывод семизначных значений с плавающей точкой.
cout << "Шаг 2:\nпроверьте правильность введённых значений:";
cout
<< "\nначало интервала = " << a
<< "\nконец интервала = " << b
<< "\nзаданная точность = " <<
sigma << "\nограничение количества
шагов = " << max_step;cout << "\n\nШаг 3:\nРешение:\n";
for (int i = 0; i <= max_step; i++) {
if (b-a > sigma) { // продолжаем считать пока значения границ интервала различаются больше, чем на значение погрешности
xm=(a+b)/2; // вычисляем середину интервала
f_a = a*a*a+3*a*a-6*a-1; // вычисляем значение функции в начале интервала
// f_b = b*b*b+3*b*b-6*b-1; // вычисляем значение функции в конце интервала (можем не считать)
f_xm = xm*xm*xm+3*xm*xm-6*xm-1; // вычисляем значение функции в середине интервала
k=f_xm; // так как значение функции может никогда не стать равным "0", то необходимо остановиться, когда целая часть числа станет равна "0". Перемненная "k" имеет формат "int".
if (f_a*f_xm <= 0) { // если произведение больше нуля, значит смены знака функции не произошло на этом интервале
b=xm; // исключаем правый интервал и начинаем сначала
cout << "\nb = " << b << " Шаг i = " << i+1 << " решение слева ";
}
else {
a=xm; // исключаем левый интервал
cout << "\na = " << a << " Шаг i = " << i+1 << " решение справа ";
}
}
}
if (k == 0) {
xm=(a+b)/2; // вычисляем середину интервала для конечного решения
f_xm = xm*xm*xm+3*xm*xm-6*xm-1; //вычисляем значение функции для конечного решения
cout << "\n\nрешением уравнения на интервале от " << a1 << " до " << b1 << " является Х = " << xm << "\n\nзначение функции в этой точке = " << f_xm << "\n\n";
}
else {
cout << "\n\nПрограмма не смогла найти решение уравнения на заданном интервале значений.\nПопробуйте расширить интервал или проверьте с помощью графического метода,\nчто функция точно меняет знак на выбранном интервале.\n\n\n";
}
cout << "\n\nПроверьте решение уравнения альтернативным способом, напаример, используя сайт http://www.wolframalpha.com \n\n\n";
return 0;
}
int main() {
setlocale(0,"");
int menu = 5; // объявляем переменную "menu".
if (menu != 0){
cout << "\n Аккуратно от этого будет зависить что будешь решать обдумай и нажми на кнопку \n";
cout << "\n";
cout << " нажмите 1 для выполнения первой подпрограммы \n";
cout << " нажмите 2 для выполнения умножения матрицы на вектор \n"; // выводим на стандартное устройство (экран) пояснения "Меню".
cout << " нажмите 3 для решения дифференциального уравнения методом Эйлера \n";
cout << " нажмите 0 для выхода из программы \n";
cin >> menu; // ожидаем выбора и присваиваем значение переменной 'menu'.
switch (menu) { // специальная конструкция, удобная для организации меню.
case 1: // сравнивает переменную "menu" с константой после служебного слова "case".
cout << "\n Вы ввели цифру: 1,ну что ж приступим \n"; // в случае совпадения выполняет команды
Function_1(); // вызываем подпрограмму "Funktion_1".
main();
break; // после возвращения из подпрограммы надо прервать выполнение конструкции "switch - case".
case 2:
cout
<< "\nПоздравляем ! Возможно, Вы
выбрали цифру,да нет шучу я понимаю что
вы нажали именно это: 2 \n";Function_2();
main();
break;
case 3:
cout << "\nТоже не плохо: 3 - вполне годная цифра,как говорили мне преподаватели иногда в школе \n";
Function_3();
main();
break;
case 0:
cout << "\n Понравилась тыкать на кнопки,тогда всегда рады запускай еще \n\n";
// system("pause"); // напиши, и окно не закроется пока не нажмёшь любую клавишу
return 0; // возвращает значение в точку вызова функции. Возврат из основной функции означает окончание выполнения программы.
break;
default: // если не нашлось ни одного совпадения, то выполняем "действие по умолчанию".
cout << "\nВы невыйграли миллион,да что уж вы даже мимо нужных кнопок промохнулись ! \n";
cout << "Можно выбрать только 1, 2 или 3 \n"; // выводим сообщение "защиты от дурака".
cout << "по теории если дать обезьяне печатную машинку и бесконечное число времени то она хоотично жмя на кнопки когданибудь напишет Гамлет ,так что неунывай и пробуй еще";
cout << "\n";
main();
}
}
return 0;
}
