안녕하세요 저는 초보자 인 C++ 학생이며이를 수행하는 방법을 알 수 없습니다. 나는 우리가 아래에서 시작했던 것과 매우 유사하기 때문에 내가 작업하고있는 코드를 작성하지 않았다. getTimeFromUser 함수 나 다른 많은 함수에서 문자열 변수를 어떻게 처리해야하는지 알 수 없습니다. 다음은 우리가 수행해야 할 작업과 참조 연산자를 사용하여 작성한 원래 코드에 대한 설명입니다.모든 참조 변수를 포인터 변수로 변환
이 코딩 할당에서는 포인터 (참조 연산자 없음)를 사용하여이 코드를 다시 작성해야합니다. 구조체의 변수 (시, 분, 초)를 제외하고 정의 된 모든 변수에 포인터를 사용해야합니다. 우리는 완전히 다시 작성하지 말고, 참조 연산자 대신 포인터를 사용하는 데 필요한 것을 변경하십시오.
나열된 것들 중 일부는 다음과 같습니다. 1 : 구조체 내부의 변수를 제외한 모든 변수를 포인터로 전환해야합니다.
2 : 새로운 연산자를 사용하여 동적으로 메모리를 할당합니다. 부터는 참조 연산자를 사용할 수 없으므로 new 연산자를 사용해야합니다.
3 : 변수 을 더 이상 필요로하지 않으면 메모리 할당을 해제해야합니다. 이 작업은 delete 함수를 사용하여 수행 할 수 있습니다.
4 : 구조 포인터 (예 : Time * startTime)가있는 경우 연산자를 사용하여 의 멤버 변수에 액세스하지 마십시오. 예 : startTime.hours를 수정해야합니다.
5 : 문자열 포인터 (예 : string * tmpStr)가있는 경우 이전의 것과 유사하므로 연산자를 사용하여 멤버 함수에 액세스하지 마십시오. 예 : tmpStr.length()를 수정해야합니다.
#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
#include <stdlib.h>
#include <cstddef>
#include <fstream>
using namespace std;
struct Time
{
int hour;
int minute;
int second;
Time()
{
hour=0;
minute=0;
second=0;
}
};
void getTimeFromUser(Time &value)
{
string fill, fille, filler;
getline(cin, fill, ':');
value.hour = atoi(fill.c_str());
getline(cin, fille, ':');
value.minute = atoi(fille.c_str());
getline(cin, filler);
value.second = atoi(filler.c_str());
}
void print24Hour(Time a)
{
if(a.hour <=9)
{
cout<<setfill('0')<< setw(2);
}
cout<<a.hour<<":";
if (a.minute <=9)
{
cout<<setfill('0')<<setw(2);
}
cout<<a.minute<<":";
if(a.second <=9)
{
cout<<setfill('0')<<setw(2);
}
cout<<a.second<< endl;
}
int main()
{
Time value;
cout<<"Please enter the time of your course. HH:MM:SS" << endl;
getTimeFromUser(value);
cout<<"Your start time is ";
print24Hour(value);
cout<<"Please enter your end time"<< endl;
getTimeFromUser(value);
cout<<"Your end time is ";
print24Hour(value);
return 0;
}
질문에 대한 부록으로 어쨌든 귀하의 시도를 별도의 목록에 게시하십시오. 동적 할당을 사용하는 이유를 생각해 볼 수 있습니다. * 할당되지 않은 *이 할당에 필요합니다. 할당이 무의미하다고 생각하면 혼자가 아닙니다. – WhozCraig
단지 최악의 학교 C++ 임무 규정을 보았을 때 ... –