Форум программистов, компьютерный форум CyberForum.ru

в чем ошибка? - C++

Восстановить пароль Регистрация
 
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 13:31     в чем ошибка? #1
только начинаю на c++, хочу простой калькулятор для общего развития сделать, с возведением в степень ошибка. что не так? заранее спасибо.(ну и степень пока только положительная)
C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
int a,b,d,o,ap,i;
 
int main()
{
    setlocale(0,"");
    cout<<"ââåäèòå a: ";
    cin>>a;
    ap=a;
    cout<<endl;
    cout<<"âûáåðèòå äåéñòâèå:"<<endl;
    cout<<"1 - ñëîæåГ*ГЁГҐ"<<endl;
    cout<<"2 - âû÷èòГ*Г*ГЁГҐ"<<endl;
    cout<<"3 - ГіГ¬Г*îæåГ*ГЁГҐ"<<endl;
    cout<<"4 - äåëåГ*ГЁГҐ"<<endl;
    cout<<"5 - âîçâåäåГ*ГЁГҐ a Гў Г±ГІГҐГЇГҐГ*Гј b"<<endl;
    cin>>d;
    cout<<endl;
    cout<<"ââåäèòå b: ";
    cin>>b;
    cout<<endl;
    if (d==1){
              o=a+b;
              }
    if (d==2){
              o=a-b;
              }
    if (d==3){
              o=a*b;
              }
    if (d==4){
              o=a/b;
              }
    if (d==5){
              if (b==1) o=a;
              if (b!=1){
                        for (i=0; i=b; i=i+1)
                                   {
                                    a=ap*a;
                                   }
                        o=a;
                       }
              }
              
    cout<<"îòâåò: "<<o<<endl;
    cout<<endl;
              
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 13:31     в чем ошибка?
Посмотрите здесь:

В чем ошибка? C++
В чем ошибка? C++
В чем ошибка?.. C++
C++ a/b в чем ошибка ?
в чем ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.01.2014, 13:33     в чем ошибка? #2
C++
1
for (i=0; i=b; i=i+1)
i=b - это присваивание, а не сравнение
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 13:49  [ТС]     в чем ошибка? #3
а сейчас? не возводит.
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
#include <iostream>
 
using namespace std;
 
int a,b,d,o,ap,i;
 
int main()
{
    setlocale(0,"");
    cout<<"ââåäèòå a: ";
    cin>>a;
    ap=a;
    cout<<endl;
    cout<<"âûáåðèòå äåéñòâèå:"<<endl;
    cout<<"1 - ñëîæåГ*ГЁГҐ"<<endl;
    cout<<"2 - âû÷èòГ*Г*ГЁГҐ"<<endl;
    cout<<"3 - ГіГ¬Г*îæåГ*ГЁГҐ"<<endl;
    cout<<"4 - äåëåГ*ГЁГҐ"<<endl;
    cout<<"5 - âîçâåäåГ*ГЁГҐ a Гў Г±ГІГҐГЇГҐГ*Гј b"<<endl;
    cin>>d;
    cout<<endl;
    cout<<"ââåäèòå b: ";
    cin>>b;
    cout<<endl;
    if (d==1){
              o=a+b;
              }
    if (d==2){
              o=a-b;
              }
    if (d==3){
              o=a*b;
              }
    if (d==4){
              o=a/b;
              }
    if (d==5){
              if (b==1)o=a;
              if (b>1){
                        for (i=1; i==b; i=i+1)
                                   {
                                    a=ap*a;
                                   }
                        o=a;
                       }
              }
              
    cout<<"îòâåò: "<<o<<endl;
    cout<<endl;
              
    system("pause");
    return 0;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.01.2014, 13:49     в чем ошибка? #4
i<b
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 13:53  [ТС]     в чем ошибка? #5
спасибо. а почему i==b не работало?
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
27.01.2014, 13:54     в чем ошибка? #6
b_d, сколько раз должен выполняться цикл for? Как записать условие продолжения цикла?
Цитата Сообщение от b_d Посмотреть сообщение
C++
1
2
3
4
5
6
7
if (b!=1){
       for (i=0; i=b; i=i+1) /* error ! */
                {
                 a=ap*a;
                }
       o=a;
}
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:01     в чем ошибка? #7
b_d, алгоритм работы цикла for предельно прост
C++
1
2
3
for( начальное значение переменной (i=0(стоит одно равно, т.е. тут присваивание)); 
проверка условия(i<b(здесь проверяется выполняется ваше условие или нет, если оно не выполняется то цикл прекращается)(здесь также мб и == - это в отличии от первого случая сравнение, а не присваивание));
инкремент или дикремент переменной(i++(здесь происходит увеличение или уменьшение значения переменной))
примерно так
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 14:37  [ТС]     в чем ошибка? #8
подключил библиотеку cmath, почему то не работает pow(a,b), хотя sqrt(a), например, работает.
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:40     в чем ошибка? #9
b_d, покажите код, или можете посмотреть на прототип функции pow
C++
1
2
3
4
5
   double pow(      double basis,      double exponent );
long double pow( long double basis, long double exponent );
      float pow(       float basis,       float exponent );
     double pow(      double basis,         int exponent );
long double pow( long double basis,         int exponent );
т.е. функция не принимает значения типов int, int
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 14:43  [ТС]     в чем ошибка? #10
int не принимает...
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:50     в чем ошибка? #11
b_d, ну можно сделать что-то типо такого
C++
1
2
int basis; 
double pow(      (double) basis,         int exponent );
если мне память не изменяет конечно
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 14:54  [ТС]     в чем ошибка? #12
ааааа блин. float и double это вещественные? ну тогда понятно... просто я только что с паскаля соскачил... там real...

double разрядность 64 диапазон: 1. 7е-308.. 1. 7е+ 308 --------
float разрядность 32 диапазон: 3. 4е-038.. 3. 4е+ 038 ---------- что это значит?
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:58     в чем ошибка? #13
b_d, Больше байт занимает -> больше цифр влезает
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 15:05  [ТС]     в чем ошибка? #14
Цитата Сообщение от lukalexrus Посмотреть сообщение
Больше байт занимает -> больше цифр влезает
в double?
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 15:31     в чем ошибка? #15
b_d, http://www.cyberforum.ru/attachments/175680d1344791484t вместо тысячи слов
а вообще если интересно вот тема Float или Double: что и в каком случае использовать
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
27.01.2014, 15:44     в чем ошибка? #16
Цитата Сообщение от b_d Посмотреть сообщение
int не принимает...
как это? а что за ошибка и как вы эту строчку записали?

Добавлено через 2 минуты
Цитата Сообщение от b_d Посмотреть сообщение
в double?
double аналог real если не напутал (сужу по объему памяти)
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 15:58  [ТС]     в чем ошибка? #17
вот
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
double a,b,d,o;
 
int main()
{
    setlocale(0,"");
    cout<<"ââåäèòå a: ";
    cin>>a;
    cout<<endl;
    cout<<"âûáåðèòå äåéñòâèå:"<<endl;
    cout<<"1 - ñëîæåГ*ГЁГҐ"<<endl;
    cout<<"2 - âû÷èòГ*Г*ГЁГҐ"<<endl;
    cout<<"3 - ГіГ¬Г*îæåГ*ГЁГҐ"<<endl;
    cout<<"4 - äåëåГ*ГЁГҐ"<<endl;
    cout<<"5 - âîçâåäåГ*ГЁГҐ a Гў Г±ГІГҐГЇГҐГ*Гј b"<<endl;
    cout<<"6 - ГЄГўГ*äðГ*ГІГ*ûé êîðåГ*Гј ГЁГ§ a"<<endl;
    cin>>d;
    cout<<endl;
    
    if(d==6){o=sqrt(a);}
    
    if(d!=6)
    {
        cout<<"ââåäèòå b: ";
        cin>>b;
        cout<<endl;
         if (d==1){
                  o=a+b;
                  }
        if (d==2){
                  o=a-b;
                  }
        if (d==3){
                  o=a*b;
                  }
        if (d==4){
                  o=a/b;
                  }
        if (d==5){
                  o=pow(a,b);
                  }
    }
    cout<<"îòâåò: "<<o<<endl;
    cout<<endl;
              
    system("pause");
    return 0;
}
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
27.01.2014, 17:59     в чем ошибка? #18
Я компилировал на VC2012 работает!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 19:53     в чем ошибка?
Еще ссылки по теме:

В чем ошибка? C++
C++ В чем ошибка?
C++ В чем ошибка?

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

Или воспользуйтесь поиском по форуму:
b_d
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 105
27.01.2014, 19:53  [ТС]     в чем ошибка? #19
Цитата Сообщение от mustimur Посмотреть сообщение
Я компилировал на VC2012 работает!
это же моя программа, она не может не работать!

я на dev c++ фигачу.

в паскале модуль graphabc есть, но там много багов и неудобств, я там графический калькулятор делал, но не доделал(в личку мож кинуть кому, если хотите), вот хочу на c++ тоже графику освоить...
Yandex
Объявления
27.01.2014, 19:53     в чем ошибка?
Ответ Создать тему
Опции темы

Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru