Вопрос Как пофиксить код?

Начинающий
Статус
Оффлайн
Регистрация
15 Апр 2020
Сообщения
60
Реакции[?]
9
Поинты[?]
0
Проблема состоит в том, что математические функции не работают.
И как починить это:
1607855749420.png
C++:
#include <iostream> // подкючаем библиотеку
#include <cmath> // подкючаем библиотеку
#include <math.h> // подкючаем библиотеку
using namespace std; // пишем для того чтобы потом не писать кучу раз
long double fact(int N)
{
    if (N < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (N == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля - единицу
    // Вычисляем факториал в цикле
    long double result = 1;
    for (int i = 1; i <= N; i++)  // создаём цикл
    {
        result *= i;
    }
    return result;
}
float a, b, c, d;
double kg, gr, cent, mgr, ton, cm, ml, met, km, de;// объявляем глобальные переменные
char action; // переменная для выбора действия
int main() // ну тут всё ясно - скажем начало программы
{
    setlocale(LC_ALL, "Russian"); // подключаем русский язык
    cout << "*Здравствуй, дорогой плользователь.\n Если хотите произвести действие, то введите: 1 \n Если хотите произвести перевод едениц, то введите: 2 \n\n Ваш выбор: ";
    cin >> b;
    if (b == 1)
    {
        system("cls");
        cout << "Вы выбрали цифру №1. Прошу, выберите действие, которое хотите произвести:\n\n";
        cout << "1. Сложение\n";
        cout << "2. Вычитание\n";
        cout << "3. Умножение\n";
        cout << "4. Деление\n";
        cout << "5. Возведение в степень\n";
        cout << "6. Корень\n";
        cout << "7. Логарифм\n";
        cout << "8. Факториал\n";
        cout << "9. Синус\n";
        cout << "10. Косинус\n";
        cout << "11. Квадратное уровнение\n";
        cout << "12. Проценты\n";
        cout << "13. Тангенс\n";
        cout << "14. Котангенс\n";
        cout << "Введите номер: \n";
        cin >> b;
        cin >> action; // читаем переменную для выбора действия
        switch (action) // оператор выбора для переменной
        {
        case 1: // если пользователь выбрал сложение

        {
            system("cls");
            cout << "Введите  числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a + b; // выводим ответ выражения
            break;
        }
        case 2: //  если пользователь выбрал вычитание
        {
            system("cls");
            cout << "Введите  числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a - b; // выводим ответ выражения
            break;
        }
        case 3: // если пользователь выбрал умножение
        {
            system("cls");
            cout << "Введите  числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a * b; // выводим ответ выражения
            break;
        }
        case 4: // если пользователь выбрал деление
        {
            cout << "Введите  числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;
        }
        case 5: // если пользователь выбрал степени
        {
            system("cls");
            system("cls");
            cout << "Введите число: \n";
            cin >> a;
            system("cls");
            cout << "Введите степень числа: \n";
            cin >> c;
            system("cls");
            d = pow(a, c);
            cout << "Ваш ответ: ";
            cout << d;
        }
        case 6: // если пользователь выбрал корень
        {
            system("cls");
            cout << "Введите число: \n";
            cin >> a;
            system("cls");
            sqrt(a);
            cout << "Ваш ответ: ";
            cout << a;
        }
        case 7: // если пользователь выбрал логарифмы
        {
            system("cls");
            cout << "Какой логарифм вам нужно найти: \n";
            cout << "1 - натуральный логарифм \n 2 - десятичный логарифм  \n";
            cin >> a;
            system("cls");
            if (a == 1)
            {
                cout << "Введите число: \n";
                cin >> a;
                log(a);
                cout << "Ваш ответ: ";
                cout << a;
            }
            if (a == 2)
            {
                cout << "Введите число: \n";
                cin >> a;
                log10(a);
                cout << "Ваш ответ: ";
                cout << a;
            }
        }
        case 8: // если пользователь выбрал факториал
        {
            int N;

            cout << "Введите число для вычисления факториала: ";
            cin >> N;
            cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала.

            break;
        }
        case 9: // если пользователь выбрал синус
        {
            cout << "Подсказка: вы выбрали синус, поэтому первое число это  катет, второе гипотенуза \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;
        }
        case 10: // если пользователь выбрал косинус
        {
            cout << "Подсказка: вы выбрали косинус, поэтому первое число это  катет, второе гипотенуза \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;
        }

        case 11: // если пользователь выбрал квадратное уровнение
            cout << "Подсказка: вы выбрали квадратное уровнение, поэтому пешите по формуле a^2+b+c \n";
            {

                double a, b, c, d, x1, x2; // объявляем локальные переменные
                cin >> a >> b >> c; // читаем переменные
                d = b * b - 4 * a * c; // находим дискриминант по формуле
                if (d > 0) // если дискриминант больше 0
                {
                    x1 = ((-b) + sqrt(d)) / (2 * a); // не ну это реально нужно объяснять?
                    x2 = ((-b) - sqrt(d)) / (2 * a); // тут ведь и дураку понятно
                    cout << "x1 = " << x1 << "\n"; // выводим x1
                    cout << "x2 = " << x2 << "\n"; // выводим X2
                }
                if (d == 0) // если d=0
                {
                    x1 = -(b / (2 * a)); // по формуле
                    cout << "x1 = x2 = " << x1 << "\n"; // выводим
                }
                if (d < 0) // честно, мне лень писать это
                    cout << "D < 0,  корней не существует"; // что это? Правильно - вывод
                break;
            }
        case 12: // если пользователь выбрал проценты
        {
            double a, b, c, d; //       
            cin >> a; //
            b = a / 100; //                                                                 
            cout << "Один процент: " << b << "\n" << "Введите кол-во процентов "; //         
            cin >> c; //                                                                     
            d = b * c; //                                                                   
            cout << c << " процентов ровны: " << d; //                                       
            break;
        }
        case 13:  // если пользователь выбрал тангенс
        {
            cout << "Подсказка: вы выбрали тангенс, поэтому первое число это малый катет, второе большой \n";
            double a, b;
            cin >> a >> b;
            cout << a / b;
        }
        case 14: // если пользователь выбрал коттангенс
        {
            cout << "Подсказка: вы выбрали коттангенс, поэтому первое число это большой катет, второе малый \n";
            double a, b;
            cin >> a >> b;
            cout << b / a;
        }
        
        }
    }
    if (b == 2) // если пользователь выбрал переводы единиц измерений
    {
        system("cls");
        cout << "1. Единицы измерения длины\n";
        cout << "2. Еденицы измерения массы\n\n";
        cout << "Введите номер: \n";
        cin >> b;
        if (b == 1)
        {
            system("cls");
            cout << "Ваш выбор: 1\n";
            cout << "Введите длинну в см:  \n";
            cin >> cm;
            cout << " \n";
            ml = cm * 10; // миллиграммы
            de = cm / 10; // дециметры
            met = cm / 100; // метры
            km = cm / 1000; // километры
            cout << "1. Миллиметры: " << ml << "\n" << "2. Дециметры: " << de << "\n" << "3. Метры: " << met << "\n" << "4. Километры: " << km << "\n";
        }
        if (b == 2)
        {
            system("cls");
            cout << "Ваш выбор: 2\n";
            cout << "Введите массу в кг:  \n";
            cin >> kg;
            cout << " \n";
            mgr = kg * 1000000; // миллиграммы
            gr = kg * 1000; // граммы
            cent = kg / 100; // центнер
            ton = kg / 1000; // тонна
            cout << "1. Миллиграммы: " << mgr << "\n" << "2. Граммы: " << gr << "\n" << "3. Центнеры: " << cent << "\n" << "4. Тонны: " << ton << "\n";

        }
    }
}
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну и куда ошибки ссылаются?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,603
Реакции[?]
517
Поинты[?]
2K
это варнинги, они толком ничего не значат если ты не хочешь очистить код в идеал
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
не правильно выразился, вот крч
C++:
#include <iostream> // подкючаем библиотеку
#include <cmath> // подкючаем библиотеку
#include <math.h> // подкючаем библиотеку

using namespace std; // пишем для того чтобы потом не писать кучу раз

long double fact(int N)
{
    if (N < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (N == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля - единицу
    // Вычисляем факториал в цикле
    long double result = 1;
    for (int i = 1; i <= N; i++)  // создаём цикл
    {
        result *= i;
    }
    return result;
}

float a, b, c, d;
double kg, gr, cent, mgr, ton, cm, ml, met, km, de;// объявляем глобальные переменные
int action; // переменная для выбора действия

int main() // ну тут всё ясно - скажем начало программы
{
    setlocale(LC_ALL, "Russian"); // подключаем русский язык
    cout << "*Здравствуй, дорогой плользователь.\n Если хотите произвести действие, то введите: 1 \n Если хотите произвести перевод едениц, то введите: 2 \n\n Ваш выбор: ";
    cin >> action;
    if (action == 1)
    {
        system("cls");
        cout << "Вы выбрали цифру №1. Прошу, выберите действие, которое хотите произвести:\n\n";
        cout << "1. Сложение\n";
        cout << "2. Вычитание\n";
        cout << "3. Умножение\n";
        cout << "4. Деление\n";
        cout << "5. Возведение в степень\n";
        cout << "6. Корень\n";
        cout << "7. Логарифм\n";
        cout << "8. Факториал\n";
        cout << "9. Синус\n";
        cout << "10. Косинус\n";
        cout << "11. Квадратное уравнение\n";
        cout << "12. Проценты\n";
        cout << "13. Тангенс\n";
        cout << "14. Котангенс\n";
        cout << "Введите номер: \n";
        cin >> action; // читаем переменную для выбора действия
        switch (action) // оператор выбора для переменной
        {
        case 1: // если пользователь выбрал сложение
            system("cls");
            cout << "Введите числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a + b; // выводим ответ выражения
            break;
        case 2: //  если пользователь выбрал вычитание
            system("cls");
            cout << "Введите числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a - b; // выводим ответ выражения
            break;
        case 3: // если пользователь выбрал умножение
            system("cls");
            cout << "Введите числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a * b; // выводим ответ выражения
            break;
        case 4: // если пользователь выбрал деление
            system("cls");
            cout << "Введите числа: \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;
        case 5: // если пользователь выбрал степени
            system("cls");
            cout << "Введите число: \n";
            cin >> a;
            cout << "Введите степень числа: \n";
            cin >> c;
            cout << pow(a, c);
            break;
        case 6: // если пользователь выбрал корень
            system("cls");
            cout << "Введите число: \n";
            cin >> a;
            cout << sqrt(a);
            break;
        case 7: // если пользователь выбрал логарифмы
            system("cls");
            cout << "Какой логарифм вам нужно найти: \n";
            cout << "1 - натуральный логарифм \n 2 - десятичный логарифм  \n";
            cin >> action;
            system("cls");
            if (a == 2)
            {
                cout << "Введите число: \n";
                cin >> a;
                cout << log10(a);
            }
            else
            {
                cout << "Введите число: \n";
                cin >> a;
                cout << log(a);;
            }
            break;
        case 8: // если пользователь выбрал факториал
            int N;
            cout << "Введите число для вычисления факториала: ";
            cin >> N;
            cout << "Факториал для числа " << N << " = " << fact(N); // fact(N) - функция для вычисления факториала.
            break;
        case 9: // если пользователь выбрал синус
            cout << "Подсказка: вы выбрали синус, поэтому первое число это катет, второе гипотенуза \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;
        case 10: // если пользователь выбрал косинус
            cout << "Подсказка: вы выбрали косинус, поэтому первое число это катет, второе гипотенуза \n";
            cin >> a >> b; // читаем переменные
            cout << a / b; // выводим ответ выражения
            break;

        case 11: // если пользователь выбрал квадратное уровнение
            cout << "Подсказка: вы выбрали квадратное уровнение, поэтому пешите по формуле a^2+b+c \n";
            double x1, x2; // объявляем локальные переменные
            cin >> a >> b >> c; // читаем переменные
            d = b * b - 4 * a * c; // находим дискриминант по формуле
            if (d > 0) // если дискриминант больше 0
            {
                x1 = ((-b) + sqrt(d)) / (2 * a); // не ну это реально нужно объяснять?
                x2 = ((-b) - sqrt(d)) / (2 * a); // тут ведь и дураку понятно
                cout << "x1 = " << x1 << "\n"; // выводим x1
                cout << "x2 = " << x2 << "\n"; // выводим X2
            }
            if (d == 0) // если d=0
            {
                x1 = -(b / (2 * a)); // по формуле
                cout << "x1 = x2 = " << x1 << "\n"; // выводим
            }
            if (d < 0) // честно, мне лень писать это
                cout << "D < 0, корней не существует"; // что это? Правильно - вывод
            break;
        case 12: // если пользователь выбрал проценты  
            cin >> a; //
            b = a / 100; //                                                                
            cout << "Один процент: " << b << "\n" << "Введите кол-во процентов "; //        
            cin >> c; //                                                                    
            d = b * c; //                                                                  
            cout << c << " процентов ровны: " << d; //  
            break;
        case 13:  // если пользователь выбрал тангенс
            cout << "Подсказка: вы выбрали тангенс, поэтому первое число это малый катет, второе большой \n";
            cin >> a >> b;
            cout << a / b;
            break;
        case 14: // если пользователь выбрал коттангенс
            cout << "Подсказка: вы выбрали коттангенс, поэтому первое число это большой катет, второе малый \n";
            cin >> a >> b;
            cout << b / a;
            break;
        }
    }
    else if (action == 2) // если пользователь выбрал переводы единиц измерений
    {
        system("cls");
        cout << "1. Единицы измерения длины\n";
        cout << "2. Еденицы измерения массы\n\n";
        cout << "Введите номер: \n";
        cin >> action;
        if (action == 1)
        {
            system("cls");
            cout << "Ваш выбор: 1\n";
            cout << "Введите длинну в см: \n";
            cin >> cm;
            cout << " \n";
            ml = cm * 10; // миллиграммы
            de = cm / 10; // дециметры
            met = cm / 100; // метры
            km = cm / 1000; // километры
            cout << "1. Миллиметры: " << ml << "\n" << "2. Дециметры: " << de << "\n" << "3. Метры: " << met << "\n" << "4. Километры: " << km << "\n";
        }
        if (action == 2)
        {
            system("cls");
            cout << "Ваш выбор: 2\n";
            cout << "Введите массу в кг:  \n";
            cin >> kg;
            cout << " \n";
            mgr = kg * 1000000; // миллиграммы
            gr = kg * 1000; // граммы
            cent = kg / 100; // центнер
            ton = kg / 1000; // тонна
            cout << "1. Миллиграммы: " << mgr << "\n" << "2. Граммы: " << gr << "\n" << "3. Центнеры: " << cent << "\n" << "4. Тонны: " << ton << "\n";
        }
    }
    system("pause");
    return 0;
}
Очень много ошибок на элементарном уровне. Код я подкорректировал, но есть еще над чем поработать. Вообще, советую для начала нормально поучить язык, а не браться сразу даже за такие легкие проекты
UPD: есть еще ошибки в математике, но об этом я промолчу
 
Сверху Снизу