2014-04-15 3 views
-1

안녕하세요 저는 초보자 인 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; 
} 
+0

질문에 대한 부록으로 어쨌든 귀하의 시도를 별도의 목록에 게시하십시오. 동적 할당을 사용하는 이유를 생각해 볼 수 있습니다. * 할당되지 않은 *이 할당에 필요합니다. 할당이 무의미하다고 생각하면 혼자가 아닙니다. – WhozCraig

+0

단지 최악의 학교 C++ 임무 규정을 보았을 때 ... –

답변

0

그들은 당신이 (*fill)에 그 이후 fill, 변화가 있었다 어디든지

string *fill = new string; 

다음과

string fill; 

를 교체합니다.

이것은 BTW를 수행하는 데 매우 어렵고 완전히 어리 석습니다. 일단이 과제를 마치면 배운 모든 것을 잊어 버려야합니다.