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

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

Войти
Регистрация
Восстановить пароль
 
pashka-chel
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 3
#1

Реализация запрета ввода любых символов кроме цифр в консольном приложении - C++

21.05.2013, 11:31. Просмотров 1072. Ответов 3
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста реализовать запрет ввода любых символов кроме цифр в консольном приложении, считающем корни квадратного уравнения. Тоесть при вводе любого символа отличного от цифры должно появляться приглашение повторить ввод переменной
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
#include<iostream.h>
#include<conio.h>
#include<locale.h>
#include<iomanip.h>
#include "math.h" 
#include <string.h>
 
using namespace std; 
 
int main()
{ 
     setlocale(LC_CTYPE,"Russian"); //Установка русской локали для вывода сообщений
    float a,b,c,d,x,x1,x2; 
    char ans ;
    ans='y';
         while (ans=='y')
        {
        cout<<"Введите значение переменной a\n";
        cin >> a;
            while (a==0)
            {
            cout<<"Нельзя вводить число равное 0,повторите ввод.\n"<<endl;
            cin>>a;
            }
        cout<<"Введите значение переменной b\n";
        cin >> b;
        cout<<"Введите значение переменной c\n";
        cin >> c;
        d=(b*b)-((4*a)*c); 
        cout<<"Дискриминант равен\n"<<d<<endl; 
        if (d < 0)
        cout << "Решений нет,при дискриминанте меньше 0" << endl; 
        if (d == 0)
        { 
            x=(-b)/(2*a); 
            cout << "Один корень,при дискриминанте равном 0,x=" << x << endl; 
        } 
            if (d > 0)
                { 
                    x1=((-b)+sqrt(d))/(2*a); 
                    x2=((-b)-sqrt(d))/(2*a); 
                    cout << "Первый корень,x1=" << x1 << "\n" << "Второй корень,x2=" << x2 << endl;
                }
                    cout<<"Вы хотите продолжить выполнение программы(y-да)?\n";
                    cin>>ans;
        }
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 11:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация запрета ввода любых символов кроме цифр в консольном приложении (C++):

Запрет ввода любых символов кроме цифр в консоли - C++
Ребята подскажите пожалуйста можно ли как-то разрешать ввод в консоль только цифр. Я делаю проверку или с помощью isdigit() или через...

Запрет ввода в консольном приложении - C++
Здравствуйте! Мне необходимо осуществить следующую задачу: 1) Запретить пользователю ввод положительных чисел. 2) Запретить ввод...

Можно ли в консольном приложении вывести 25 цифр после запятой? - C++
Можно ли в консольном приложении вывести цифр 25 после запятой? cout выводит только цифр 6, а setw(n) только сдвигает число в конец строки

в строке символов удалить все кроме цифр - C++
помогите джависту! в строке символов удалить все кроме цифр и вывести количество сотен числа #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; ...

Запрет ввода символов, отличных от цифр - C++
Нужно заполнить двумерный массив только числами. Как это реализовать?

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

