Вставьте значение в переменную класса из основной функции

0

Это код, который я написал, чтобы добавить два временных объекта, может ли кто-нибудь помочь? Я хочу, чтобы этот пользователь вводил время, и он добавляет время вместе.

Пожалуйста, скажите мне, где я ошибся! Пожалуйста.

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'
main.cpp:14: error: expected
; до 't2'
main.cpp: 17: ошибка: 't1' не был объявлен в этой области
main.cpp: 24: ошибка: "t2" не была объявлена в этой области

  • 0
    Что происходит? Проблема только в том, что вы не добавили endl после последнего вывода?
  • 0
    Сэр, это дает мне многократную ошибку.
Показать ещё 1 комментарий
Теги:
class

4 ответа

0
Лучший ответ

Я предполагаю, что следующие строки не показаны:

#include <iostream>
#include <stdlib.h>

using namespace std;

Измените эту строку...

class t1;
class t2;

... чтобы...

class time t1;
class time t2;

... и ваша программа должна скомпилироваться.

Кроме того, getch является частью библиотеки conio, чего у меня нет по какой-то причине, поэтому вместо этого я использую getchar:

getchar();
return 0;
  • 0
    Большое спасибо! успешно скомпилировано, спасибо !!!!
  • 0
    @ Mohsin Ошибка новичка. Нет проблем.
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;
  [...]
  • 0
    После улучшения кода выдает следующую ошибку. main.cpp: В функции 'int main ()': main.cpp: 12: 10: ошибка: ожидается ';' до момента t1 времени t1; ^ main.cpp: 13: 10: ошибка: ожидается ';' до момента t2 времени t2; ^ main.cpp: 16: 10: ошибка: 't1' не было объявлено в этой области cin >> t1.hh; ^ main.cpp: 23: 10: ошибка: 't2' не было объявлено в этой области cin >> t2.hh; ^
0

Собранные вместе вышеприведенными советами, это должно скомпилировать и выполнить работу:

#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;
}
  • 0
    Спасибо большое!
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;
  • 0
    Спасибо, я никогда не думал об этом!
  • 0
    Добро пожаловать :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню