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

В результате ввода переменной int присваивается символ - C++

Войти
Регистрация
Восстановить пароль
 
iNsomNia7
2 / 2 / 0
Регистрация: 19.11.2012
Сообщений: 32
24.03.2013, 11:30     В результате ввода переменной int присваивается символ #1
Создайте структуру с именем time. Три ее поля, имеющие тип int, будут называться hours, minutes и seconds. Напишите программу, которая просит пользователя ввести время в формате часы, минуты, секунды. Можно запрашивать на ввод как три значения сразу, так и выводить для каждой величины отдельное приглашение. Программа должна хранить время в структурной переменной типа time и выводить количество секунд в веденном времени, определяемое по формуле:

long totalsecs = t1.hours * 3600 + t1.minutes * 60 + t1.seconds;

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//9.cpp
#include <iostream>
#include <conio.h>
using namespace std;
 
struct time
{
     int hours;
     int minutes;
     int seconds;
};
 
int main()
{
    time Time;
    Time.hours = -2;
    Time.minutes = -2;
    Time.seconds = -2;
    unsigned long totalsecs;
    char dir = 'a';
    while(Time.hours < 0 || Time.hours > 24)
    {
        cout << "Enter the number of hours: ";
        cin >> Time.hours;
        if(Time.hours < 0 || Time.hours > 24)
        {
            cout << "Wrong Time!";
            do
            {
                cout << "\nContinue?(y/n)";
                dir = getche();
            }
            while(dir != 'y' && dir != 'n');
            if(dir == 'y')
            {
                cout << endl;
                continue;
            }
            else
            {
                cout << "\nExit..\n";
                system("pause");
                exit(0);
            }
        }
    };
 
    while(Time.minutes < 0 || Time.minutes >= 60)
    {
        cout << "Enter the number of minutes: ";
        cin >> Time.minutes;
        if(Time.minutes < 0 || Time.minutes >= 60)
        {
            cout << "Wrong time!";
            do
            {
                cout << "\nContinue?(y/n)";
                dir = getche();
            }while(dir != 'y' && dir != 'n');
            if(dir == 'y')
            {
                cout << endl;
                continue;
            }
            if(dir == 'n')
            {
                cout << "\nExit...\n";
                system("pause");
                exit(0);
            }
        }
    };
 
    while(Time.seconds < 0 || Time.seconds >= 60)
    {
        cout << "Enter the number of seconds: ";
        cin >> Time.seconds;
        if(Time.seconds < 0 || Time.seconds >= 60)
        {
            cout << "Wrong time!";
            do
            {
                cout << "\nContinue?(y/n)";
                dir = getche();
            }
            while(dir != 'y' && dir != 'n');
            if(dir == 'y')
            {
                cout << endl;
                continue;
            }
            else 
            {
                cout << "\nExit...\n";
                system("pause");
                exit(0);
            }
        }
    };
            
    totalsecs = Time.hours * 3600 + Time.minutes * 60 + Time.seconds;
    cout << "Totalsecs: " << totalsecs << endl;
 
    system("pause");
    return 0;
}
Я немного отхожу от условия задачи и пытаюсь усложнить, т.е. предусмотреть случаи, когда будет введены числа отрицательные или не соответствующие полям, к примеру (hours > 24 || hours < 0), но не могу ничего поделать, если вместо цифры вводится символ.
Знаю, что можно через getche считывать каждый символ, но на мой взгляд, это очень уныло и нерационально...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
 Аватар для Игорь с++
432 / 455 / 16
Регистрация: 26.01.2011
Сообщений: 2,031
24.03.2013, 11:39     В результате ввода переменной int присваивается символ #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
#include <cstdlib>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int a;
    
    cin>>a;
    
    if(a==CHAR(a)){
          cout<<"Ok\n";
          }
          
else {
     
     cout<<"Error\n";
     
     }
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
iNsomNia7
2 / 2 / 0
Регистрация: 19.11.2012
Сообщений: 32
24.03.2013, 11:42  [ТС]     В результате ввода переменной int присваивается символ #3
А можно немного пояснить?
Половину операций не понял, только начинаю изучать C++
Игорь с++
 Аватар для Игорь с++
432 / 455 / 16
Регистрация: 26.01.2011
Сообщений: 2,031
24.03.2013, 11:44     В результате ввода переменной int присваивается символ #4
iNsomNia7, что именно не понятно ?
iNsomNia7
2 / 2 / 0
Регистрация: 19.11.2012
Сообщений: 32
24.03.2013, 11:50  [ТС]     В результате ввода переменной int присваивается символ #5
Цитата Сообщение от Игорь с++ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, char *argv[])
{
    int a;
    
    cin>>a;
    
    if(a==CHAR(a)){
          cout<<"Ok\n";
          }
          
else {
     
     cout<<"Error\n";
     
     }
Просто не имею даже малейшего понятия о том, что написано в скобках main, да и дальнейшие действия тоже не очень понимаю(
Игорь с++
 Аватар для Игорь с++
432 / 455 / 16
Регистрация: 26.01.2011
Сообщений: 2,031
24.03.2013, 11:55     В результате ввода переменной int присваивается символ #6
C++
1
2
3
4
5
6
7
8
9
10
11
cin>>a;//ввод данных
    
    if(a==CHAR(a)){//сравнивание данных с символами , if - оператор если , 
          cout<<"Ok\n";// то что то делаем
          }
          
else {// else - иначе если условие не выполнилось 
     
     cout<<"Error\n";//выводим данную запись
     
     }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12289 / 6976 / 784
Регистрация: 27.09.2012
Сообщений: 17,286
Записей в блоге: 2
Завершенные тесты: 1
24.03.2013, 16:35     В результате ввода переменной int присваивается символ #7
Цитата Сообщение от iNsomNia7 Посмотреть сообщение
Просто не имею даже малейшего понятия о том, что написано в скобках main
Можете удалить параметры.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 16:53     В результате ввода переменной int присваивается символ
Еще ссылки по теме:

Почему переменной присваивается произвольное значение("мусор")? C++
C++ Окончание ввода в vector<int> по '\n'
C++ Максимальное значение переменной типа int
C++ Перевести символ из символьной матрицы в int
Не присваивается значение переменной C++

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

Или воспользуйтесь поиском по форуму:
Banddk
37 / 37 / 1
Регистрация: 08.12.2012
Сообщений: 157
Записей в блоге: 1
24.03.2013, 16:53     В результате ввода переменной int присваивается символ #8
C++
1
2
3
4
5
int a;
    cin>>a;
    if(cin.fail()){
        cout<<"не число";
    }
вот проверка является ли это числом.
Yandex
Объявления
24.03.2013, 16:53     В результате ввода переменной int присваивается символ
Ответ Создать тему
Опции темы

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