3
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2013, 13:59 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout << "Enter the number: " << endl;
int i;
while (true)
{
    cin >> i;
    if (!cin)
    {
          cin.clear();
          while (cin.get() != '\n');
          cout << "Error! Retry input\n";
          cout << "Enter the number: " << endl;
    }
    else break;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
21.05.2013, 14:01 #3
pashka-chel, читай чаще блоги и вопросы будут отпадать сами
Безопасный ввод через функцию-шаблон
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
#include <cmath>
#include <clocale>
#include <iostream>
using namespace std; 
 
//Îáúÿâëÿåì ГґГіГ*êöèþ ГёГ*áëîГ*
//ÔóГ*êöèÿ ГўГҐГ°Г*ВёГІ ÈÑÒÈÍÀ åñëè ГЇГ*Г°Г*ìåòð val áûë âåäåГ* êîððåêòГ*Г®
//Гў ïðîòèâГ*îì ñëó÷Г*ГҐ âîçâðГ*ГІ îò ГґГіГ*êöèè ËÎÆÜ
template <class T>
bool SafeInput
(
    const wchar_t * msg,//ñîîáùåГ*ГЁГҐ êîòîðîå áóäåò ñîïóòñòâîâГ*ГІГј ââîäó
    T &val
)
{
    bool bOk = true;//ÔëГ*ГЈ ГіГ±ГЇГҐГёГ*îãî ââîäГ*
    wcout<<msg;//Âûâîä Г*Г* ГЅГЄГ°Г*Г* ñîïóòñòâóþùåãî ñîîáùåГ*ГЁГї
    //ÏðîâåðêГ* Г*Г* êîððåêòГ*ûé ââîä äîëæГ*Г* ñîäåðæГ*ГІГј Г*ГҐ òîëüêî if(!(cin>>val) )
    //Г*Г® ГЁ ïðîâåðêó Г*Г* ГІГ® Г·ГІГ® ñòðîêГ* áîëåå Г*ГҐ ñîäåðæèò ñèìâîëîâ ГІ.ГҐ cin.get() != '\n'
    if(!(cin>>val) || cin.get() != '\n')
        bOk = false;
    if(!bOk)
        cin.clear();//Ñáðîñ ГґГ«Г*ãîâ îøèáîê
        cin.sync();//ГЋГ·ГЁГ±ГІГЄГ* ГЎГіГґГҐГ°Г* ââîäГ*
    return bOk;
}
 
 
int main()
{ 
    setlocale(LC_CTYPE,".866"); //ÓñòГ*Г*îâêГ* ðóññêîé ëîêГ*ëè äëÿ âûâîäГ* ñîîáùåГ*ГЁГ©
    double a, b, c, d; 
    char ans = 'y';
    bool bWork = true;
    while( bWork )
    {
        if(!SafeInput(L"Ââåäèòå Г§Г*Г*Г·ГҐГ*ГЁГҐ ïåðåìåГ*Г*îé a : ", a))
            wcout<<L"ÍåêîððåêòГ*ûé ââîä ïîëüçîâГ*òåëÿ"<<endl;
        else
        if(a==0)
            wcout<<L"Íåëüçÿ ââîäèòü ÷èñëî Г°Г*ГўГ*îå 0, ïîâòîðèòå ââîä"<<endl;
        else
        if(!SafeInput(L"Ââåäèòå Г§Г*Г*Г·ГҐГ*ГЁГҐ ïåðåìåГ*Г*îé b : ", b))
            wcout<<L"ÍåêîððåêòГ*ûé ââîä ïîëüçîâГ*òåëÿ"<<endl;
        else
        if(!SafeInput(L"Ââåäèòå Г§Г*Г*Г·ГҐГ*ГЁГҐ ïåðåìåГ*Г*îé c : ", c))
            wcout<<L"ÍåêîððåêòГ*ûé ââîä ïîëüçîâГ*òåëÿ"<<endl;
        else
        { 
            wcout<<L"ÄèñêðèìèГ*Г*Г*ГІ Г°Г*ГўГҐГ* D = "<<(d = pow(b,2.0) - 4*a*c)<<endl; 
            if (d < 0)
                wcout<< L"ГЌГҐГІ äåéñòâèòåëüГ*ûõ ðåøåГ*ГЁГ© D < 0"<<endl;
            else
            if (d == 0)
                wcout <<L"ÎäèГ* êîðåГ*Гј D == 0, x = " <<(-b/(2*a))<<endl;
            else
            if (d > 0)
            { 
                wcout<<L"ÊîðГ*ГҐГ© äâГ*  D > 0 :"<<endl;
                wcout<<L"1-ûé êîðåГ*Гј, x1 = "<<((-b) - sqrt(d))/(2*a)<<endl;
                wcout<<L"2-îé êîðåГ*Гј, x2 = "<<((-b) + sqrt(d))/(2*a)<<endl;
            }
        }
        if(!SafeInput(L"Âû õîòèòå ïðîäîëæèòü âûïîëГ*ГҐГ*ГЁГҐ ïðîãðГ*ììû?(Y - Г¤Г*)\n>", ans))
            wcout<<L"ÍåêîððåêòГ*ûé ââîä ïîëüçîâГ*òåëÿ"<<endl;
        else
        if(ans != 'Y' && ans != 'y')
            bWork = false;
            
    }
    return 0;
}
0
Миниатюры
Реализация запрета ввода любых символов кроме цифр в консольном приложении  
-=ЮрА=-
Заблокирован
Автор FAQ
21.05.2013, 14:03 #4
PS:
Цитата Сообщение от pashka-chel Посмотреть сообщение
cout << "Решений нет,при дискриминанте меньше 0"
- правда?
Нет решений в действительных числах, а вот в комплексных числах есть решение у всего.
решение квадратного уравнения С++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 14:03
Привет! Вот еще темы с ответами:

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

WxWidgets - в консольном приложении - C++
Начал изучение библиотек wxWidgets в Code Blocks, столкнулся с проблемой компиляции, вроде все подключено,просто строку в консоль выводит а...

Графика в консольном приложении - C++
Помогите создать приблизительно такую штуку, которая будет высвечиваться при запуске консольной программы, и по нажатию на любую клавишу...

Вывод в консольном приложении - C++
Всем доброго времени суток. Написал приложение выводящие через printf 5 строк с паузой в 1 сек. При обычном запуске всё работает хорошо....


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
21.05.2013, 14:03
Ответ Создать тему
Опции темы

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