Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
8 / 6 / 3
Регистрация: 14.05.2020
Сообщений: 29

Проверьте код

13.02.2021, 22:19. Показов 2045. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Спасибо, что зашли)
Выполнял лабораторную работу, задача - реализовать вычисление функции с фотографии на C++
Я написал примерно следующее, обращаюсь к более опытным разработчикам с просьбой прокомментировать "корректность" кода - есть ли неудачные решения, что стоит изменить/переделать?
Заранее благодарю!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <string>
using namespace std;
 
double safeInputDouble(string prompt) { // Using <iostream>, <string>
    double result;
    string input;
    while (true) {
        try {
            std::cout << prompt;
            std::cin >> input;
            result = stod(input);
            return result; // If no exception was thrown, input is successful
        }
        catch (exception& e)
        {
            std::cin.clear();
            cout << "Input value is incorrect, try again" << endl;
        }
    }
    
}
 
double math_function(double argument_x, double argument_a, double argument_c) {
    const double coefficient = 7.1e-16;
 
    double result;
    // First part of y(x) calculating
    result = -pow(-log(abs(cos(argument_x))), 1.0 / 3) + coefficient;
    if (isinf(result)) {
        throw std::invalid_argument("log(0) doesn't exist at log(abs(cos(x)))");
    }
    // Second part
    result += argument_a / (argument_x + argument_c);
    if (isinf(result)) {
        throw std::invalid_argument("Attempt to divide by 0 at a/(x+c)");
    }
    // Last part
    result += 1.0 / tan(argument_x);
    if (isinf(result)) {
        throw std::invalid_argument("ctg(x) doesn't exist");
    }
 
    return result;
}
 
int main() {
    // Task 2, variant 8
    setlocale(LC_ALL, "rus");
    double y;
    double x = safeInputDouble("x = ");
    double a = safeInputDouble("a = ");
    double c = safeInputDouble("c = ");
    
    try {
        y = math_function(x, a, c);
    }
    catch (std::invalid_argument error) {
        cout << error.what();
        return 1;
    }
    
    printf("y(%.3lf) = %.3lf", x, y);
    return 0;
}
Миниатюры
Проверьте код  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2021, 22:19
Ответы с готовыми решениями:

Написать код для игры НИМ. проверьте пожалуйста тот ли это код
#include &lt;string&gt; using namespace std; int compChoose(int markers); int userChoose(int markers); int...

Проверьте код
Не очень хорошо пошли мне класcы, да и сейчас не уверен все хорошенько ли понял. Так вот было задание простое. Принять имена на вход,...

Проверьте код
# include &lt;stdio.h&gt; void main() { int a; printf(&quot;Vvedit a\n&quot;); scanf(&quot;%d&quot;, &amp;a); int b; printf(&quot;Vvedit b\n&quot;); ...

22
8 / 6 / 3
Регистрация: 14.05.2020
Сообщений: 29
14.02.2021, 02:11  [ТС]
Студворк — интернет-сервис помощи студентам
Видимо, вопросы пошли уже слишком глупые)
В любом случае, спасибо Вам, что потратили столько своего времени на помощь)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.02.2021, 02:28
зачем переименовали y на answer ? по условию задачи нужно найти значение y и вывод:
C++
1
cout << "y=" << y << "\n";
как отработает проверка на ввод 24u ?
0
фрилансер
 Аватар для Алексей1153
6495 / 5723 / 1133
Регистрация: 11.10.2019
Сообщений: 15,285
14.02.2021, 14:02
Цитата Сообщение от Yetty Посмотреть сообщение
присоединяюсь к вопросу
ну, это вроде бы очевидно

если это на самом деле так нужно (а чаще всего вообще не нужно), можно создать enum class и возвращать его

снаружи не нужно будет трястить за каждый вызов и оборачивать в try/catch. Но если вдруг нужно узнать ошибку - можно проверить возвращаемое значение

Добавлено через 4 минуты
к "замечаниям" (а на самом деле - к критическим ошибкам) я бы ещё добавил:

1) отсутствие инициализации переменных
2) отсутствие возврата из функции safeInputDouble в случае возникновения исключения


поправочка: при исключении там не нужен return, поскольку цикл бесконечный. Но всё равно некрасиво смотрится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2021, 14:02

Проверьте код
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; int main() { int a,b,res; char zn; scanf (&quot;%u %u&quot;,&amp;a,&amp;b);...

Проверьте код
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; int main() { long long n,z; ...

Проверьте код
Есть задача. Её нужно решить в консольном приложении. Написал к ней код, ну не вычисляет и всё тут... Скорее всего я нуб просто, проверьте....

Проверьте пожалуйста код
Делаю задания по описанию различных простеньких классов . Прошу проверить грамотность кода и наличие ошибок в нём. 1)Сложение ,...

Проверьте пожалуйста код (C++)
Вот я сам написал код(!)) Можете проверить: main() { printf(&quot;Content-type:text/html\n\n&quot;);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru