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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ из с++ builder в с++ http://www.cyberforum.ru/cpp-beginners/thread815923.html
Здравствуйте. У меня написан класс и программа в С++ builder, нужно переписать в С++ (по стандарту С++). Если переписать класс, то саму программу тоже нужно будет переписать? Помогите. Кто готов переписать за денежное вознаграждение пишите в личку или аську(409911316) желательно сразу укажите стоимость. вот код класса #pragma package(smart_init) #pragma resource "*.dfm" class Ttime { ...
C++ Пояснить конструктор Вот такая вешчь в конструкторе, а что она означает и как работает? TClass::TClass(float x) { TClass::x=x; } http://www.cyberforum.ru/cpp-beginners/thread815917.html
Массив: сформировать массивы T и S соответственно из элементов матриц W и Z, больших заданного числа Р и M. C++
Задать значения целочисленным элементам матриц W = {wij} и Z = {zij}, где i = 0, 1, 2; j = 0, 1, 2,…, 7 и сформировать массивы T и S соответственно из элементов матриц W и Z, больших заданного числа Р и M. #include <iostream> #include <clocale> using namespace std; void viborka(int&,int); int main() { int mas,max1,max2,i,j; setlocale (LC_ALL, "russian");
C++ Составить программу расчета значений полинома
Составить программу расчета значений полинома P(x)=a0+a1x+a2x^2+...+anx^n где n – порядок полинома, коэффициенты ai и значение x задаются вводом с клавиатуры.
C++ Запуск .ехе файлов http://www.cyberforum.ru/cpp-beginners/thread815874.html
Изучаю C++ полгода.Программирую на Visual Studio 2010. Windows XP,7.Недавно познакомился с потоковым вводом/выводом, и задался вопросом, можно ли запустить удаленный файл .ехе (путь я знаю),при помощи программы на С++?Если можно, то пожалуйста приведите пример кода.
C++ Класс дробь состоит из 2 целых полей Помогите пожалуйста решить задачу. Начало записал, а как дальше делать не знаю!!!! Класс дробь состоит из 2 целых полей, числителя и знаменателя. Реализовать методы выделения дробной части (9/4 – >0,25 вещественный результат) и метод сложения дробей, без сокращения (1/5 +2/3 -> 13/15 – результат новая дробь). Код: #include<stdio.h> #include<conio.h> #include <locale.h> class Drob подробнее

Показать сообщение отдельно
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
22.03.2013, 22:25     Много раз ввожу данные
Есть такой кусок кода:
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];
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru