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

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

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

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

29.04.2012, 14:43. Просмотров 268. Ответов 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 описаны в другом классе.
Подскажите как дальше действовать, заранее всем благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2012, 14:43     Вызов функции 2 раза
Посмотрите здесь:

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

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

Вызов функции - C++
Привет всем. Вот такая структура кода: void Sailary() void SetShop() void SetMenu() void ResetData() int main()

Вызов неопрелелнной функции в QT - C++
Здравствуйте. Помогите, пожалуйста, с проблемой : не могу вызвать метод из QMap. mainwindiw.h: class MainWindow : public QMainWindow...

Вызов функции по ссылке в C++ - C++
Привет форумчане. Возникла у меня такая проблем с решением задачи. Не могу сообразить как её сделать. Если несложно то помогите пожалуйста....

Вызов функции по ссылке - C++
Написать функцию SumDigit(N1,N2), находящую сумму и количество чисел от N1 до N2, сумму и количество четных чисел от N1 до N2 (N1,N2 -...

Вызов виртуальной функции - C++
Здравствуйте, есть код: #include &lt;iostream&gt; using namespace std; class A{ public: virtual void doIt() {cout &lt;&lt; &quot;1&quot;;} ...

Вызов функции в ребенке - C++
Доброе время суток. Есть класс A и в нем есть функция void funcA(void). И есть каласс B : public A который унаследует A. Но когда я пишу в...

Вызов массива в функции - C++
помогите пожалуйста. не получается вызвать массив подсчитанный в функции god. kol считает верно, и выводит в функции main. а массив &quot;а&quot;...

Вызов функции по таймеру - C++
Здравствуйте. По нажатию на кнопку (на форме) вызывается функция, скажем, SomeFunction (); которая выполняет определенную задачу (суть не...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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