Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба ввит3.docx
Скачиваний:
3
Добавлен:
10.03.2025
Размер:
370 Кб
Скачать
☆
    1. Реализация 2-го проекта:

Создадим второй пустой проект с именем pr2 в уже существующем решении. Для этого выполним команду Файл/Добавить/Создать проект. В открывшемся окне “Добавить новый проект” зададим имя проекта pr2.

Запишем в файл с именем zad2.cpp программные коды разработанных в первом проекте функций (переименовав функцию func1 в func2) в следующем порядке:

  1. Cначала программный код главной функции main;

  2. После него определение функции func2 с параметрами и возвращаемым значением.

#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 << "Введите корректные данные";

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;

}

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;

}

Выполним проект pr2. Получим следующие результаты при заданных значениях исходных данных. (Рис. 5)

Рисунок 5 – Результат выполнения pr2

Проведем следующий эксперимент: закомментируем прототип функции func2 перед кодом главной функции main (Рис. 6)

Рисунок 6 – Закомментировалa прототип функции.

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

    1. Реализация 3-го проекта:

Создадим третий проект с именем pr3 в уже имеющемся решении.

Разработаем алгоритм процедуры с параметрами и без возвращаемого значения. Схема алгоритма этой процедуры func3 представлена ниже. (Рис.7)

Рисунок 7 – Схема алгоритма процедуры func3 с параметрами

и без возвращаемого значения для третьего проекта

Разработаем программные коды двух функций в соответствии со схемами алгоритмов. Программные коды разработанных функций запишем в файл с именем zad3.cpp в следующем порядке

  1. Объявление (прототип) функции func3;

  2. Определение функции main;

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

#include <iostream>

#include <cmath>

#define _USE_MATH_DEFINES

#include "math.h"

using namespace std;

void func3(double, double, double&); // объявление функции

int main()

{

setlocale(LC_ALL, "rus");

double x, y, f; // вводим переменные типа double

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;

}

func3(x, y, f); // вставляем функцию в main

cout << endl << "результат f = " << f << endl;

system("PAUSE");

return 0;

}

void func3(double x, double y, double& f)

{

f = (pow(5.2, 3) * (log10(x + y) / (x - (1 / (0.45 * sin(x - 8 * y)))))) + 0.5;

}

Откомпилируем файл zad3.cpp, выполним перестроение решения lab3 и выполнение проекта pr3, назначив его запускаемым проектом. Получим следующие результаты при заданных значениях исходных данных. (Риc. 8)

Рисунок 8 – Результаты проекта pr3.

Проведем следующий эксперимент: изменится ли результат выполнения проекта, если при определении функции func3 удалить знак & (операция взятия адреса) перед формальным параметром f: (Рис.9)

Рисунок 9 – Уведомления, возникающие при удалении знака & из функции func3

Соседние файлы в предмете Введение в информационные технологии