Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проблема при вызове функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Символьные строки и функции http://www.cyberforum.ru/cpp-beginners/thread377393.html
Помогите написать функцию Right(s,l) для выравнивание строки s по правому краю до длины l.
C++ Определить имеет ли система решения,если имеет то их найти Помогите решить задачи с контр по программированию 1-3 с++ 1. Определить имеет ли система решения,если имеет то их найти a*x+b*y=c d*x*x+e*y*y=f 2. Поступает последовательность,0-конец... http://www.cyberforum.ru/cpp-beginners/thread377392.html
C++ Сортировка ассоциативного контейнера!
В классе есть поля: название, цена и количество. Нужно записать данные в ассоциативный контейнер, и нужно один раз отсортировать и вывести по убыванию цены, а затем отсортировать и вывести по...
Сдвинуть циклически элементы одномерного массива на k позиций влево C++
Тема и есть условие задачи... Сам же я застопорился на написании алгоритма сдвига :- #include <iostream.h> #include <math.h> int main() { int a; int i, n; cout << "Vvedite kol-vo...
C++ Множественное наследование в языке С++ http://www.cyberforum.ru/cpp-beginners/thread377364.html
#include <iostream.h> #include <stdlib.h> #include <conio.h> class D2{ int a; public: D2() { }; D2(int x) { a=x; } void show_D2() { cout <<"D2= "<< a << "\n"; }
C++ Числа с плавающей запятой есть программа которая подсчитывает сумму чисел, введенных с командной строки. к примеру С:\> test.exe 1 2 3 <ENTER> что бы просуммировать эти числа необходимо преобразовать из char в long,... подробнее

Показать сообщение отдельно
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1

Проблема при вызове функции - C++

03.11.2011, 21:36. Просмотров 1618. Ответов 31
Метки (Все метки)

Написал для себя простенькую напоминалку, выводящую указанное сообщение через определённый промежуток времени(ну там, "отойди от компа, глаза разомни"))) и тп). И всё бы работает нормально, но вот как только происходит вызов функции change(), для изменения начальных параметров, происходит что-то странное - ничего не считывается с клавиатуры и консоль будто подвисает...
В общем прошу совета, что нужно исправить чтобы избежать данного бага?
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
// timet.cpp : Defines the entry point for the console application.
//
 
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <conio.h>
 
using namespace std;
 
wchar_t text[10001];
char ch1, ch2, ch3, ch4;
 
unsigned long n;
int a, b;
 
int change();
 
int main()
{
    locale::global(locale("russian_Russia.866"));
 
    wcout << L"------------------------------------------" << endl;
    wcout << L"|Программа для автоматических напоминаний|" << endl;
    wcout << L"------------------------------------------" << endl << endl;
 
    do
    {
        wcout << L"Введите ваше напоминание(максимальная длина 10000 символов!):" << endl;
        wcin.getline(text, 10001);
        cout << endl;
        wcout << L"Если вы правильно ввели напоминание нижмите \"1\",\nдля повторного ввода - любую другую клавишу." << endl;
        ch1 = _getch();
        system("cls");
    }
    while (ch1 != '1');
 
    do
    {
        system("cls");
        wcout << L"Ввод частоты напоминаний: \n1)В секундах\n2)В минутах\n3)В часах" << endl;
        ch2 = _getch();
    }
    while (ch2 != '1' && ch2 != '2' && ch2 != '3');
 
    wcout << endl;
 
    switch (ch2)
    {
    case '1': 
        {
            wcout << L"Выбран пункт \"1\" - введите интервал в секундах: ";
            cin >> n;
            n *= 1000;
            break;
        }
    case '2': 
        {
            wcout << L"Выбран пункт \"2\" - введите интервал в минутах: ";
            cin >> n;
            n *= 60000;
            break;
        }
    case '3': 
        {
            wcout << L"Выбран пункт \"3\" - введитеи интервал в часах: ";
            cin >> n;
            n *= 3600000;
            break;
        }
    }
 
    wcout << L"Ok!;)";
    Sleep(3000);
 
    FreeConsole();
 
    do
    {
        Sleep(n);
        a = MessageBoxW(NULL, text, L"Напоминание!", MB_RETRYCANCEL|MB_ICONWARNING|MB_DEFBUTTON1 );
        if (a != 2) b = change();
    }
    while(a != 2);
 
return 0;
}
 
int change()
{
 
    ch1 = ch2 = ch3 = ch4 = 0;
    n = 0;
    a = b = 0;
 
    AllocConsole();
    do
    {
        system("cls");
        wcout << L"Продолжить напоминанать \"" << text << "\"?" << endl;
        wcout << L"1) Да, продолжить." << endl;
        wcout << L"2) Нет, сменить напоминание и интервал." << endl;
        wcout << L"3) Нет, завершить программу." << endl;
    } 
    while (ch4 != '1' && ch4 != '2' && ch4 != '3');
    switch (ch4)
    {
    case '1': 
        {
            wcout << L"Выбран пункт \"1\" - продолжаю... ";
            Sleep(2000);
            return 1;
            break;
        }
    case '2': 
        {
            wcout << L"Выбран пункт \"2\" - смена напоминания и интервала его отображения. ";
            do
            {
                wcout << L"Введите ваше напоминание(максимальная длина 10000 символов!):" << endl;
                wcin.getline(text, 10001);
                cout << endl;
                wcout << L"Если вы правильно ввели напоминание нижмите \"д\",\nдля повторного ввода - любую другую клавишу." << endl;
                ch1 = _getch();
                system("cls");
            }
            while (ch1 != '1');
 
            do
            {
                system("cls");
                wcout << L"Ввод частоты напоминаний: \nа)В секундах\nб)В минутах\nв)В часах" << endl;
                ch2 = _getch();
            }
            while (ch2 != '1' && ch2 != '2' && ch2 != '3');
            
            wcout << endl;
            
            switch (ch2)
            {
            case '1': 
                {
                    wcout << L"Выбран пункт \"1\" - введите интервал в секундах: ";
                    cin >> n;
                    n *= 1000;
                    break;
                }
            case '2': 
                {
                    wcout << L"Выбран пункт \"2\" - введите интервал в минутах: ";
                    cin >> n;
                    n *= 60000;
                    break;
                }
            case '3': 
                {
                    wcout << L"Выбран пункт \"3\" - введитеи интервал в часах: ";
                    cin >> n;
                    n *= 3600000;
                    break;
                }
            }
            break;
            return 2;
        }
    case '3': 
        {
            exit(0);
            break;
        }
    }
    return 0;
    FreeConsole();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.