극프
접속 : 5723   Lv. 64

Category

Profile

Counter

  • 오늘 : 34 명
  • 전체 : 105105 명
  • Mypi Ver. 0.3.1 β
[잡소리] 혹시 C++ 하실줄 아시는분도 계실까요? (18) 2012/11/19 AM 11:43
늦은나이에 졸업을 앞두고 있습니다
마지막남은 시험을 열심히 공부하고있는데
생각도 못한 과제물이 하나 들어왔네요
씨언어 배우긴 했지만 수정할정도 능력뿐이 안되서
새로 설계하는데 아주 큰 문제가 있습니다

그래서 예전엔 참고하는사이트에서 프로그램 구해서 따로 편집해서 제출 하고 그랬는데
이번과제는 못찾겠네요.. 유료로 판매하는사이트에서도 이번껀 안해준다고하고
혹시 도움 주실수 있으실까요?

C++이용하여 프로그래밍 하는겁니다

--------------------------------------------------------------

정수를 저장하는 객체를 만들기 위한 클래스를 설계하려고 한다.

이 클래스의 객체는 다음과 같이 동작한다.
① 저장할 수 있는 정수의 최대 개수는 객체가 생성될 때 지정한다.
② 숫자를 저장할 수 있다.
③ 가장 오래전에 저장한 숫자를 인출할 수 있다.
④ 마지막으로 저장한 숫자를 인출할 수 있다.
⑤ 저장된 숫자들 중 가장 큰 값을 인출할 수 있다.
⑥ 저장된 숫자들 중 가장 작은 값을 인출할 수 있다.
⑦ 저장된 숫자들의 평균을 구할 수 있다.
⑧ 저장할 수 있는 숫자의 최대 개수를 변경한다.
만일 현재 저장되어 있는 숫자의 개수보다 적을 때는 변경할 수 없다.

이러한 행위를 할 수 있도록 멤버함수 및 연산자를 포함하여 필요한 멤버
들을 포함하여 클래스를 선언하고, 앞에 나열한 모든 행위가 잘 동작하는지
확인할 수 있도록 이 클래스의 객체를 활용하는 프로그램을 작성한다.

☞ 주의
▷ 클래스는 각자 설계하며, 앞에 나열된 사항 외에 필요한 사항이
있다면 스스로 추가할 수 있다.
▷ STL을 사용하지 말고 직접 구현하라.
▷ C++ 언어로 작성해야 하며, 반드시 클래스를 활용해야 한다.
▷ 프로그램은 개인별로 작성하여야 하며, 공동 작업은 인정하지 않는다.
--------------------------------------------------------------------------

이렇게 인데 혹시 가능하시면 부탁드리겠습니다

기프티콘이라도 보내드릴께요 ㅠㅠ
프로그래밍 10년이상 배웠지만 이러고 있네요..

신고

 

Tilltue    친구신청

급하신 마음은 알겠지만..
이쪽으로 계속 공부하실거면 이거 꼭 혼자 풀어보셔야 할것 같습니다. 계속 의지하다보면 앞으로 나아갈수가 없어요.
시험을 잘보기 위해서라도 꼭 공부해서 풀어보세요~ 화이팅입니다.

실버에로우    친구신청

왠지 은행 인출 문제랑 비슷해 보이는게 내 착각인가?; 계좌 만들어서...

극프    친구신청

이쪽으로 계속 나갈생각이 없고 졸업장을 위한 학교라서 참 애매하네요..
이미 취직도 전혀 상관없는쪽이고 급한마음에 올려보긴했는데
막막하네요.. 어떻게 해야할지..

레이지군    친구신청

어렵지 않은 문제 같습니다. 근데 연산자를 포함 하여 클래스 선언이라고 하는것을 보면 add() sum() 같은 클래스도 포함하는 것인지요?

극프    친구신청

ADD SUM같은 클래스 포함은 아닌거같아요
이 과제물이 중간고사 범위였는데 중간고사 범위에선 아직 안나온거같네요

편안한 집    친구신청

1. 생성자에서 int size을 받아서 size 길이의 array를 만듭니다. (int *data = new int [size])

2. 저장할 때 0번에서부터 차례대로 넣습니다. 아마 어디까지 넣었는지 저장하는 count 변수가 필요할 것 같네요.

3. ③은 0번 인덱스의 값을 돌려주고 나머지 변수들을 앞으로 한 칸 씩 당깁니다. 이 후 count 변수를 1 내립니다. (하나 줄었으니깐...)

4. ④는 마지막 인덱스의 값을 돌려주고 count 변수를 1 내립니다.

5. ⑤랑 ⑥은 쭉 검색해서 최소/최대값을 찾은 뒤 그것을 돌려주고 그 뒤부터 변수들을 한 칸 씩 당긴 다음 count 변수를 1 내립니다.

