날짜마다, 몇분 통화했는지, 몇번 통화했는지 하는 자료가 있다. 그 자료를 토대로, 날짜 구간을 주면 통화량, 통화횟수를
출력하는 프로그램이다.
입력 받는 파일은 2가지로, 하나(phone.inp)는 날짜에따른 정보들이 들어있고, 하나의 파일(calling.inp)에는 날짜 구간이
들어있다.
출력 파일(calling.out)은 하나다.
전체적인 구조는 Call Class 를 만들어 사용했다.
개념은 단순하기 때문에 여기서 더 설명할 건 없을 것 같다.
main()함수의 안에는 최대한 간결하게 했다.
간결하다. 객체 선언후 파일을 읽고 프린트를 해준다. 함수의 이름과 기능이 다소 맞지 않은 것 같은데 이점은 좀더 보완
해야 할 것 같다.
다음은 클래스 멤버함수들이다.
더욱 간결하게 짤려고 했는데 더 복잡해 보이는 것 같다. 아직 많이 모자르다.
멤버함수들에 대해 설명하자면, setphonedata, setcallingdata 은 함수명 그대로 각자의 파일에 대한 입력을 받는다.
print 함수 또한 이름에서 나오듯 결과 값을 출력한다.
전체적인 구조는 setphonedata에서 벡터에 입력받은 값들을 넣어준다. 넣어줄때는 이전 통화량에 현 통화량을 합해서 넣
넣어준다. 이는 이 자료가 어떻게 쓰이느냐에 따른 것으로, 이 문제에서 요구하는 자료는 구간사이에 총 통화량, 통화수이
다. 저렇게 합해서 넣어주면 구간이 정해졌을 때, A~B까지라고 한다면,
B의 데이터 - (A-1)의 데이터 로 계산하면 그 구간의 값이 나오기 때문에, 이 자료형에서 저런 형태로 넣는 건
바람직 하다고 생각한다. 후에 나머지는 단순히 구간을 받아서 위에 말한 것 처럼 구간의 값을 계산해
출력해주는 부분 밖에 없다.
이 문제에서 놓친 점이 있다면, file 을 open 하고나서 close 를 하지 않았다는 점. 그리고 파일이 오류로 열리지 않았을때
예외를 처리해 주지 않은 점 등등 문제가 많다.
'P > C++' 카테고리의 다른 글
The Trip (2) | 2014.06.27 |
---|---|
ACM 문제중 WERTYU (0) | 2013.09.06 |
링크드리스트로 하드디스크 흉내내기. (0) | 2012.11.13 |
strlen(), strcpy() 구현 (0) | 2012.08.29 |
비속어찾기 프로그램 (0) | 2012.08.29 |