Member 12622319 Ответов: 2

Цикл for не работает?


#include <iostream>
#include <iomanip>
#include "C1A7E1_MyTime.h"
using namespace std;

MyTime *DetermineElapsedTime(const MyTime *tp1, const MyTime *tp2);
int main()
{
   for (int loop_count = 0; loop_count < 3; loop_count++)
    {
    	
        cout << "Enter time point one, space separated:\n";
        cin >> tm1.hours >> tm1.minutes >> tm1.seconds;
        cout << "Enter time point one, space separated:\n";
        cin >> tm2.hours >> tm2.minutes >> tm2.seconds;
        cout << "entering function!";
        DetermineElapsedTime(const tm1, const tm2)
				 }
    const MyTime tm1 = { 2, 0, 0};
    const MyTime tm2 = { 0, 0, 0};
    MyTime time_dif = *DetermineElapsedTime(&tm1, &tm2);
    cout << "The time elapsed from ";
    cout << setfill('0') << setw(2) << tm1.hours << ":";
    cout << setfill('0') << setw(2) << tm1.minutes << ":";
    cout << setfill('0') << setw(2) << tm1.seconds;
    cout << " to ";
    cout << setfill('0') << setw(2) << tm2.hours << ":";
    cout << setfill('0') << setw(2) << tm2.minutes << ":";
    cout << setfill('0') << setw(2) << tm2.seconds;
    cout << " is ";
    cout << time_dif.hours << ":" << time_dif.minutes << ":" << time_dif.seconds << "\n";
}


C1A7E1_MyTime.h


#ifndef Class_Test_C1A7E1_MyTime_h
#define Class_Test_C1A7E1_MyTime_h
using namespace std;
struct MyTime { int hours, minutes, seconds; }; /* do not change this */

#endif

C1A7E1_DetermineElapsedTime.cpp


#include <iostream>
#include "C1A7E1_MyTime.h"
using namespace std;
MyTime *DetermineElapsedTime(const MyTime *tp1, const MyTime *tp2)
{
    static MyTime return_time;
    MyTime testy1, testy2;
    testy1 = *tp1;
    testy2 = *tp2;
    long time_point_dif;
    time_point_dif = (long(testy1.hours) * 3600 + long(testy1.minutes) * 60 + long(testy1.seconds)) - \
    (long(testy2.hours) * 3600 + long(testy2.minutes) * 60 + long(testy2.seconds));
    return_time.hours = int(time_point_dif / 3600);
    time_point_dif -= return_time.hours * 3600;
    return_time.minutes = int(time_point_dif / 60);
    time_point_dif -= return_time.minutes * 60;
    return_time.seconds = int(time_point_dif);
    return(&return_time);
  
}


Что я уже пробовал:

Я пытался создать тип данных int tm1, tm2? Не знаю, почему я получаю ошибку не в области видимости.

Richard MacCutchan

Вы объявили tm1 и tm2 после цикла for, так что это не сработает. Вы также объявили их постоянными, поэтому вам не разрешается их изменять.

Member 12622319

Я попытался поставить переменные перед циклом for, но это не сработало.
Пожалуйста, попробуйте сами, чтобы увидеть сообщение об ошибке, которое я получаю?

Richard MacCutchan

Я сделал это, и я сказал вам, как это исправить. Поместите переменные до то for петлю, и снимите const ключевое слово. И в будущем, если вы увидите сообщение об ошибке, пожалуйста, разместите его в своем сообщении здесь, а не говорите другим людям сделать это.

Member 12622319

Я попытался поставить переменные перед циклом for, но это не сработало.
Пожалуйста, попробуйте сами, чтобы увидеть сообщение об ошибке, которое я получаю?

Philippe Mori

Прочтите сообщение об ошибке компилятора и устраните эту проблему.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я пытался создать тип данных int tm1, tm2? Не знаю, почему я получаю ошибку не в области видимости.
Компилятор недоволен, потому что вы используете tm1 и tm2 до создавая их.
В принципе, вы не можете использовать что-то, прежде чем объявить это.

[Обновление]
Цитата:
Да, но что мне с этим делать, я уже пытался объявить переменную раньше, и она все еще не работает?
Не объявляйте их как const или не пиши в них.


Member 12622319

Да, но что мне с этим делать, я уже пытался объявить переменную раньше, и она все еще не работает?

Рейтинг:
0

jeron1

const MyTime tm1 = { 2, 0, 0};
const MyTime tm2 = { 0, 0, 0};

объявляются после блока цикла for. Переместитесь перед циклом for и повторите попытку.


Member 12622319

Я уже пробовал это сделать, но все равно ничего не получается. Вы тоже можете попробовать?
Разве это не решение?

jeron1

Как насчет того, чтобы переместить их и снять декларацию const? Поскольку вы записываете пользовательские значения в эти переменные, поэтому они не должны быть const. Возможно, опубликуйте точные ошибки компилятора, которые вы видите.

Member 12622319

Я пробовал ставить их перед циклом for, но изменение переменных на тип int все равно не работает. пожалуйста, попробуйте сами, чтобы увидеть сообщение об ошибке?

Philippe Mori

Это не к нам, чтобы попытаться совместно mpile код. Вы должны дать нам сообщение об ошибке, которое вы получите.
Кстати, этот ответ правильный, но вы должны исправить оставшиеся ошибки. Если вы не скажете нам об ошибках, то будет труднее угадать, хотя легко увидеть линию DetermineElapsedTime(const tm1, const tm2) в этом нет никакого смысла. Это не является ни действительным заявлением, ни действительной инструкцией, и это кажется бесполезным...