5 / 5 / 5
Регистрация: 24.10.2012
Сообщений: 102
1

Определить, является ли последовательность корректной записью даты

12.01.2013, 16:37. Показов 1497. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С клавиатуры задается последовательность символов. Написать программу, которая проверяет, является ли эта последовательность корректной записью даты (датой считаем запись, где первым указанное число, после - месяц, а потом год (4 или 2 цифры), причем разделителями могут быть символы «/», «.» И «-»).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2013, 16:37
Ответы с готовыми решениями:

Проверить, является ли последовательность скобок корректной
Здравствуйте, нашел на просторах интернета такую задачу. Нам даны строки, содержащие скобки 4 видов...

Определить, является ли последовательность символов правильной записью нечетного числа в 14-ричной системе счисления
Как определить, является ли последовательность символов правильной записью нечетного числа в...

Проверка, является ли текст корректной записью вещественного числа
Прошу помощи в решении такой вот задачки Нужно написать процедуру, проверяющую является ли...

Определить, является ли последовательность правильной записью целого числа
Вот мой код. Его нужно переделать. Он проверяет посимвольно, а нужно чтобы как целую строку. Изьян...

7
83 / 9 / 6
Регистрация: 11.01.2013
Сообщений: 55
12.01.2013, 19:38 2
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    int chislo,mes,god;
    string s;
    cin>>s;
    int c=0;
    for(int a=0;a!=s.size();a++)
    {
        if((a!=3 || a!=5) && int(s[a])<47 && int(s[a])>58)
            c=1;
    }
    if(c==0 && ((s[2]=='/' && s[5]=='/') || (s[2]=='.' && s[5]=='.') || (s[2]=='-' && s[5]=='-')))
    {
        chislo=int(s[0]-'0')*10+int(s[1]-'0');
        mes=int(s[3]-'0')*10+int(s[4]-'0');
        if(s.size()>8)
            god=int(s[6]-'0')*1000+int(s[7]-'0')*100+int(s[8]-'0')*10+int(s[9]-'0');
        else
            god=int(s[6]-'0')*10+int(s[7]-'0')+2000;
        if(chislo<32 && mes<13)
            cout<<"Everything is correct"<<'\n';
        else
            c=1;
    }
    if(c==1)
        cout<<"Error"<<'\n';
    return 0;
}
Код немного кривой.Программа не учитывает максимальное количество дней в месяце.
0
5 / 5 / 5
Регистрация: 24.10.2012
Сообщений: 102
14.01.2013, 16:45  [ТС] 3
ап, нужен вариант с использованием структур...
0
83 / 9 / 6
Регистрация: 11.01.2013
Сообщений: 55
14.01.2013, 21:51 4
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
#include <iostream>
#include <string>
 
using namespace std;
struct date
{
    int chislo,mes,god;
    string s;
};
 
int main()
{
    date data;
    cin>>data.s;
    int c=0;
    for(int a=0;a!=data.s.size();a++)
    {
        if((a!=3 || a!=5) && int(data.s[a])<47 && int(data.s[a])>58)
            c=1;
    }
    if(c==0 && ((data.s[2]=='/' && data.s[5]=='/') || (data.s[2]=='.' && data.s[5]=='.') || (data.s[2]=='-' && data.s[5]=='-')))
    {
        data.chislo=int(data.s[0]-'0')*10+int(data.s[1]-'0');
        data.mes=int(data.s[3]-'0')*10+int(data.s[4]-'0');
        if(data.s.size()>8)
           data.god=int(data.s[6]-'0')*1000+int(data.s[7]-'0')*100+int(data.s[8]-'0')*10+int(data.s[9]-'0');
        else
            data.god=int(data.s[6]-'0')*10+int(data.s[7]-'0')+2000;
        if(data.chislo<32 && data.mes<13)
            cout<<"Everything is correct"<<'\n';
        else
            c=1;
    }
    if(c==1)
        cout<<"Error"<<'\n';
    return 0;
}

Нажимаем спасибо, не стесняемся
2
5 / 5 / 5
Регистрация: 24.10.2012
Сообщений: 102
14.01.2013, 22:51  [ТС] 5
Цитата Сообщение от Ласковая Киса Посмотреть сообщение
if((a!=3 || a!=5) && int(data.s[a])<47 && int(data.s[a])>58) c=1;
можеш объяснить эту строку?? =)

Добавлено через 7 минут
откуда цифры 3, 5, 47, 58
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.01.2013, 23:04 6
Цитата Сообщение от Ласковая Киса Посмотреть сообщение
C++
1
2
if(data.chislo<32 && data.mes<13)
    cout<<"Everything is correct"<<'\n';
1
5 / 5 / 5
Регистрация: 24.10.2012
Сообщений: 102
14.01.2013, 23:11  [ТС] 7
Цитата Сообщение от soon Посмотреть сообщение
я там так написал...
C++
1
2
3
4
5
if(data.chislo>=32 || data.mes>=13)
            c=1;
 
         else
            cout<<"Everything is correct"<<'\n';
но надо еще добавить проверку на месяц, ато 31 день вовсе не в каждом месяце =)
0
83 / 9 / 6
Регистрация: 11.01.2013
Сообщений: 55
15.01.2013, 00:06 8
Цитата Сообщение от TheVlad Посмотреть сообщение
можеш объяснить эту строку?? =)
откуда цифры 3, 5, 47, 58
3,5 - это чтобы не считало разделителей.
У каждого символа свой код.(string - это по сути массив char-ов) И вот так получилось что цифры 0-9 имеют код 47-58.
data.s[a] - это какой-то символ.
Написав int(data.s[a]) мы получили код этого символа.
И условием проверили является он цифрой или нет.
1
15.01.2013, 00:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2013, 00:06
Помогаю со студенческими работами здесь

Определить, является ли последовательность записью нечётного числа в пятнадцатеричной системе счисления
На вход программе подаётся последовательность символов, заканчивающаяся точкой (точка – признак...

Является ли последовательность скобок корректной
Дана последовательность скобок трёх типов: • – фигурные, • - квадратные, • () - круглые ...

Определить, является ли строка корректной датой
х=1 - дата ок х=2 - дата ок х=3 - не дата goto ddd: x=4 - не дата программа вылетает .. ...

Определить, является ли формула корректной относительно использованных в её записи скобок
Введённая строка представляет собой формулу. Определить, является ли формула корректной...

Определить, является ли формула корректной относительно использованных в её записи скобок
Введённая строка представляет собой формулу. Определить, является ли формула корректной...

Определить, является ли формула корректной относительно использованных в её записи скобок
Введённая строка представляет собой формулу. Определить, является ли формула корректной...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru