Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
bankbb
1 / 1 / 8
Регистрация: 30.04.2014
Сообщений: 62
#1

Ограничение ввода арифметических символов - C++

25.02.2015, 20:51. Просмотров 599. Ответов 7
Метки нет (Все метки)

сам код
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
#include <iostream>
#include <locale>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    unsigned char Q[16];
    int A = 0, B = 0, C = 0;
    char D[100];
    int i,x,y,Key;
    while (true){
 
 
        printf("\nЗдравствуйте, введите, пожалуйста, целое число A!\n");
        cin >> A;
 
        x = cin.rdstate();
        if (x & ios::failbit){
            cerr << "\a\nError!\n\n";
            cout << endl;
            cin.clear();
            cin.sync();
            continue;
        }
 
        printf("\nВведите, пожалуйста, целое число B!\n");
        cin >> B;
        y = cin.rdstate();
        if (y & ios::failbit){
            cerr << "\a\nError!\n\n";
            system("pause");
            cout << endl;
            cin.clear();
            cin.sync();
            continue;
        }
        printf("\nВведите, пожалуйста, целое число С!\n");
        cin >> C;
        i = cin.rdstate();
        if (i & ios::failbit){
            cerr << "\a\nError!\n\n";
            system("pause");
            cout << endl;
            cin.clear();
            cin.sync();
            continue;
        }
        break;
    }
    const unsigned char C1 = 5, F = 43;
    if ((F - B - C) != 0){
        double t = double(A + B + C1) / (F - B - C);
        sprintf((char*)Q, "%lg\n", t); 
        cout << "Q=(" << A << "+" << B << "+" << (unsigned)C1 << ")/(" << (unsigned)F << "-" << B << "-" << C << ")=" << Q << endl;
    }
    else cout << "На ноль делить нельзя\n!";
    system("pause");
}
проблема состоит в том что если водишь значение и плюс(пример:56+) ввыводит еррор (так как нужно),а если 55+44 то оно записывает за два значения А и В.Вопрос состоит как ограничить ввод +
Ограничение ввода арифметических символов
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2015, 20:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ограничение ввода арифметических символов (C++):

Ограничение ввода символов.
Здравствуйте, подскажите пожалуйста как ограничеть ввод символолв в программе с...

Ограничение ввода символов
Здравствуйте. Пишу программку вроде калькулятора, возникла проблема, если...

Ограничение ввода.(цифр, букв и символов)
Мне нужно сделать ограничение ввода. Условие: 1) ввод 1, 2 или 3, если...

Ограничение ввода(цифр, букв и символов)
Здравствуйте ! Мне нужно сделать ограничение ввода. Я его прописал, для ввода...

Ограничение ввода
Нужно ограничить ввод заполнения строки. Допустим, пользователь отказался...

Ограничение ввода
Как сделать так, чтобы пользователь мог вводить только числа и при попытке...

7
bankbb
1 / 1 / 8
Регистрация: 30.04.2014
Сообщений: 62
25.02.2015, 21:25  [ТС] #2
никто не сможет помочь?
0
nmcf
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,361
25.02.2015, 21:32 #3
sync() делай в любом случае, не только когда неверный ввод.
0
bankbb
1 / 1 / 8
Регистрация: 30.04.2014
Сообщений: 62
25.02.2015, 21:41  [ТС] #4
nmcf, Ограничение ввода арифметических символов
0
nmcf
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,361
25.02.2015, 21:45 #5
Лучший ответ Сообщение было отмечено bankbb как решение

Решение

C++
1
2
3
4
5
6
7
8
9
        x = cin.rdstate();
        if (x & ios::failbit){
            cerr << "\a\nError!\n\n";
            cout << endl;
            cin.clear();
            cin.sync();
            continue;
        }
        else cin.sync();
Ввести можно что угодно, но браться должно только до плюса.
1
bankbb
1 / 1 / 8
Регистрация: 30.04.2014
Сообщений: 62
25.02.2015, 21:55  [ТС] #6
nmcf, спасибо за совет, но вопрос заключается в следующем возможно при 55+55 вывести ошибку?
0
DISTURB
19 / 19 / 14
Регистрация: 07.02.2015
Сообщений: 145
25.02.2015, 22:17 #7
bankbb, через преобразование типов можно. Примерный алгоритм:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <cstdlib>
 
using namespace std;
int main()
{   string ss;
    int num;
    cout<<"Input A ";
    cin>>ss;   //вводите числовое значение в строку
    for (int i=0;i<length(ss);++i) 
    {
        if (.....) {cout<<"Error"}  //в условии проверяете строку на наличие нежелат. символов
        else {num=atoi(ss.c_str()); //преобразуете string в int 
        break;}
    }
    
    cout<<num;
    return 0;
 
}
1
nmcf
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,361
25.02.2015, 23:20 #8
Не проще будет ввести все три числа разом?
1
25.02.2015, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2015, 23:20
Привет! Вот еще темы с решениями:

Ограничение ввода в int
Здравствуйте, как можно ограничить ввод в переменную типа int? У меня есть...

Ограничение ввода! Подскажите!
Подскажите как ограничить ввод для значений a и b? нужны только числа...

Ограничение времени ввода.
нада дать юзеру 10 сек на ввод значения Х. Еси он провтыкал 10 сек, то...

Ограничение ввода с клавиатуры
Доброго времени суток. Ребят такой вопрос: Как ограничить ввод данных с...


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

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

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