С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269

Неведомая логическая ошибка (С++)

09.05.2011, 02:31. Показов 1331. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Хочу написать программу, которая умела бы считать значение выражения https://www.cyberforum.ru/cgi-bin/latex.cgi?(a + b)^n при заданных а, b и n (а и b могут быть не только цифрами, но и буквами, как в алгебре; https://www.cyberforum.ru/cgi-bin/latex.cgi?n > 0).

Начал нормально:
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
#include <conio.h>  //
                    //
#include <iostream> //
using namespace std;//
                    //
#include <math.h>   //
//////////////////////
 
int main ()
{
    cout << "                 "
         << "| Hi! Thank you for using this application! |" << endl;
    cout << "                 "
         << "|___________________________________________|\n\n\n";
    
    
    // объявляем переменные
    char a;      // первое слагаемое
    char b;      // второе слагаемое
    int n;       // показатель степени
    
    cout << "Enter the first integer: ";
    cin >> a;
    
    cout << "Enter the second integer: ";
    cin >> b;
    
    cout << "Enter the exponent: ";
    cin >> n;
    
    // проверяем значения и показываем готовое выражение
    if (b >= 0)
        cout << "\nYou entered: (" << a << " + " << b << ")^" << n;
    else 
        cout << "\nYou entered: (" << a << " - " << -b << ")^" << n;
 
       // любое число в нулевой степени = 1
    if (n == 0)
       cout << "\nResult is: 1";
       
    if (n < 0)
       cout << "\nError! Entered exponent is less than 0!";
     
 
    // тут ещё не написал
 
 
    getch();
    return 0;
}


Однако, при попытке запуска программы работает некорректно, если https://www.cyberforum.ru/cgi-bin/latex.cgi?a < 0:

Как решить данную проблему?
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2011, 02:31
Ответы с готовыми решениями:

логическая ошибка!!
1. Описать структуру с именем PRICE, содержащую следующие поля: - название товара; - название магазина, в котором продаётся товар;...

Логическая ошибка
Вот фрагмент int main() { using namespace std; int x = 1; double eps = 0.25; double result;

Логическая ошибка в цикле for
Привет всем! Написал небольшую программу для изучения цикла for. Проблема в том, что все компилируется, но ничего на экран не...

5
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
09.05.2011, 03:23
не ясно что значит "но и буквами, как в алгебре", но написав
C++
1
cin >> a;
вы просите считать один символ в переменную a. прога считывает '-' и работает корректно. char предназначен для символов и использование его для хранения чисел вызывает массу проблем, ухудшает переносимость кода и требует хорошего понимания работы стандартных функций.

Добавлено через 1 минуту
кстати, в википедии, и даже в школьном учебнике по математике, написано, что в отритцательную степень возводить можно.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.05.2011, 03:58
Цитата Сообщение от vortexx1 Посмотреть сообщение
Как решить данную проблему?
ясень пень если переменные чаровские по одному байту, а вы вводите -3 - 2 байта, вот он и проглатывает минус и тройку как а и б
1
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
09.05.2011, 17:10  [ТС]
Аааааа, понял.
А как сделать это по человечески?
А отрицательную степень решил пока не трогать, дай Бог с положительной разобраться.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.05.2011, 18:29
хм.. может просто воспользоваться функцией pow из math.h?
к примеру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    float a,b,n,result;
    cin >> a;
    cin >> b;
    cin >> n;
    result=pow((a+b), n);
    cout << result;
    return 0;
}
0
09.05.2011, 23:37

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение
может просто воспользоваться функцией pow из math.h?
я так понимаю, вы в процессе учёбы пишите исключительно уникальные, экономически целесообразные коды

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2011, 23:37
Помогаю со студенческими работами здесь

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

Логическая ошибка при рекурсии
Решил задачу в теме про рекурсию. Использован алгоритм Евклида. Условие: Напишите рекурсивную функцию вычисления наибольшего общего...

Логическая ошибка в коде (задача на рекурсию)
Задание: Вычеслить испоьзуя рекурсию z={a}^{b} + {c}^{b} при условии, что {x}^{n} =1 , если n=0; {x}^{n} =1/{x}^{-n} , если n&lt;0;...

Логическая ошибка инициализации двумерного массива
Если массив statistics инициализировать statistics = {0}; , то столбцы массива statistics (те, которых 2, т.е. statistics) после...

Логическая ошибка в выводе или формировании 2Dмассива
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;limits.h&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru