Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 20
1

_getche()

04.08.2017, 17:13. Показов 2273. Ответов 4
Метки нет (Все метки)

Всем привет, в общем есть программа (она не закончена):
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char symbol;
    int forth_num=0, third_num=0, second_num=0, first_num=0, i = 0;
    cout << "Enter the first operand, action and the second operand: ";
    symbol = '0';
    while (symbol!='\r')
    {
        switch (symbol)
        {
            case '+':
                {
                    symbol = '0';
                    
                    switch(symbol)
                        {
                            case '/':
                                {
                                    while (symbol != '\r')
                                        {
                                            forth_num = forth_num * 10 + (symbol - 48);
                                            symbol = getche();
                                        }
                                }
 
                            case '/r':
                                {
 
                                }
 
                            default:
                                {
                                    third_num = third_num * 10 + (symbol - 48);
                                    symbol = getche();                                  
                                }
                        }
                    
                };
                
            case '-': 
                {
 
                };
 
            case '*': 
                {
            
                };
 
            case '/': 
                {
                    i++;
                    symbol = '0';
                    switch(i)
                        {   
                            case 1:
                                {
                                    while (symbol != '+'&&'-'&&'/'&&'*')
                                        {
                                            second_num = second_num * 10 + (symbol - 48);
                                            symbol = getche();
                                        }
                                }
                            case 2:
                                {
                                switch (symbol)
                                    {
 
                                        case '/': 
                                            {
                                                while (symbol != '\r')
                                                    {
                                                        forth_num = forth_num * 10 + (symbol - 48);
                                                        symbol = getche();
                                                    }
                                                cout << "Result is: " << (first_num*forth_num) / (second_num*third_num);
                                            }
 
                                        default:
                                            {
                                            while (symbol != '/')
                                                {
                                                    third_num = third_num * 10 + (symbol - 48);
                                                    symbol = getche();
                                                }
                                            }
 
                                    }
                                }
                        }
 
            
                };
 
            default:
                {
                    first_num = first_num * 10 + (symbol-48);
                    symbol = getche();
                }
        }
    }
    return 0;
}
Когда я пытаюсь проверить её работу при помощи пошагового дебагинга, то на этапе getche() меня перебрасывает в getch.cpp где после n-го количества шагов у меня выводится запрос:
_getche()

Этот файл у себя на пк я найти не смог. Поиск в интернете также мне не помог.
Если же нажать отмену то несколько раз выводится следующее окно:
_getche()

Затем после длительного зажатия клавиши F11 выводится следующий запрос:
_getche()

Здесь также в случае отмены несколько раз выводится следующее окно:
_getche()

Заметил также что в области call stack у некоторых строк в области Language выводится Unknown:
_getche()

И собственно если дальше продолжить жать F11, то в какой-то момент выводится консоль в которую я должен вводить значения, но при этом она не реагирует на нажатия любых клавиш.

В общем мне нужно объяснить где найти пропавшие (или вовсе не установленные, так как два раза переустанавливал студию с разными настройками) файлы. И если человеку начинающему в программировании (мне) возможно объяснить почему в области call stack у некоторых строк в области Language выводится Unknown, объяснить это или же дать источник в котором можно это понять.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2017, 17:13
Ответы с готовыми решениями:

Ошибка с getche();
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct...

Использование метода getche()
system(&quot;pause&quot;); return 0; }

Функция getche() не выполняется
В MVS 2015 не выполняется ф-ция getche() (в коде строка 52) по этому цикл выполняется всего один...

Getche() не возвращает введенный символ
в 13 строке не принимает getche #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std;...

4
853 / 781 / 261
Регистрация: 27.07.2012
Сообщений: 2,195
04.08.2017, 17:20 2
Лучший ответ Сообщение было отмечено IveningInnertia как решение

Решение

Цитата Сообщение от IveningInnertia Посмотреть сообщение
В общем мне нужно объяснить где найти пропавшие (или вовсе не установленные, так как два раза переустанавливал студию с разными настройками) файлы.
Исходников к этим функциям нет. Они уже скомпилированы в библиотеки (статитческие или динамические), поэтому залезть в них в дебаге не получится. Отладчик как раз спрашивает, куда ему далее переходить по коду, но этого кода (исходного) нет.

А вообще, зачем заходить в библиотечные функции? Обходите их без захода внутрь.

Цитата Сообщение от IveningInnertia Посмотреть сообщение
почему в области call stack у некоторых строк в области Language выводится Unknown
Как раз те библиотечные функции, что уже скомпилированы. На каком языке они были написаны, то отладчику неведомо.
0
1489 / 783 / 172
Регистрация: 05.12.2015
Сообщений: 2,355
04.08.2017, 17:22 3
Лучший ответ Сообщение было отмечено IveningInnertia как решение

Решение

Цитата Сообщение от IveningInnertia Посмотреть сообщение
И собственно если дальше продолжить жать F11
Жмите F10.
0
Форумчанин
Эксперт CЭксперт С++
8169 / 5017 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
04.08.2017, 17:57 4
Лучший ответ Сообщение было отмечено IveningInnertia как решение

Решение

IveningInnertia, не заходите внутрь этих функций, идите на следующий шаг в дебаге
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 20
04.08.2017, 17:58  [ТС] 5
Всем спасибо за ваши ответы и помощь. Помогло.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2017, 17:58

Преобразование в число с помощью getche
программа должна выводить результат, который я ввожу с клавиатуры, но почему то она его не выводит...

Ввод выражения с помощью getche()
Доброго времени суток, программеры! Есть вопрос: вот хочу что бы когда пользователь вписывал...

Ошибка 1 error C4996: 'getche': The POSIX name for this item is deprecated
Ошибка 1 error C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO...

Как заменить getche() на OSX для данной программы
Здравствуйте! Начал изучать с++ по учебнику Лафоре и столкнулся с проблемой. Очень много в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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