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

Много раз ввожу данные - C++

Восстановить пароль Регистрация
 
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:25     Много раз ввожу данные #1
Есть такой кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void input_arr(int* arr,int size)
{
    system("cls");
    cout<<"Введiть число у двiйковiй системi числення:"<<endl;
    int tmp;
    int j = 0;
    for(int i = 0;i < size ; i++){
        tmp =  _getch() - '0';
        cout<<tmp;
        if(tmp < 0 || tmp > 1){
            char* s = "Некоректне число!";
            throw s;
        } else {
            arr[j++] = tmp;
        }
    }
 
    system("pause>0");
}
Вопрос вот такой: здесь происходит посимвольно ввод данных, когда мы вводим число программа проверяет его на корректность, если оно правильное заносит в массив, если нет программа завершается, но почему-то когда я ввожу последний элемент программа ждет ввод еще одного, что это может быть ?
Вот весь код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
namespace my{
    int pow(int n,int x)
    {
        if(n == 0) return 0;
        if(x == 0) return 1;
        int tmp = n;
        for(int i = 1; i < x; ++i)
            tmp *= n;
        return tmp;
    }
}
 
int menu();
void input_arr(int*,int);
void binary_to_ten(int*,int);
void print_array(int*,int);
 
int main()
{
    try
    {
        setlocale(0,"");
        system("color 0F");
        int* binary_array;
        try{
            binary_array = new int[0];
        }
        catch(bad_alloc){
            cout<<"Невдалось видiлити память!";
            system("pause>0");
            return 1;
        }
        int size;
 
        while(true){
            int key = menu();
            try{
                if(key == 0){
                    delete [] binary_array; 
                    binary_array = new int[8]; 
                    size = 8;
                    input_arr(binary_array,size);
                    binary_to_ten(binary_array,size);
                }
    
                if(key == 1){
                    delete [] binary_array; 
                    binary_array = new int[16]; 
                    size = 16;
                    input_arr(binary_array,size);
                    binary_to_ten(binary_array,size);
                }
    
                if(key == 2){
                    delete [] binary_array; 
                    binary_array = new int[32]; 
                    size = 32;
                    input_arr(binary_array,size);
                    binary_to_ten(binary_array,size);
                }
            }
            catch(bad_alloc){
                cout<<"Невдалось видiлити память!";
                system("pause>0");
                return 1;
            }
            catch(const char* s){
                system("cls");
                cout<<s;
                cout<<endl<<"Повторiть ввiд знову!";
                system("pause>0");
            }   
            
            if(key == 3) break;
        
        }
        delete [] binary_array;
    }
    catch(...){
        cout<<"Невідоме виключення!"<<endl<<"Програма завершує роботу!";
        system("pause>0");
        return 1;
    }
    return 0;
}
 
void input_arr(int* arr,int size)
{
    system("cls");
    cout<<"Введiть число у двiйковiй системi числення:"<<endl;
    int tmp;
    int j = 0;
    for(int i = 0;i < size ; i++){
        tmp =  _getch() - '0';
        cout<<tmp;
        if(tmp < 0 || tmp > 1){
            char* s = "Некоректне число!";
            throw s;
        } else {
            arr[j++] = tmp;
        }
    }
 
    system("pause>0");
}
 
int menu()
{
    int code;
    int key = 0;
    do{
 
        system("cls");
        key = (key + 4)%4;
 
        if(key == 0) cout<<"-> Ввести число у однобайтовому форматi."<<endl;
        else cout<<"Ввести число у однобайтовому форматi."<<endl;
 
        if(key == 1) cout<<"-> Ввести число у двобайтовому форматi."<<endl;
        else cout<<"Ввести число у двобайтовому форматi."<<endl;
 
        if(key == 2) cout<<"-> Ввести число у чотирьохбайтовому форматi."<<endl;
        else cout<<"Ввести число у чотирьохбайтовому форматi."<<endl;
 
        if(key == 3) cout<<"-> Вихiд."<<endl;
        else cout<<"Вихiд."<<endl;
 
        code = getch();
 
        if(code == 80) key++;
        if(code == 72) key--;
 
    }while(code != 13);
 
    return key;
}
 
void binary_to_ten(int* binary_code,int size)
{
    system("cls");
    unsigned long long int sum = 0;
    for(int i = 0; i < size; ++i){
        sum += my::pow(binary_code[i]*2,size-i-1);
    }
    cout<<"Число у двiйковiй с.с: "; print_array(binary_code,size);
    cout<<endl<<"Число у десятковiй с.с: "<<sum<<endl;
    system("pause>0");
}
 
void print_array(int* arr,int size)
{
    for(int i = 0;i < size; i++)
        cout<<arr[i];
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 22:25     Много раз ввожу данные
Посмотрите здесь:

я ввожу любое число он его конвертирвует в бинарное C++
Ввожу число ,командная строка пропадает C++
Когда нажимаю добавить элемент, и уже его ввожу, то вылетает ошибка и закрываеться программа C++
C++ Не работает(Запускаю программу,ввожу числа,а среднее арифметическое не считает,а просто проскакивает экран)
C++ Как исправить ошибку. Ввожу следующие данные Xin=1 Xout=10 шаг 2 a=1 b=0 c=2 по идеи должен считать по F=x-a/x-c а он считате по F=x/c
запустив прогу я ввожу число нажимаю энтер и прога закрывается C++
C++ Дан массив символов. Посчитать, сколько раз встречаются данные символы
C++ Текст выводится не в том виде, в котором я его ввожу в консоль?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.03.2013, 23:06     Много раз ввожу данные #2
Уберите:
C++
1
system("pause>0");
Yandex
Объявления
22.03.2013, 23:06     Много раз ввожу данные
Ответ Создать тему
Опции темы

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