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

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

Войти
Регистрация
Восстановить пароль
 
AlenaShch
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 29
#1

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

21.09.2013, 23:08. Просмотров 595. Ответов 2
Метки нет (Все метки)

Задача: Написать программу, в которой осуществляется перегрузка операции сложения. Разработать класс 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++
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в...

При вводе в строку цифр буквы выдается сообщение «Это не цифра».как? - C++
Помогите написать программу для выполнения следующих действий. При вводе в строку цифр буквы выдается сообщение «Это не цифра».

Работа с файлами. Как добавить переход на новую строку при записи? - C++
Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.»,...

Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле? - C++
подскажите пожалуйста, как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?. ПС не...

При вводе пропускает первую строку - C++
cout&lt;&lt;&quot;\nVvedite text: &quot;; for (int i=0; i &lt; n; i++) { cout&lt;&lt;&quot;Vvedite&quot;&lt;&lt;i+1&lt;&lt;&quot;stroku\n&quot;; gets(txt); fprintf(f1, &quot;%s\n&quot;,...

Обрезать строку при вводе через fgets - C++
Всем доброго времени суток! Столкнулся с такой проблемой - заполняю список значений следующей процедурой void addToQueue(T_Queue...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
21.09.2013, 23:14 #2
C++
1
2
cout << "часы, минуты, секунды: ";
cin >> h >> m >> s;
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2013, 23:16 #3
Не нужно ввод с выводом совмещать. Укажите, что ввести (часы, минуты, секунды), этого достаточно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 23:16
Привет! Вот еще темы с ответами:

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? - C++
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

Переход на новую строку при записи в файл - C++
Привет всем, я пишу такую программу.. С клавиатуры вводятся две матрицы, на выбор пользователя она записывается в файл либо в виде...

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

Почему при выводе курсор переходит на новую строку? - C++
Проблема в том, что в компиляторе Dev-Cpp при выводе чего-то оно само переходит на новую строку без &quot;\n&quot;. Как настроить его так, чтобы...


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

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

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