0

ユーザー入力の 2 回の違いを伝えるプログラムを作成しようとしています。これについてどうすればよいかわかりません。エラーが発生します:

27 行目 | エラー: バイナリ 'operator-' へのタイプ 'int' および 'const MyTime*' の無効なオペランド |

行 |39|エラー: 引数 '1' の 'MyTime' を 'const MyTime*' に変換できません。

この問題についても多くの助けが必要です。私は良いカリキュラムを持っていませんし、私のクラスの教科書はプログラミングのためのクリフノートのようなものです. これがこの大学での最後の授業になります。私が使用している C++ テストブック (授業用ではない私自身のもの) は、Sam の C++ で、1 日 1 時間です。

#include <iostream>
#include<cstdlib>
#include<cstring>

using namespace std;
struct MyTime { int hours, minutes, seconds; };
int DetermineElapsedTime(const MyTime *t1, const MyTime *t2);

long t1, t2;

int DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    return((int)t2-t1);
}


int main(void)
{
    char delim1, delim2;
    MyTime tm, tm2;
    cout << "Input two formats for the time. Separate each with a space. Ex: hr:min:sec\n";
    cin >> tm.hours >> delim1 >> tm.minutes >> delim2 >> tm.seconds;
    cin >> tm2.hours >> delim1 >> tm2.minutes >> delim2 >> tm2.seconds;

    DetermineElapsedTime(tm, tm2);

    return 0;

}

まずエラーを修正する必要があります。誰にもアイデアはありますか??

4

1 に答える 1

1

の実装をご覧くださいDetermineElapsedTime

struct MyTime { int hours, minutes, seconds; };

...

int DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    return((int)t2-t1);
}

行の意味をコンパイラがどのように認識すべきか

    return((int)t2-t1);

2 つの構造を単純に減算することはできません。これは自分で実装する必要があります。

編集:

使った方がいい

int DetermineElapsedTime(MyTime &t1, MyTime &t2)

これは C++ に似ています。

最終的には(まだ醜いですが、今のところ主な問題だけが残っています)

構造内のデータを減算するための解決策を見つける必要がありますMyTime

#include <iostream>
#include<cstdlib>
#include<cstring>

using namespace std;
struct MyTime { int hours, minutes, seconds; };


int DetermineElapsedTime(MyTime &t1, MyTime &t2)
{
    // TODO: This is not correct! Implement the correct way.
    return((int)t2-t1);
}

int main(void)
{
    char delim1, delim2;
    MyTime tm, tm2;
    cout << "Input two formats for the time. Separate each with a space. Ex: hr:min:sec\n";
    cin >> tm.hours >> delim1 >> tm.minutes >> delim2 >> tm.seconds;
    cin >> tm2.hours >> delim1 >> tm2.minutes >> delim2 >> tm2.seconds;

    DetermineElapsedTime(tm, tm2);

    return 0;

}
于 2012-11-12T05:06:57.400 に答える