Это код, который я написал, чтобы добавить два временных объекта, может ли кто-нибудь помочь? Я хочу, чтобы этот пользователь вводил время, и он добавляет время вместе.
Пожалуйста, скажите мне, где я ошибся! Пожалуйста.
class time
{
public: int hh,mm,ss;
};
int main()
{
time t1;
time t2;
cout<<"Enter hour : ";
cin>>t1.hh;
cout<<endl<<"Enter minutes : ";
cin>>t1.mm;
cout<<endl<<"Enter seconds : ";
cin>>t1.ss;
cout<<endl<<"Enter hour : ";
cin>>t2.hh;
cout<<endl<<"Enter minutes : ";
cin>>t2.mm;
cout<<endl<<"Enter seconds : ";
cin>>t2.ss;
cout<<endl;
cout<<t1.hh<<":"<<t1.mm<<":"<<t1.ss;
cout<<" + ";
cout<<t2.hh<<":"<<t2.mm<<":"<<t2.ss;
cout<<" = ";
cout<<t1.hh+t2.hh<<":"<<t1.mm+t2.mm<<":"<<t1.ss+t2.ss;
getch();
return 0;
}
Компиляция создает следующие ошибки:
main.cpp: 13: ошибка: ожидается
;' before 't1'
main.cpp:14: error: expected;' before 't1'
main.cpp:14: error: expected;' before 't1'
; до 't2'
main.cpp:14: error: expected
main.cpp: 17: ошибка: 't1' не был объявлен в этой области
main.cpp: 24: ошибка: "t2" не была объявлена в этой области
Я предполагаю, что следующие строки не показаны:
#include <iostream>
#include <stdlib.h>
using namespace std;
Измените эту строку...
class t1;
class t2;
... чтобы...
class time t1;
class time t2;
... и ваша программа должна скомпилироваться.
Кроме того, getch
является частью библиотеки conio
, чего у меня нет по какой-то причине, поэтому вместо этого я использую getchar
:
getchar();
return 0;
Было бы проще, если бы вы указали ошибку, с которой вы столкнулись.
Однако, вы, безусловно, должны меняться
class t1;
class t2;
в
time t1;
time t2;
Кроме того, вы должны избегать использования имени time
поскольку оно является довольно классической функцией в c++. Вы можете позвонить своему классу Time
чтобы убедиться, что читатель не будет неправильно понимать ваш код.
Разумеется, вы должны также изменить объявление t1
и t2
. Это означает, что вы можете попробовать:
class Time
{
public: int hh,mm,ss;
};
int main()
{
Time t1;
Time t2;
[...]
Собранные вместе вышеприведенными советами, это должно скомпилировать и выполнить работу:
#include <iostream>
using namespace std;
class Time
{
public: int hh,mm,ss;
};
int main()
{
Time t1;
Time t2;
cout<<"Enter hour : ";
cin>>t1.hh;
cout<<endl<<"Enter minutes : ";
cin>>t1.mm;
cout<<endl<<"Enter seconds : ";
cin>>t1.ss;
cout<<endl<<"Enter hour : ";
cin>>t2.hh;
cout<<endl<<"Enter minutes : ";
cin>>t2.mm;
cout<<endl<<"Enter seconds : ";
cin>>t2.ss;
cout<<endl;
cout<<t1.hh<<":"<<t1.mm<<":"<<t1.ss;
cout<<" + ";
cout<<t2.hh<<":"<<t2.mm<<":"<<t2.ss;
cout<<" = ";
cout<<t1.hh+t2.hh<<":"<<t1.mm+t2.mm<<":"<<t1.ss+t2.ss;
getchar();
return 0;
}
Изменить на:
int main()
{
time t1;
time t2;
Также вы не обрабатываете переполнения при добавлении времени (иначе вы можете получить более 60 секунд):
time t3;
t3.hh = t1.hh + t2.hh;
t3.mm = t1.mm + t2.mm;
t3.ss = t1.ss + t2.ss;
if (t3.ss >= 60)
{
t3.ss -= 60;
t3.mm += 1;
}
if (t3.mm >= 60)
{
t3.mm -= 60;
t3.hh += 1;
}
cout << t3.hh << t3.mm << t3.ss << endl;