
- •1.Постановка задачи
- •2.Формализация и уточнение задания
- •3.Разработка пяти программных проектов в одном решение и получение результатов их работы
- •Реализация 1-го проекта:
- •Реализация 2-го проекта:
- •Реализация 3-го проекта:
- •Реализация 4-го проекта:
- •Реализация 5-го проекта:
- •4.Тестирование программы и доказательство правильности результатов
Реализация 4-го проекта:
Создадим четвертый проект с именем pr4 в уже имеющемся решении. Разработаем алгоритм процедуры без параметров и без возвращаемого значения. Схема алгоритма этой процедуры func4 представлена ниже. (Рис.10)
Рисунок 10 – Схема алгоритма этой процедуры func4 без параметров и без возвращаемого значения
Разработаем программные коды двух функций в соответствии со схемами алгоритмов. Программные коды разработанных функций запишем в файл с именем zad4.cpp в следующем порядке
Объявление (прототип) функции func4;
Определение глобальных переменных;
Определение функции main;
Определение функции func4 без параметров и без возвращаемого значения.
#include <iostream>
#include <cmath>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
void func4(); // объявление функции
double x, y, f;
int main()
{
setlocale(LC_ALL, "rus");
cout << "Введите x = ";
while (!(cin >> x)) // “защита от дурака”
{
cout << "Введите корректные данные ";
cin.clear(); // Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n
}
cout << "Введите y = ";
while (!(cin >> y))
{
cout << "Введите корректные данные ";
cin.clear(); // Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n
}
if ((x + y) <= 0) //условие, что аргумент логарифма больше 0
{
cout << "Аргумент логарифма не может быть 0 или меньше нуля";
return 0;
}
if ((x / 8 == y)) //условие, что знаменатель не равен 0
{
cout << "Знаменатель равен 0, на 0 делить нельзя";
return 0;
}
func4(); // вставляем функцию в main
cout << endl << "результат f = " << f << endl;
system("PAUSE");
return 0;
}
void func4() // определение функции
{
f = (pow(5.2, 3) * (log10(x + y) / (x - (1 / (0.45 * sin(x - 8 * y)))))) + 0.5;
}
Откомпилируем файл zad4.cpp, выполним перестроение решения lab3 и выполнение проекта pr4, назначив его запускаемым проектом. Получим следующие результаты при заданных значениях исходных данных (рисунок 11).
Рисунок 11 – Результаты выполнения проекта pr4
Проведем следующий эксперимент: проверим, изменятся ли результаты выполнения проекта, если в тело главной функции main добавить определение переменных x, y, z до оператора ввода исходных данных: (Рис.12)
Рисунок 12 – Добавление переменных в тело главной функции main
Реализация 5-го проекта:
Создадим в уже имеющемся решении пятый проект с именем pr5, состоящий из двух файлов. В первый файл с именем zad5.срр поместим текст функции main из второго проекта.
#include <iostream>
#include <cmath>
#define _USE_MATH_DEFINES
#include "math.h"
using namespace std;
double func2(double a, double b); // объявление функцию
int main()
{
setlocale(LC_ALL, "rus");
double x, y, f; // переменные типа double
cout << "Введите x = ";
while (!(cin >> x)) // “защита от дурака”
{
cout << "Введите корректные данныe ";
cin.clear(); // Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // функция пропустит все символы в буфере до следующего символа \n
}
cout << "Введите y = ";
while (!(cin >> y))
{
cout << "Введите корректные данные ";
cin.clear(); // Очистка потока от некорректных данных
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //функция пропустит все символы в буфере до следующего символа \n
}
if ((x + y) <= 0) //условие, что аргумент логарифма больше 0
{
cout << "Аргумент логарифма не может быть 0 или меньше нуля";
return 0;
}
if ((x / 8 == y)) //условие, что знаменатель не равен 0
{
cout << "Знаменатель равен 0, на 0 делить нельзя";
return 0;
}
f = func2(x, y); // вставляем функцию в main
cout << endl << "результат f = " << f << endl;
system("PAUSE");
return 0;
}
Во второй файл с именем zad52.срр поместим текст функции func2 из того же проекта
#include <iostream>
#include <cmath>
#define _USE_MATH_DEFINES
#include "math.h"
double func2(double x, double y) // определение функции
{
double f;
f = (pow(5.2, 3) * (log10(x + y) / (x - (1 / (0.45 * sin(x - 8 * y)))))) + 0.5;
return f;
}
После раздельной компиляции файлов выполним их совместную компоновку (перестроение решения) и выполнение проекта. Результаты выполнения при заданных значениях исходных данных приведены ниже. (Рис.11)
Рисунок 11 – Результаты выполнения pr5