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

Проверка строки на корректность - C++

Восстановить пароль Регистрация
 
Lies
0 / 0 / 0
Регистрация: 28.09.2015
Сообщений: 15
16.04.2016, 10:19     Проверка строки на корректность #1
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
#include<iostream>
#include<cstring>
#include <conio.h>
using namespace std;
 
int main(){
    char a;
    char a1;    
    char a3[100];
    int b,b1,b2;
    scanf("%d%c%d%c%d",&b,&a,&b1,&a1,&b2);
    if(a!='+' && a!='-' && a!='/' && a!='*' || a1!='='){
        cout << "ERROR";
     }
    
    if(a=='+'){
        if(b==b2-b1 && b1==b2-b && b+b1==b2){
            cout << "YES";
        }
        else cout << "NO";
    }
    if(a=='-'){
        if(b==b2+b1 && b1==(b2-b)*(-1) && b-b1==b2){
            cout << "YES";
        }
        else cout << "NO";  
    }
    if(a=='*'){
        if(b==b2/b1 && b1==b2/b && b*b1==b2){
            cout << "YES";
        }
        else cout << "NO";
    }
    if(a=='/'){
        if(b==b2*b1 && b1==b/b2 && b2==b/b1){  
            cout << "YES";
        }
        else cout << "NO";
    }
    return 0;   
}
программа должна проверять строку на корректность и правильность. Например, запись вида «2+3=5» является правильной, а «23*7=421» неверная, но корректная. Корректной записью выражения будем называть последовательность: число, операция («+», «-», «*», «/»), число, знак равенства, число. Т.е. если в записи не хватает цифр или же встречается неизвестный символ. Например, записи «2*=3», «173» и «2+2=a» некорректны.
В выходной файл OUTPUT.TXT нужно вывести «YES», если указанная запись правильна (т.е. равенство представляет собой тождество), «NO» - если корректная, но неверная и «ERROR», если в записи присутствуют ошибки.


входные данные: 1)2+3=5 ----------------------- YES
2)3*7=20 ---------------------- NO
3)two plus three is five ------- ERROR
4)6-4=2abc -------------------- ERROR

помогите мне, пожалуйста со строкой, а именно на проверку ее. например 6-4=2abc это ERROR или если присутствует любая буква это некорректно и ERROR. код работает без нее и на тесте похожий на 4) валится.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2016, 10:19     Проверка строки на корректность
Посмотрите здесь:

Проверка на корректность ввода года C++
Проверка на корректность операции C++
C++ Проверка на корректность логического выражения
C++ Проверка на корректность входных данных
Проверка введенного url адреса на корректность C++
Проверка на корректность введенных данных C++
C++ Проверка на корректность ввода числа
C++ Проверка указателя на корректность

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4326 / 3747 / 1261
Регистрация: 14.04.2014
Сообщений: 14,712
16.04.2016, 17:22     Проверка строки на корректность #2
C++
1
2
3
4
5
6
7
8
if (scanf("%d%1[+-*/]%d=%d%1s", &b, &a, &b1, &b2, a3) != 4)
{
    cout << "ERROR";
}
else
{
    // расчёт
}
Yandex
Объявления
16.04.2016, 17:22     Проверка строки на корректность
Ответ Создать тему
Опции темы

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