6. ⑦은 그냥 쭉 돌면서 평균을 구하면 됩니다. 다 더한다음 전체 개수 ( = count 변수)로 나누는 것이 쉽겠네요.

7. ⑧이 좀 복잡한데, 새로운 크기 int new_size를 받으면 그만한 크기의 동적 배열을 선언하고 (int *new_data = new int[new_size]), 원래 있던 배열에서 이쪽으로 모두 옮겨온 다음 (memcpy(data, new_data, sizeof (int) * size)) 원래 배열을 지우고 (delete[] data) 저장할 배열을 새로 만든 배열로 치환 (data = new_data) 하시면 됩니다. 물론 new_size >= size 검사는 하셔야합니다.

또한 이를 위해서 전체 size로 위에서 저장해야 되겠네요.

8. 마지막으로 소멸자에서 if(data != NULL) delete[] data; 하시면 됩니다.

아, 모든 '인출' 연산들은 data가 비어있을 땐 작동하지 않아야 합니다. 시작할 때 조건문으로 검사해야합니다.

머셔너리키리    친구신청

음 크게 어렵지 않은 문제인거 같은데, 프로그래밍 쪽이 진로가 아니시라니 ㅡㅡ;
힌트 좀 드릴게요.
클래스에는 정수 배열 변수가 들어가야됩니다.
배열의 크기는 클래스를 변수를 선언할 때, 매개변수로 크기를 입력받아서 배열을 초기화 시키시면 될 듯 합니다.
시간순서대로 저장되는 배열이라고 한다면 오래전 저장 숫자는 배열의 0번 인덱스, 마지막에 저장된 수는 인덱스 값을 변수로 두고, 가지고 오면 될 듯합니다.
가장 큰값과 작은 값은 클래스 내부에 변수로 선언하시고, 값이 입력될 때마다 입력값과 큰값, 작은값을 비교하셔서 처리해주시면 되고,
평균값은 크게 어렵지 않겠죠?
마지막 최대개수의 변경은 temp 배열을 선언하시고, 거기에 기존 배열 값을 넣어주신뒤에, 기존 배열을 초기화하고, temp 배열을 원래 배열에 값을 넣어주시도록 처리해주시면 될 겂니다.
코드는 직접 한번 짜보세요. 아님 기존 수업때 사용하셨던 코드를 확인해보시고 활용하시면 충분히 하실 수 있으실 겁니다.

머셔너리키리    친구신청

헐 올리고 나니 편안한 집님이 정리 깔끔하셨군요 ㅋㅋㅋ 한발 늦었군요.

편안한 집    친구신청

사실 저렇게 주절주절 써도 실제로 만드는 것은 다른 이야기라... 프로그래밍을 잘 하려면 많이 당해(?) 봐야죠. 제가 지금 글로 써놓았을 때는 놓친 다른 문제가 있을 수 있습니다. ㅋㅋ

실버    친구신청

stl을 쓰지 말라는 거니까 링크드 리스트 같은 거를 구현한 다음에 나머지 풀어 가면 될거 같은데..

날씨가 우중충    친구신청

deque를 구현하는 예제들을 살펴 보면 5,6,7 번 빼고 나머지는 금방 구현 될겁니다.

극프    친구신청

모두들 너무나도 감사합니다
올려주신 의견 종합해서 작성하면 되겠네요
너무감사합니다

루니미    친구신청

이정도 수준은 왠만하면 직접하세요.
이정도는 풀어야 직장 잡으셔도 일 하실텐데;;

루니미    친구신청

어떻게 풀줄 아나 코딩을 못하겠는거면 도움을 드리겠지만
어떻게 풀줄 모르고 무작정 도움 주는건 작성자분께도 도움이 안될거 같습니다.

사실 학교에서 가르치는 주된 목적이 사고력 향상? 이라고 해야되나
문제를 해결하는 능력이 프로그램에서 제일 중요하거든요..

루니미    친구신청

아 댓글에서 이쪽으로 안나가신다고 했구나;;

극프    친구신청

CCTV계통에서 기술영업직으로 일하고 있습니다
학교다닐때도 전산계열 학교였으나 CAD및 그래픽쪽으로 공부를 해서
프로그래밍하고는 담을 쌓게 됐네요 고등학교시절에는 과제정도는
혼자할수 있는 수준이였으나 10년넘게 사용안하다보니
기억이 나지 않네요 한때는 비베랑 씨언어로 간단한 프로그램정도는
만들수 있었는데 이제는 영....

아무튼 감사합니다 나중에 제가 도움을 드릴수 있는부분은 도움드릴께요

가라질풍    친구신청

깔끔해서는 동적 배열 생성하는 것만 아시면 나머지는 쉽게 하실 수 있는 것입니다.
정렬이라든지 search 알고리즘 사용하는 것이 아니라면 쉽습니다.

X