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

Программа просит ввести время и провеяет правильно ли было введено - C++

Восстановить пароль Регистрация
 
каддафи
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 91
01.12.2012, 16:16     Программа просит ввести время и провеяет правильно ли было введено #1
Вот задание

Программа запрашивает время в формате hh:mm:ss и проверяет корректность ввода, выводя соответствующее сообщение, например:
23:09:03 - правильно,
2:2:2 – неправильный формат,
12:02:94 – неправильное время,
14.05.35 - неправильный формат,
qw2:we34 - неправильный формат

Написал свой код как смог. Но мне кажется можно было проще написать.

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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{string s;
    char str[9] ="zz:zz:zz";
    
    cout <<"VVedite vremya v formate HH:MM:SS" << endl;
    cin >>str[0]>>str[1]>>str[2]>>str[3]>>str[4]>>str[5]>>str[6]>>str[7]; //вводим время
    if (str[0]=='0'||str[0]=='1'||str[0]=='2') //проеверяем чтоб первая цифра была 0 или 1 или 2
    {s="Pravilno";}
    else
    {cout<<"Nepravilnii vvod"<<endl;
    system("pause");
    return 0;}
    if (str[2]!=':'||str[5]!=':') // Проверяем чтоб  3 и 5 символ был всегда :
    {cout<<"Nepravilnii format"<< endl;
    system ("Pause");
    return 0;}
    else 
    {
    if (str[3]=='0'||str[3]=='1'||str[3]=='2'||str[3]=='3'||str[3]=='4'||str[3]=='5') // Проверяем чтоб 3 символ был не больше 5
    {s="Pravilno";}
    else {cout << "Nepravilnii vvod"<<endl;
         system ("Pause");
         return 0;}}
    if (str[6]=='0'||str[6]=='1'||str[6]=='2'||str[6]=='3'||str[6]=='4'||str[6]=='5') // Проверяем чтоб 6 символ был не больше 5
    {s="Pravilno";}
    else {cout<<"Nepravilnii vvod"<<endl;
         system("pause");
         return 0;}
       
    for (int i=0; str[i]!='\0'; i++)  // Отсюда и далее вывод всего массива если все правильно введено.       
    cout <<str[i];  
    cout <<" "<<s <<endl; 
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 16:16     Программа просит ввести время и провеяет правильно ли было введено
Посмотрите здесь:

C++ Как посчитать сколько раз было введено число
Написать функцию. Функция должна выводить сообщение об ошибке, если было введено два слова и более C++
Программа просит ввести любое число от -80 до 80, после чего выводит в столбец все числа от 0 до введенного C++
C++ Программа просит ввести число и умножить его на два, затем произведение умножить на два и т.д.
Ввести x,y и в зависимости от того что введено - вывести 0 , 1 , или 2 C++
Главная функция просит ввести пять чисел, а вспомогательная выводит только те, что кратны трем. C++
7пасите ! Программа которая показывает что было введено ! Знак,Цифра,Буква , Заглавная или прописная , C++
C++ Ввести время и от него отнять системное время

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
01.12.2012, 17: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
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include "iostream"
#include "windows.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    char str[9] = "hh:mm:ss";
    int h, m, s;
    char chr1[2], chr2[2];
    char temp[2];
 
    cout << "Введите время в формате HH::MM::SS" << endl;
    cin >> h >> chr1[0] >> m >> chr2[0] >> s;
    chr1[1] = chr2[1] = '\0';
 
 
    if (h<0 || h>24 || m<0 || m>60 || s<0 || s>60 || strcmp(chr1, ":")!=0 || strcmp(chr2, ":")!=0)
    {
        cout << "Неправильный ввод" << endl;
        system("pause");
        return 1;
    }
    else
    {
        cout << "Правильный ввод." << endl;
        itoa(h, temp, 10);  strcpy(str, temp);
        strcat(str, chr1);
        itoa(m, temp, 10);  strcat(str, temp);
        strcat(str, chr2);
        itoa(s, temp, 10);  strcat(str, temp);
        cout << str << endl;
    }
    
    
    
    system("pause");
    return 0;
}
вроде правильно работает, но в конце почему то ошибка выскакивает. не знаю почему так
Yandex
Объявления
01.12.2012, 17:38     Программа просит ввести время и провеяет правильно ли было введено
Ответ Создать тему
Опции темы

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