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

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

Войти
Регистрация
Восстановить пароль
 
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
#1

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

30.09.2013, 22:46. Просмотров 593. Ответов 14
Метки нет (Все метки)

Решил для разминки написать действие сложения, так как сам не писал его не разу, решил попробовать.
всё получилось с 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;
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 22:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Если a или b не число (C++):

Необходимо вывести строку prime, если число простое, или composite, если число составное - C++
Уважаемые программисты, проверьте, пожалуйста, решение задачи Проверьте, является ли число простым. Вводится одно число n. Формат...

Если первое число окажется кратным 5 или второе число будет нечетным, то вывести на экран сумму их модулей - C++
4. Даны два числа N и М. Если первое число окажется кратным 5 или второе число будет нечетным, то вывести на экран сумму модулей заданных...

Заменить первое число нулем, если оно меньше или равно второму - C++
Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму и оставить числа без изменения в противном...

Заменить первое число нулем, если оно меньше или равно второму - C++
Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения иначе. 2

Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия) - C++
Правильно ли мое решение? Есть ли другие решения? Заранее спасибо. #include &lt;iostream&gt; using namespace std;

Дано целое число. Если оно является нечетным положительным, то прибавить к нему 1, если отрицательным, то вычесть 2, если нулевым, то заменить на 10 - C++
Дано целое число. Если оно является нечетным положительным, то прибавить к нему 1, если отрицательным, то вычесть из него 2, если нулевым,...

14
proech
11 / 11 / 2
Регистрация: 10.07.2013
Сообщений: 150
30.09.2013, 23:01 #2
используйте
try {} catch{}
если не вышло в try ,то в catch пишите - "нельзя использовать буквы" и в цикле это заново делаете
или используйте goto
0
newbie666
Заблокирован
30.09.2013, 23:18 #3
а что нельзя просто написать, мол
C++
1
if(a != '0' && a !='1' ... и так далее, цифр то всего 10 :-)
Не или ещё проще:
C++
1
2
3
4
if(a >= 0x30 && a<=0x39)
     цифра
else
    не цифра :-)
Тоже самое для b
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.09.2013, 23:21 #4
newbie666, я так понимаю, речь не о цифрах (которых 10), а о числах, которых чуть больше.
А для проверки на "циферность" есть std::isalpha
0
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
30.09.2013, 23:33  [ТС] #5
Скажу проще, как сделать так чтобы можно было вводить только числа.
0
newbie666
Заблокирован
30.09.2013, 23:34 #6
да ставь проверку if(a == 0xcccccccc) - буква, иначе - цифра и не парься
0
proech
11 / 11 / 2
Регистрация: 10.07.2013
Сообщений: 150
30.09.2013, 23:53 #7
замените int на char или std::string и если это не число (atoi используйте ) то нельзя посчитать и возвращайтесь к шагу
0
tyrbo123
3 / 3 / 1
Регистрация: 27.02.2013
Сообщений: 39
01.10.2013, 00:11  [ТС] #8
Цитата Сообщение от newbie666 Посмотреть сообщение
да ставь проверку if(a == 0xcccccccc) - буква, иначе - цифра и не парься
Ваш способ я понял, но работает только с break, изучаю goto может поможет.
C++
1
2
3
4
5
    if(a == 0xcccccccc)
        {
        cout << ("Нелья вводить буквы, вводи числа") <<endl; ;
        break;
    }
0
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 01:26 #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.
0
Tsin
717 / 462 / 132
Регистрация: 30.12.2012
Сообщений: 1,255
Записей в блоге: 2
Завершенные тесты: 3
01.10.2013, 01:51 #10
Цитата Сообщение от Виталий1251 Посмотреть сообщение
int k = sizeof(a); if (k == 2) ....
а как это поможет?
0
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 01:57 #11
Цитата Сообщение от Tsin Посмотреть сообщение
а как это поможет?
Ну int = 2 байта или 4 байта. От компилятора зависит в windows 4 байта. Проверяешь размер если интовский размер то всё хорошо если нет то введи заново.
0
Tsin
717 / 462 / 132
Регистрация: 30.12.2012
Сообщений: 1,255
Записей в блоге: 2
Завершенные тесты: 3
01.10.2013, 02:16 #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', то программа 
//в обоих случаях выведет успех.
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2013, 02:57 #13
C++
1
2
3
4
5
6
7
// в строке ввода только цифры, перед которыми могут быть + или -.
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
0
Виталий1251
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 19
01.10.2013, 07:37 #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', то программа 
//в обоих случаях выведет успех.
Да вы правы, чего то я сглупил.
0
newbie666
Заблокирован
01.10.2013, 10:32 #15
Цитата Сообщение от tyrbo123 Посмотреть сообщение
Ваш способ я понял, но работает только с break, изучаю goto может поможет.
Ты имеешь ввиду, что если это не число, то надо цикл просто заново запускать и для этого хочешь задействовать goto ? ))))) А брейк ставишь чтоб хоть как то прервать цикл ))) Вместо break поставь continue и будет всё тип топ )
0
01.10.2013, 10:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2013, 10:32
Привет! Вот еще темы с ответами:

Дано вещественное число N(>0). Если N - нечетное число, то вывести произведение 1*3*...*N, если N - четное число, то вывести произведение 2*4*...*N - C++
Привет ВСЕМ!!! Помогите пожалуйста с задачкой =) Дано вещественное число N(&gt;0). Если N - нечетное число, то вывести произведение...

Если a делится на b или b делится на a, то вывести 1, иначе – любое другое число - C++
Доброго времени суток! В С++ недавно, но в универе уже задали такие задачи: 4)Даны два целых числа a и b. Если a делится на b или b...

Если а делится на b или b делится на а, то вывести 1, иначе— любое другое число - C++
Даны два целых числа а и b. Если а делится на b или b делится на а, то вывести 1, иначе— любое другое число. Условные операторы и...

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...


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

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

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