Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 27

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

18.06.2014, 13:45. Показов 1020. Ответов 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();
 
    
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2014, 13:45
Ответы с готовыми решениями:

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

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

Выбор: Как сделать, чтобы switch выполнялся только при выборе от 1 до 3-х?
Добрый вечер! Как сделать чтобы при выборе от 1 до 3-х, switch выполнялся, а в любых других случаях он не выполнялся? #include...

2
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
18.06.2014, 13:56
bittraid, если в консоли само выписывается, скорее всего косяк с буфером. Используйте
C++
1
cin.ignore(cin.rdbuf()->in_avail());
Перед операциями ввода.
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
18.06.2014, 13:58
на курсач не тянет. Максимум лаба на первом курсе... и то с натягом. Скорее школьная домашка!
А вообще, городить один класс для двух чисел с дублированием всех операций с ними... зачем?
Вообще, тут не особо-то и классы нужны, хотя если их и вводить сюда, то нужен один класс number, хранящий инфу об одном числе и методы перевода его в различные системы.
А уже класс calc должен оперировать разными экземплярами этих number!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2014, 13:58
Помогаю со студенческими работами здесь

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

TabControl: выполнение определенной операции при выборе второй вкладки
Есть вкладки TabControl, мне нужно чтоб например при нажатие второй вкладки (tabControl1.TabPages) выполнялись некоторые операции.......

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

Арифметические операции в калькуляторе
Всем привет) Помогите прописать арифметические операции в калькуляторе по следующему принципу: Для +, -, *, / 1) преобразовать...

Как выполнять операции в калькуляторе?
Помогите пожалуйста! Нужно написать калькулятор в приложении windows forms, вся граф оболочка есть вопрос в том, как сделать чтобы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru