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

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

Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

Вызов функции 2 раза - C++

29.04.2012, 14:43. Просмотров 298. Ответов 0
Метки нет (Все метки)

Здравствуйте, уважаемые знатоки!
Помогите подправить код:
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
107
108
109
110
111
112
113
114
115
116
117
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <math.h>
 
class Time
{
        private:
    int hour,minute,second;
        public:
    friend class Bill;
};
 
class Bill
{
        private:
    char familiya_platelshika[50];
    char nomer_telefona[50];
    float tarif_za_minyty_razgovora;
    int skidka;
    char vremya_nachala_razgovora[10];
    char vremya_okonchaniya_razgovora[10];
    float summa_k_oplate;
        public:
    friend class Time;
    Time time;
    void Read();
    void PerevodVremeniIzCharVInt(char str[10]);
    float PerevodVremeniVMinytu();
    void Display();
};
 
void Bill::Read()
{
    while(true)
    {
        cout<<" Zapolnite sledyushie dannue:"<<endl;
        cout<<"Imya platelshika:             "; cin>>familiya_platelshika;
        cout<<"Nomer telefona:               "; cin>>nomer_telefona;
        cout<<"Tarif za minyty razgovora:    "; cin>>tarif_za_minyty_razgovora;
        cout<<"Skidka:                       "; cin>>skidka;
        cout<<"Vremya nachala razgovora:     "; cin>>vremya_nachala_razgovora;
        cout<<"Vremya okonchaniya razgovora: "; cin>>vremya_okonchaniya_razgovora;
        if(cin.peek()=='\n' && tarif_za_minyty_razgovora>0 && skidka>0)
        {
            cin.get();
            break;
        }
        else
        {
            clrscr();
            cout<<"Oshibka!!!\nZnacheniya vvedenu neverno.\nPovtorite vvod snova."<<endl<<endl;
            cin.clear();
            while(cin.get()!='\n') {  }
        }
    }
}
 
void Bill::PerevodVremeniIzCharVInt(char str[10])
{
    int i,hour,minute,second;
    char buf[10];
    hour=0;
    minute=0;
    second=0;
    for(int i=0,j=0,m=0;i<=strlen(str);i++)
    {
        if(str[i]==':'||!str[i])
        {
            switch(j)
            {
                case 0: hour=atoi(buf);   j++; m=0; break;
                case 1: minute=atoi(buf); j++; m=0; break;
                case 2: second=atoi(buf); j++; m=0; break;
            }
        }
        else
        {
            buf[m]=str[i];
            m++;
            buf[m]='\0';
        }
    }
    if((hour>=0 && hour<=23) && (minute>=0 && minute<=59) && (second>=0 && second<=59))
    {
        time.hour=hour;
        time.minute=minute;
        time.second=second;
    }
    else cout<<"Oshibka!!! Neverno vvedeno vremya."<<endl;
}
 
float Bill::PerevodVremeniVMinytu()
{
    return floor((time.hour*60.0+time.minute+(time.second/60.0))+0.5);
}
 
void Bill::Display()
{
    PerevodVremeniIzCharVInt(vremya_nachala_razgovora);
    cout<<PerevodVremeniVMinytu();
    PerevodVremeniIzCharVInt(vremya_okonchaniya_razgovora);
    cout<<endl<<PerevodVremeniVMinytu();
 
}
 
int main()
{
    Bill bill;
    bill.Read();
    bill.Display();
 
 
 
    getch();
    return 0;
}
Дело в том, что я хочу определить время в минутах, прошедшее с начала разговора до его конца.
Но вот в чем загвоздка: ввожу я время же в формуте чч:мм:сс, следовательно необходимо разбить его на числа, что я и сделал. Написал функцию перевода в минуты, но вот дальше ступор, т.к. время должно храниться в другом классе, а два поля в char описаны в другом классе.
Подскажите как дальше действовать, заранее всем благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2012, 14:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов функции 2 раза (C++):

Рекурсия (вызов только 3 раза) - C++
Привет! Есть программка, проблема заключается в том чтобы сделать вызов рекурсии ТОЛЬКО 3 раза, т.е. как при пароле, есть только 3 попытки....

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int &amp;ref){...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Вызов функции в возврате значения функции - C++
Есть функция: int function1(a) { ...... return function2(function1(b),function1(c)); } Как работает такая хитрая система?

Вызов функции в параметре другой функции - C++
программа: #include &lt;iostream&gt; using namespace std; struct E { E() {} }; void f(const E&amp; e)

вызов функции из под функции - C++
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 14:43
Привет! Вот еще темы с ответами:

Вызов функции - C++
Укажите правильный вариант вызова функции вместо пропуска …….. void func(int *p, int n, float k) { } main( ) { int...

Вызов функции - C++
Арифметические операции с длинными числами, которые представлены в виде массивов: есть функция умножения двух длинных чисел...

Вызов функции в C++ - C++
есть циклический вызов функции: for (int i=0; i&lt;start; i++) { if (classicZOT())...

Вызов функции - C++
Здравствуйте! Не могу вызвать функцию, объясните причину. template &lt;typename T&gt; void Calc_etalon (QDir &amp; DirTxt) { ...


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

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

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