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

Если a или b не число - C++

Восстановить пароль Регистрация
 
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
30.09.2013, 22:46     Если a или b не число #1
Решил для разминки написать действие сложения, так как сам не писал его не разу, решил попробовать.
всё получилось с 1 раза, но проблема в том что мне нужно если a или b не равно числу то программа выдаёт что "Нельзя использовать буквы, введите число опять" и вновь ожидала ввода a и b.
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
#include "Class.h"
#include <iostream>
#include "windows.h"
 
 
using namespace std;
 
 
 
int main() 
{ 
    setlocale(LC_ALL,"RUS");
    system("color A");
    cout << ("Введите 1 число затем 2 число.") << endl;
    while(999999)
    {
    int a;
    int b;
    
    cin>>a;
    cin>>b;
 
    if (a+b)
    {
        cout << ("Первое число + Второе число = ") << a+b << endl;
    }
 
    }
    system("pause");
    return 0;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 22:46     Если a или b не число
Посмотрите здесь:

C++ Дано вещественное число N(>0). Если N - нечетное число, то вывести произведение 1*3*...*N, если N - четное число, то вывести произведение 2*4*...*N
C++ Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия)
Дано целое число. Если оно является нечетным положительным, то прибавить к нему 1, если отрицательным, то вычесть 2, если нулевым, то заменить на 10 C++
Если a делится на b или b делится на a, то вывести 1, иначе – любое другое число C++
Необходимо вывести строку prime, если число простое, или composite, если число составное C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
30.09.2013, 23:01     Если a или b не число #2
используйте
try {} catch{}
если не вышло в try ,то в catch пишите - "нельзя использовать буквы" и в цикле это заново делаете
или используйте goto
newbie666
Заблокирован
30.09.2013, 23:18     Если a или b не число #3
а что нельзя просто написать, мол
C++
1
if(a != '0' && a !='1' ... и так далее, цифр то всего 10 :-)
Не или ещё проще:
C++
1
2
3
4
if(a >= 0x30 && a<=0x39)
     цифра
else
    не цифра :-)
Тоже самое для b
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.09.2013, 23:21     Если a или b не число #4
newbie666, я так понимаю, речь не о цифрах (которых 10), а о числах, которых чуть больше.
А для проверки на "циферность" есть std::isalpha
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
30.09.2013, 23:33  [ТС]     Если a или b не число #5
Скажу проще, как сделать так чтобы можно было вводить только числа.
newbie666
Заблокирован
30.09.2013, 23:34     Если a или b не число #6
да ставь проверку if(a == 0xcccccccc) - буква, иначе - цифра и не парься
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
30.09.2013, 23:53     Если a или b не число #7
замените int на char или std::string и если это не число (atoi используйте ) то нельзя посчитать и возвращайтесь к шагу
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
01.10.2013, 00:11  [ТС]     Если a или b не число #8
Цитата Сообщение от newbie666 Посмотреть сообщение
да ставь проверку if(a == 0xcccccccc) - буква, иначе - цифра и не парься
Ваш способ я понял, но работает только с break, изучаю goto может поможет.
C++
1
2
3
4
5
    if(a == 0xcccccccc)
        {
        cout << ("Нелья вводить буквы, вводи числа") <<endl; ;
        break;
    }
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 01:26     Если a или b не число #9
Все конечно хорошо, но goto это признак плохого алгоритма это рас. А scanf("%d", &value); , и все дела. Или глупым способом после введения сделай int k = sizeof(a); if (k == 2) {cout << "All fine";} else {cout << "all bad"; sin >> a;}. А goto как то не серьёзно, это же не ассемблер и флагов нету, и выбор огромный.
Цитата Сообщение от newbie666 Посмотреть сообщение
2
3
4
if(a >= 0x30 && a<=0x39)
* * *цифра
else
* * не цифра :-)
Автор наверное не понял, цифра = 1. Число = 11111.
Tsin
 Аватар для Tsin
418 / 394 / 108
Регистрация: 30.12.2012
Сообщений: 1,084
Записей в блоге: 2
Завершенные тесты: 3
01.10.2013, 01:51     Если a или b не число #10
Цитата Сообщение от Виталий1251 Посмотреть сообщение
int k = sizeof(a); if (k == 2) ....
а как это поможет?
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 01:57     Если a или b не число #11
Цитата Сообщение от Tsin Посмотреть сообщение
а как это поможет?
Ну int = 2 байта или 4 байта. От компилятора зависит в windows 4 байта. Проверяешь размер если интовский размер то всё хорошо если нет то введи заново.
Tsin
 Аватар для Tsin
418 / 394 / 108
Регистрация: 30.12.2012
Сообщений: 1,084
Записей в блоге: 2
Завершенные тесты: 3
01.10.2013, 02:16     Если a или b не число #12
Виталий1251, я правильно понял, что вы имеете в виду?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int a;
    cin >> a;
 
    if (sizeof(a) == 4)
        cout << "\nSuccess!";
 
    getch();
    return 0;
}
 
//если ввести число, например '1234', или букву 'd', то программа 
//в обоих случаях выведет успех.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2013, 02:57     Если a или b не число #13
C++
1
2
3
4
5
6
7
// в строке ввода только цифры, перед которыми могут быть + или -.
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 07:37     Если a или b не число #14
Цитата Сообщение от Tsin Посмотреть сообщение
Виталий1251, я правильно понял, что вы имеете в виду?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int a;
    cin >> a;
 
    if (sizeof(a) == 4)
        cout << "\nSuccess!";
 
    getch();
    return 0;
}
 
//если ввести число, например '1234', или букву 'd', то программа 
//в обоих случаях выведет успех.
Да вы правы, чего то я сглупил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2013, 10:32     Если a или b не число
Еще ссылки по теме:

C++ Заменить первое число нулем, если оно меньше или равно второму
C++ Если а делится на b или b делится на а, то вывести 1, иначе— любое другое число
Вывести первое число, если оно больше второго, и оба числа, если это не так C++

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

Или воспользуйтесь поиском по форуму:
newbie666
Заблокирован
01.10.2013, 10:32     Если a или b не число #15
Цитата Сообщение от tyrbo123 Посмотреть сообщение
Ваш способ я понял, но работает только с break, изучаю goto может поможет.
Ты имеешь ввиду, что если это не число, то надо цикл просто заново запускать и для этого хочешь задействовать goto ? ))))) А брейк ставишь чтоб хоть как то прервать цикл ))) Вместо break поставь continue и будет всё тип топ )
Yandex
Объявления
01.10.2013, 10:32     Если a или b не число
Ответ Создать тему
Опции темы

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