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

Как при вводе не переносить двоеточие на новую строку? - C++

Восстановить пароль Регистрация
 
AlenaShch
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 29
21.09.2013, 23:08     Как при вводе не переносить двоеточие на новую строку? #1
Задача: Написать программу, в которой осуществляется перегрузка операции сложения. Разработать класс time, в состав которого включить операцию сложения его объектов. Объектом класса является время. Операторная функция, являясь методом класса time, складывает два времени. Результат - сложение двух значений времени.
Набирается время, cout переносит двоеточие на новую строку, puts еще и переводит на новую строку после двоеточия, scanfом тоже не получается. Можно вводить, как строку, но потом надо как-то разбивать и преобразовывать в int. Что посоветуете?

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
class TIME{
    int x,y,z;
        public:
            int h;
            int m;
            int s;
            TIME()
                {x=y=z=0;}
            TIME(int x1,int y1,int z1)
                {x=x1;y=y1;z=z1;}
/*          TIME operator +(TIME rh_ob);
            TIME operator +(int d);*/
            friend TIME operator +(TIME lh_ob,TIME rh_ob);
            friend ostream&operator<<(ostream&sm,TIME ob);
            void vvod();
            int addh(int,int);
            int addm(int,int);
            int adds(int,int);
    };
/*
TIME TIME::operator +(TIME rh_ob)
{TIME tmp;
tmp.x=x+rh_ob.x;
tmp.y=y+rh_ob.y;
tmp.z=z+rh_ob.z;
return tmp;
}
 
TIME TIME::operator +(int d)
{TIME tmp;
tmp.x=x+d; 
tmp.y=y+d;
tmp.z=z+d;
return tmp;
}
*/
 
TIME operator +(TIME lh_ob,TIME rh_ob)
{TIME tmp;
tmp.x=lh_ob.x+rh_ob.x;
tmp.y=lh_ob.y+rh_ob.y;
tmp.z=lh_ob.z+rh_ob.z;
return tmp;
}
 
ostream&operator<<(ostream&sm,TIME ob)
{sm<<ob.x<<","<<ob.y<<","<<ob.z<<endl;
return sm;
}
 
/*void TIME::vvod()
    {char str[10];
    char *t;
    cin>>str;
    t=strtok(str,":");
    cout<<t;
        do
        {t=strtok(NULL,":");
        if(t)
            printf(":%s",t);
        }while(t);
    return t;
    }
*/
    
void TIME::vvod()
    /*{cout<<endl<<"часы: ";
    cin>>h;
    cout<<"минуты: ";
    cin>>m;
    cout<<"секунды: ";
    cin>>s; 
    }
    {scanf("%d",&h);
    puts(":");
    scanf("%d",&m);
    puts(":");
    scanf("%d",&s);
    }*/
 
{cin>>h;
cout<<":";
cin>>m;
cout<<":";
cin>>s;
}
 
int TIME::addh(int h1,int h2)
    {int ah;
    ah=h1+h2;
    return ah;
    }
 
int TIME::addm(int m1,int m2)
    {int am;
    am=m1+m2;
    return am;
    }
 
int TIME::adds(int s1,int s2)
    {int as;
    as=s1+s2;
    return as;
    }
 
int _tmain()
{setlocale (LC_ALL,"Russian");
int ah,am,as;
TIME F,S,A;
cout<<"Введите первое время: ";
F.vvod();
cout<<"Первое время: "<<F.h<<":"<<F.m<<":"<<F.s;
cout<<endl<<endl<<endl<<"Введите второе время: ";
S.vvod();
cout<<"Второе время: "<<S.h<<":"<<S.m<<":"<<S.s;
ah=A.addh(F.h,S.h);
am=A.addm(F.m,S.m);
as=A.adds(F.s,S.s);
 
if(as>=60)
    {am=am+1;
    as=0+(as-60);
    }
if(am>=60)
    {ah=ah+1;
    am=0+(am-60);
    }
cout<<endl<<endl;
if((ah<10)&&(am>10)&&(as>10))
    {cout<<"Сложенное время: 0"<<ah<<":"<<am<<":"<<as<<endl;}
else if((ah>10)&&(am<10)&&(as>10))
    cout<<"Сложенное время: "<<ah<<":0"<<am<<":"<<as<<endl;
else if((ah>10)&&(am>10)&&(as<10))
    cout<<"Сложенное время: "<<ah<<":"<<am<<":0"<<as<<endl;
else if((ah<10)&&(am<10)&&(as>10))
    cout<<"Сложенное время: 0"<<ah<<":0"<<am<<":"<<as<<endl;
else if((ah>10)&&(am<10)&&(as<10))
    cout<<"Сложенное время: "<<ah<<":0"<<am<<":0"<<as<<endl;
else if((ah<10)&&(am<10)&&(as<10))
    cout<<"Сложенное время: 0"<<ah<<":0"<<am<<":0"<<as<<endl;
else
    cout<<"Сложенное время: "<<ah<<":"<<am<<":"<<as<<endl;
cout<<endl<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 23:08     Как при вводе не переносить двоеточие на новую строку?
Посмотрите здесь:

C++ Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
C++ При вводе в строку цифр буквы выдается сообщение «Это не цифра».как?
Переход на новую строку при записи в файл C++
C++ Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?
Обрезать строку при вводе через fgets C++
C++ При вводе пропускает первую строку
Работа с файлами. Как добавить переход на новую строку при записи? C++
Переход на новую строку при считывании из файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
21.09.2013, 23:14     Как при вводе не переносить двоеточие на новую строку? #2
C++
1
2
cout << "часы, минуты, секунды: ";
cin >> h >> m >> s;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2013, 23:16     Как при вводе не переносить двоеточие на новую строку? #3
Не нужно ввод с выводом совмещать. Укажите, что ввести (часы, минуты, секунды), этого достаточно.
Yandex
Объявления
21.09.2013, 23:16     Как при вводе не переносить двоеточие на новую строку?
Ответ Создать тему
Опции темы

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