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

Операции с числами(правильно или нет) - C++

Восстановить пароль Регистрация
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 18:09     Операции с числами(правильно или нет) #1
Подскажите почему не выводит "wrong", если я ввожу 5++5(хотя в условии я задал что делать если будет подобное выражение)?
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
#include <stdio.h>
#include <math.h>
 
int main()
{
    int i;
    char s[100];
    printf("enter smth like it: 2+2\n");
    scanf("%s", &s); //вводим нашу строку с числами и знаками +-*/ и скобками
 
    for(i=0;i<4;i++) {
        if(s[i]=='+'|| s[i]=='-'||s[i]=='*'||s[i]=='/') { //первый член
            if(s[i]++!='+'||s[i]++!='-'||s[i]++!='*'||s[i]++!='/') { //следующий за ним член
                printf("right\n");
            }
            else {
                printf("wrong\n");
            }
        }
}
 
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.10.2012, 18:26     Операции с числами(правильно или нет) #2
В чём идея программы? Я не понял, какого результаты ты ходишь добиться.
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 18:32  [ТС]     Операции с числами(правильно или нет) #3
Цитата Сообщение от David Sylva Посмотреть сообщение
В чём идея программы? Я не понял, какого результаты ты ходишь добиться.
Я поэтапно реализую программу, которая бы выводила правильно или нет мы ввели числа. Например 7+7 - это правильно, а вот 7++7 - это не правильно. На этапе 7++7 я застрял, вот и прошу помощи
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.10.2012, 18:44     Операции с числами(правильно или нет) #4
Ты хочешь, делать проверку на цифры или проверку на корректность выражения? Если на цифры то есть функция http://www.cplusplus.com/reference/c...ctype/isdigit/ а если на правильность выражения, то мне кажется ты делаешь неправильно.
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 18:49  [ТС]     Операции с числами(правильно или нет) #5
Цитата Сообщение от David Sylva Посмотреть сообщение
Ты хочешь, делать проверку на цифры или проверку на корректность выражения? Если на цифры то есть функция http://www.cplusplus.com/reference/c...ctype/isdigit/ а если на правильность выражения, то мне кажется ты делаешь неправильно.
Я делаю на правильность выражения. Почему не правильно? (свой пример приведите)
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.10.2012, 19:06     Операции с числами(правильно или нет) #6
Может не лучший пример, но можно так
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
#include <iostream>
 
int main() 
{ 
    char buf[10];  
    int count = 0; 
    int i = 0;
    std::cout << "Inter a expression " << std::endl; 
    std::cin >> buf; 
 
        if(isdigit(buf[i])) 
        {   
            count++;
            if(buf[i+1] == '+' ||  buf[i+1] == '-') 
                count++; 
            if(isdigit(buf[i+2])) 
                count++; 
        } 
        if( count == 3) 
            std::cout << "Right " << std::endl; 
        else 
            std::cout <<"Wrong " << std::endl; 
 
}
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 19:25  [ТС]     Операции с числами(правильно или нет) #7
Правильно ли я вообще провожу сравнение:
C
1
if(s[i]++!='+'||s[i]++!='-'||s[i]++!='*'||s[i]++!='/')
?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.10.2012, 19:31     Операции с числами(правильно или нет) #8
Нет. Если так как хочешь ты, то можно так
увеличить счётчик i++ и сравнивать s[i] == '+' || s[i] == '-'
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 19:43  [ТС]     Операции с числами(правильно или нет) #9
Цитата Сообщение от David Sylva Посмотреть сообщение
Нет. Если так как хочешь ты, то можно так
увеличить счётчик i++ и сравнивать s[i] == '+' || s[i] == '-'
Зачем мне увеличивать счётчик когда вот так вот должно работать(немного исправил первоначальный вариант):
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
#include <stdio.h>
#include <math.h>
 
int main()
{
    int i;
    char s[100];
    printf("enter smth like it: 2+2\n");
    scanf("%s", &s); //вводим нашу строку с числами и знаками +-*/ и скобками
 
    for(i=0;i<4;i++) {
        if(s[i]=='+'|| s[i]=='-'||s[i]=='*'||s[i]=='/') { //первый член
        s[i]++;
            if(s[i]!='+'||s[i]!='-'||s[i]!='*'||s[i]!='/') { //следующий за ним член
                printf("right\n");
            }
            else {
                printf("wrong\n");
            }
         s[i]--;
        }
}
 
 
    return 0;
}
Так ведь тоже должно работать. Допустим у нас выражение 2++2 и наш счётчик равен 1(стоим на первом плюсике). Наше s[1] в данный момент это +. Так почему не работает если я делаю s[1]++(должно же получиться s[2])
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.10.2012, 19:48     Операции с числами(правильно или нет) #10
C++
1
2
3
4
5
6
7
8
9
#include <iostream> 
 
int main() 
{   
    int array[5] = { 1, 2, 3, 4, 5 }; 
    int i = 0;
    std::cout << array[i]++ << std::endl; // твой вариант
    std::cout << array[i++] << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2012, 19:52     Операции с числами(правильно или нет)
Еще ссылки по теме:

C++ Операции над натуральными числами
Проверить, правильно ли в текст входят круглые скобки. Ответ ДА или НЕТ с++ C++
Написал программу, не могу понять правильно или нет C++

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

Или воспользуйтесь поиском по форуму:
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
15.10.2012, 19:52  [ТС]     Операции с числами(правильно или нет) #11
Цитата Сообщение от David Sylva Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <iostream> 
 
int main() 
{   
    int array[5] = { 1, 2, 3, 4, 5 }; 
    int i = 0;
    std::cout << array[i]++ << std::endl; // твой вариант
    std::cout << array[i++] << std::endl;
}
Понял в чём была вся загвоздка. Спасибо
Yandex
Объявления
15.10.2012, 19:52     Операции с числами(правильно или нет)
Ответ Создать тему
Опции темы

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