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

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

Войти
Регистрация
Восстановить пароль
 
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
#1

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

22.03.2013, 22:25. Просмотров 279. Ответов 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++
Если ввожу свою фамилию &quot;Баринов&quot; - ошибку не выдает, если ввожу &quot;Баринов Филипп&quot; - начинается куча сообщений в консоли. Конкретно проблема...

Подскажите как передать в функцию данные массива структур, которые я ввожу с клавиатуры? - C++
Подскажите как передать в функцию данные массива структур, которые я ввожу с клавиатуры?

нужно написать функцию, которая будет считать квадратное уравнение, данные с клавиатуры ввожу - C++
#include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using std::cout; using std::endl; using std::cin; int a, b, c,...

Как исправить ошибку. Ввожу следующие данные Xin=1 Xout=10 шаг 2 a=1 b=0 c=2 по идеи должен считать по F=x-a/x-c а он считате по F=x/c - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;locale&gt; #include &lt;conio.h&gt; using...

Дан массив символов. Посчитать, сколько раз встречаются данные символы - C++
Определить сколько раз встречаются * : ; такие символы

Ввожу число ,командная строка пропадает - C++
// Эта программа преобразует галлоны в литры. #include&lt;iostream&gt; using namespace std; int main() { int gallons, liters; ...

я ввожу любое число он его конвертирвует в бинарное - C++
я ввожу любое число он его конвертирвует в бинарное

запустив прогу я ввожу число нажимаю энтер и прога закрывается - C++
#include &lt;iostream&gt; using namespace std; int main() { double f; double m; int counter; counter=0; for (f=1.0; f&lt;=...

Ввожу очень маленькое число в консоль и в итоге ничего не считает - C++
Ввожу число е=0.00000001 дальше должен идти подсчет суммы. Но ничего не происходит. Когда я вводил числа большие е (там на один ноль меньше...

Текст выводится не в том виде, в котором я его ввожу в консоль? - C++
#pragma once #include &lt;iostream&gt; using namespace std; namespace User { static class Console { public: ...


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

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

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