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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bittraid
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 21
#1

косяк при выборе операции через switch в калькуляторе - C++

18.06.2014, 13:45. Просмотров 264. Ответов 2
Метки нет (Все метки)

всем доброго времени суток. пишу тут курсач и столкнулся со следующей проблемой: в консоли само по себе вписывается значение 0 и программа завершается. думаю что кося где-то в функции vich();
заранее благодарен;

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#pragma once
 
#include <iomanip> //Подключение манипуляторов ввода-вывода
#include <stdio.h>//Подключение библиотеки стандартного ввода-вывода; 
#include <conio.h>//Подключение библиотеки консольного ввода-вывода; 
#include <iostream>//Подключение библиотеки потокового ввода-вывода; 
#include <math.h>
 
using namespace std;
 
char c;//вспомогательные переменные выбора действия программы
 
class calc//класс калькулятора
{
private:
    int ch2_1[10];//первое число в двоичной системе
    int ch2_2[10];//второе число в двоичной системе
    int ch10_1;//первое число в десятичной
    int ch10_2;//второе число в десятичной
    long otvet2;//ответ в двоичной
    int otvet10;//ответ в десятичной
public:
    void init();//функция ввода чисел в двоичной системе счисления
    void f_2_to_10();//функция перевода из двоичной в десятичную систему счисления
    void f_10_to_2();//функция перевода из десятичной в двоичную систему
    void vich();//функция проведения операций
    void print();//функция вывода
 
};
 
void calc::init()//функция ввода чисел в двоичном виде
{
    int i;
    cout << "Введите первое число: ";
    for ( i = 0; i<10; i++)
        cin >> ch2_1[i];//вводим первое число;
    cout<<endl;
 
    cout << "Введите второе число: ";
    for ( i = 0; i<10; i++)
        cin >> ch2_2[i];//вводим второе число;
    cout<<endl;
}
 
void calc::f_2_to_10()//функция превода из двоичной в десятичную систему счисления
{
    int i;
    /*переводим первое число в двоичную систему*/
    ch10_1 = 0;
    for ( i = 9; i >= 0; i-- )
    {
        if ( ch2_1[i] == 1)
            ch10_1 += pow( 2.0, (9-i));
    }
 
 
    /*переводим второе число в двоичную систему*/
    ch10_2 = 0;
    for ( i = 9; i >= 0; i-- )
    {
        if ( ch2_2[i] == 1)
            ch10_2 += pow( 2.0, (9-i));
    }
}
 
void calc::f_10_to_2()//функция перевода из десятичной в двоичную систему счисления
{
    int i, mod;
    otvet2 = 0;
 
    /*цикл перевода*/
    for ( i = 0; otvet10 > 0; i++)
    {
        mod = otvet10 % 2;
        otvet10 = (otvet10 - mod) / 2;
        otvet2 += mod * pow(10.0, i);
    }
}
 
void calc::vich()//функция проведения операций
{
    //блок выбора операции
 
    cout << "Выберитe операцию:\n";
    cout << "'+' - сложение\n";
    cout << "'-' - вычитание\n";
    cout << "'*' - умножение\n";
    cout << "'/' - деление\n";
    cout << "Ваш выбор: ";
    
    //блок вычисления операции
    c = getchar();
    switch(c)
    {
    case '+':
        otvet10 = ch10_1 + ch10_2;
        break;
    case '-':
        otvet10 = ch10_1 - ch10_2;
        break;
    case '*':
        otvet10 = ch10_1 * ch10_2;
        break;
    case '/':
        otvet10 = ch10_1 / ch10_2;
        break;
    
    }
 
}
 
void calc::print()//функция вывода результата
{
    cout << '=' << otvet2 << endl;
}
 
void main()
{
    calc a1;
    setlocale(LC_ALL, "Russian");//подключение русского языка в консоли;
 
    /*последовательный вызов функций, необходимых для выполнения операций*/
    a1.init();
    a1.f_2_to_10();
    a1.vich();
    a1.f_10_to_2();
    a1.print();
 
    
 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 13:45     косяк при выборе операции через switch в калькуляторе
Посмотрите здесь:

косяк вызова функции через switch case - C++
! кода по моим меркам много, если решитесь помочь, запаситесь терпением))) Итак. Имеется зародыш курсовой - игры пятнашки. делал в...

Как через оператор switch производить битовые операции? - C++
Здравствуйте, В общем несколько вопросов.. Вот к примеру, нужно сделать программу, где надо будет с клавиатуры ввести 2а целых числа...

Почему при выборе switch у меня не работает вывод дерева на экран?! - C++
////////////////////////////////////////////////////// // // // Ñîçäàòü ïðîãðàììó äëÿ...

Объясните где я косяк (switch case + char) - C++
Доброе время суток! Имеется: for (unsigned int i=0; i&lt;v.size(); ++i) { cout &lt;&lt;&quot;# &quot;&lt;&lt;v.number &lt;&lt;&quot; \t&quot; ...

C++5 числами из массива при выборе операции показывает результат. (сумма, произведение . элементов массива) - C++
#include &lt;iostream&gt; using namespace std; void main() { int m, i; char type; double res; cout &lt;&lt; &quot;Input 5 numbers&quot; &lt;&lt;...

при вычислении выражении - одно значение,а в калькуляторе другое! - C++
есть,самое простое выражение: 21/5*3 но на калькуляторе будет - 21/5=4.2(логично?) и умноженное 4.2*3=12.6(и не поспоришь!) так вот -...

через switch - C++
Даны 2 числа определяющие невисокосный год, D(день) и M(месяц). Определите D и М следующего за этой датой.

Сделать через Switch - C++
Написать программу, которая ждет ввода первой буквы названия месяца. В зависимости от этого определяет квартал. Учесть: Июнь, Июль – разные...

Переделать через switch - C++
Вот уравнение: y = na+(n-1)a+...+a или по другому : ((n+1)/2*n*a) Вот мой код: И надо бы его переделать через switch; А я вот...

Стек через case в switch - C++
Здравствуйте. Я хочу чтобы при нажатии на &quot;2&quot; у меня выводился на экран мой стек. Но, как обычно, ошибка, я не знаю в чем проблема,...

Как переделать через switch? - C++
Задача 2. Вывести на экран сообщение в зависимости от введенного значения оценки (по десятибалльной системе), например: оценки 1, 2 -...

Меню в консоли (через switch-case) - C++
программа меню ресторана, работать должна так: открывается все меню а официант выбирает блюда из заказа, а в конце вывести весь заказ. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FraidZZ
Ex-Member
3897 / 1523 / 229
Регистрация: 06.01.2013
Сообщений: 4,050
Завершенные тесты: 1
18.06.2014, 13:56     косяк при выборе операции через switch в калькуляторе #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
bittraid, если в консоли само выписывается, скорее всего косяк с буфером. Используйте
C++
1
cin.ignore(cin.rdbuf()->in_avail());
Перед операциями ввода.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
18.06.2014, 13:58     косяк при выборе операции через switch в калькуляторе #3
на курсач не тянет. Максимум лаба на первом курсе... и то с натягом. Скорее школьная домашка!
А вообще, городить один класс для двух чисел с дублированием всех операций с ними... зачем?
Вообще, тут не особо-то и классы нужны, хотя если их и вводить сюда, то нужен один класс number, хранящий инфу об одном числе и методы перевода его в различные системы.
А уже класс calc должен оперировать разными экземплярами этих number!
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru