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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
#1

Лэйс на с++ - C++

18.11.2010, 16:07. Просмотров 2446. Ответов 52
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main () {
    int lays=0;
    char mas[1001];
    cin>>mas;
    for (int i=0; i<=strlen(mas);i++)
        if ('(')
        lays++;
    
    if ('(')
        lays--;
        cout<<"VALID"<<endl;
    
    if (lays==0)
        cout<<"INVALID"<<endl;
    
        return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
18.11.2010, 16:30 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main () {
        int lays=0;
        char mas[1001];
        cin>>mas;
        for (int i=0; i<=strlen(mas);i++)
        {
                if ('('){
                lays++;
                }        
        if (')') // косяк уже переправил
        {
                lays--;
               }
        
        if (lays==0)
                cout<<"INVALID"<<endl;
        else
                cout<<"VALID"<<endl; // вот так должно быть
                return 0;
}
Добавлено через 1 минуту
и тебе не хватает еще одного условия!!!! например если строка начинается с ) и заканчивается с ( то это заведомо ложное условие))))
2
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.11.2010, 16:33 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main () {
        int lays=0;
        char mas[1001];
        cin>>mas;
        for (int i=0; i<strlen(mas);i++)
        {
                if (mas[i]=='(')
                   lays++;
        
                else if (mas[i]==')')
                   lays--;
        }
        
        if (lays==0)
                cout<<"VALID"<<endl;
        else
               cout<<"INVALID"<<endl;
        return 0;
}
Добавлено через 1 минуту
jambas92, Ваш код косячнее предыдущего... Во первых что это за условие?
if('(') - вам не кажется, что всегда будет возвращено true?
Во вторых если кол-во скобок - 0, тогда все правильно, иначе нет.
0
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
18.11.2010, 16:35  [ТС] #4
ForEveR, если написать как ты не будет правильно работать.
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.11.2010, 16:36 #5
Hardcore, Пример?

Введите в программу.

(n+(2+(3+4)+5))
И посмотрите что вам выдаст.
Смотрите последний исправленный код. В первый раз немного протупил.
0
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
18.11.2010, 16:44 #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
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std;
 
int main () 
{
    int lays=0;
    char mas[1001];
    cin>>mas;
    for (int i=0; i<=strlen(mas);i++)
    {
        if ('(')
        {
            lays++;
        }
        if (')') 
        {
            lays--;
        }
    }
 
    if (lays==0)
    {
        cout<<"VALID"<<endl;
    }
    else
    {
        cout<<"INVALID"<<endl; 
    }
    return 0;
}
Добавлено через 1 минуту
вот он норм вид!!!! осталось добавить еще одно условие для полного счастья))))

Добавлено через 3 минуты
C++
1
2
3
4
5
if (mas[0]==')' || mas[strlen(mas)-1]=='(')
{
    cout << "INVALID";
    return 0;
}
1
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
18.11.2010, 16:47  [ТС] #7
if (mas[0]==')' && strlen(mas)=='(')
вот это?

Добавлено через 1 минуту
я был близок.
1
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
18.11.2010, 16:50 #8
не и (&&) , а или (||)
1
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
18.11.2010, 16:50  [ТС] #9
я отправил пишет тест 4.
??

кстати в твоем коде я пишу и так () и так )(
всё равно пишет VALID
1
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
18.11.2010, 16:54 #10
смотри в немательно
if (mas[0]==')' || mas[strlen(mas)-1]=='(')
{
cout << "INVALID";
return 0;
}
ты скорее всего забываешь минус 1 поставить!!!!!!!!!1
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.11.2010, 16:55 #11
C++
1
2
3
4
5
6
7
8
9
10
11
        for (int i=0; i<=strlen(mas);i++)
        {
                if ('(')
                {
                        lays++;
                }
                if (')') 
                {
                        lays--;
                }
        }
ЭТО РАЗВЕ ПРОВЕРКА?!
1
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
18.11.2010, 16:58  [ТС] #12
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
#include <iostream>
 
using namespace std;
 
int main () {
        int lays=0;
        char mas[1001];
        cin>>mas;
        for (int i=0; i<=strlen(mas);i++){
                if ('('){
                        lays++;
                }
                if (')') {
                        lays--;
                }
        }
 
        if (lays==0)
        {
                cout<<"VALID"<<endl;
        }
        else
   if (mas[0]==')' || mas[strlen(mas)-1]=='(')
{
        cout << "INVALID";
   }
        return 0;
}
вот так отправил
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.11.2010, 16:59 #13
Hardcore, Не пройдет. И знаете почему?
C++
1
2
3
4
5
6
7
8
        for (int i=0; i<=strlen(mas);i++){
                if ('('){
                        lays++;
                }
                if (')') {
                        lays--;
                }
        }
Во-первых выход за пределы массива. ВО вторых - нет сравнения элементов строки.
1
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
18.11.2010, 17:03 #14
Последнего условия недостаточно, т.к. если написать "())(()", то оно не сработает. Надо обобщить.
1
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
18.11.2010, 17:05 #15
Цитата Сообщение от Hardcore Посмотреть сообщение
for (int i=0; i<=strlen(mas);i++)
через while+указатель сделай, зачем по сто раз по строке бегать(strlen).
1
Yandex
Объявления
18.11.2010, 17:05
Ответ Создать тему
Опции темы

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