디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C언어 로또계의 스티브잡스급만

블루밍(112.186) 2011.10.09 22:32:24
조회 238 추천 0 댓글 19

디버그 F7할땐 문제없는데 실행 (Ctrl+F5) 했을때 어떨땐 잘돌아가고 어떨땐 두번째 추첨부터 에러가나는 이유가뭔지 알려주실 스티브잡스형님계신가요


오류가나는 부분은 모드선택>횟수선택 >번호선택 >추첨  >  모드선택 >횟수선택 >번호선택 >추첨(이부분) 입니다

제 조잡한코드 올립니다

#include <iostream>
#include <time.h>
#include<stdio.h>

using namespace std;


int MainMenu(int& x);
int GameModeMenu(int** pArr, int& nHowmany);
int ManualModeMenu(int** pArr, int& nHowmany);
int AutoModeMenu(int** pArr, int& nHowmany);
int LotteryMenu(int** pArr, int&howmoney);



int main()
{
        int nHowmany=0;   // 게임 수 변수
        int **pArr = new int*[50]; // 로또 배열
        int nSelect_1=0;
        srand((unsigned int)time(NULL));
        do
        {
                MainMenu(nSelect_1); //함수호출
        
                switch(nSelect_1) //메인메뉴 선택에따른 스위치문
                {
                case 1:
                        GameModeMenu(pArr, nHowmany);
                        break;

                case 2:
                        LotteryMenu(pArr, nHowmany);
                        break;

                case 3:
                        cout << " 다음에 또오세요" << endl;
                        break;
                default:
                        cout << " 잘못된 입력입니다" << endl;
                        break;
                }
        }while(nSelect_1 !=3); // 3선택 전까지 반복
}
int MainMenu(int& x)
{

        cout << "★메뉴선택★" << endl;
        cout << "1.게임모드선택"<<endl;
        cout << "2.추첨 " << endl;
        cout << "3.그만하기" << endl;
        cout << endl << "입력_ ";
        cin >> x;

        return 0;
}
int GameModeMenu(int** pArr, int& nHowmany)
{
        int nGameMenu;
        cout << "★메뉴선택★" << endl;
        cout << "1. 수동모드 " << endl;
        cout << "2. 자동모드 " << endl;
        cout << "3. 돌아가기 " << endl;
        cout << "입력_ ";
        cin >> nGameMenu;
        
        switch(nGameMenu) //게임메뉴 스위치문
        {
        case 1:
                {
                        ManualModeMenu(pArr,nHowmany);
                }break;
                
        case 2:
                {
                        AutoModeMenu(pArr,nHowmany);
                }
                break;
        case 3:
                break;

        default:
                {
                        cout << " 잘못된 입력입니다" << endl;
                }
        }
        return 0;
}
int ManualModeMenu(int** pArr,int& nHowmany)
{
        int nCount_1 = NULL;
        int nCount_2 = NULL;
        int nCount_3 = NULL;
        int nBalls = NULL;
        int ManualMenu=NULL;
        do
        {
        cout << "★메뉴선택★" << endl;
        cout << "1. 게임횟수입력" << endl;
        cout << "2. 숫자선택 " << endl;
        cout << "3. 이전으로 " << endl;
        cout << "입력 _ ";
        cin >> ManualMenu;
        
        switch(ManualMenu) // 수동모드 스위치문
        {
        case 1:
                {
                        if(nHowmany !=0) // 이전 게임횟수가 0 이 아닐때 동작하는 if 문
                        {
                                for(int i=0;i<nHowmany;i++) //  동적할당 해제하는 for문
                                {
                                        delete [] pArr[i];
                                }
                                delete []pArr;
                                pArr = new int*[50];
                        }
                
                        cout << "몇세트 게임하시겠습니까" << endl;
                        cout << "입력 _ ";
                        cin >> nHowmany;

                        for(nCount_1=0;nCount_1<nHowmany;nCount_1++) // 게임수 입력에따른 동적할당
                        {
                                pArr[nCount_1] = new int[6];
                                memset(pArr[nCount_1],0,sizeof(int)*6);
                        }
                }break;
        case 2:
                {
                        for(nCount_2=0;nCount_2<nHowmany;nCount_2++) // 로또 당첨숫자 생성
                                {
                                        for(nCount_1=0;nCount_1<6;nCount_1++)
                                                {
                                                        cout << "숫자선택하세요(중복없이 1~45 사이)" << endl;
                                                        cout << "입력 _ ";
                                                        cin >> nBalls;
                                                        pArr[nCount_2][nCount_1]=nBalls;
                                        }
                                        cout << " 세트가 끝났습니다 " << endl;
                        }
                }break;
        case 3:
                break;

        default:
                {
                        cout << " 잘못된 입력입니다"<< endl;
                }break;
        }
        }while(ManualMenu != 3);
        return 0;
}
int AutoModeMenu(int** pArr,int& nHowmany)
{
        int AutoMenu = NULL;
        int nSets = NULL;
        int nCount_1 = NULL;
        int nCount_2 = NULL;
        int nCount_3 = NULL;

        do
        {
                cout << "★메뉴선택★" << endl;
                cout << "1. 게임횟수입력" << endl;
                cout << "2. 숫자선택" << endl;
                cout << "3. 이전으로" << endl;
                cout << "입력 _ ";
                cin >> AutoMenu;
                
                switch(AutoMenu) // 자동모드 스위치문
                {
                case 1:
                        {
                                if(nHowmany !=0) // 이점 게임횟수가 0 이 아닐때 작동하는 if 문
                                {
                                        for(int i=0;i<nHowmany;i++) // 동적할당을 해제하는 for 문
                                        {
                                                delete [] pArr[i];
                                        }
                                        delete []pArr;
                                        pArr = new int*[50];
                                }
                                
        

                                cout << "몇세트 게임하시겠습니까" << endl;
                                cout << "입력 _ ";
                                cin >> nHowmany;
                        
                                for(nCount_1=0;nCount_1<nHowmany;nCount_1++) //입력에따른 동적할당
                                {
                                        pArr[nCount_1] = new int[6];
                                        memset(pArr[nCount_1],0,sizeof(int)*6);
                                }
                        }break;
                
                case 2:
                        {
                                for(nCount_2=0;nCount_2<nHowmany;nCount_2++) // 게임 수 
                                {
                                        for(nCount_1=0;nCount_1<6;nCount_1++) // 6개 번호생성
                                        {
                                                pArr[nCount_2][nCount_1]=rand()%45+1; // 각 번호 생성
                                                
                                                for(nCount_3=0;nCount_3<nCount_1;nCount_3++) // 숫자중복되지않게
                                                {
                                                        while(pArr[nCount_2][nCount_3] == pArr[nCount_2][nCount_1]) // 중복시 재입력
                                                        {
                                                                pArr[nCount_2][nCount_1]=rand()%45+1;
                                                        }
                                                }
                                        }
                                }
                        }
                                cout << " 모든숫자가 선택되었습니다" << endl;
                                break;
                        
                case 3:
                        break;
                }
        }while(AutoMenu !=3);
        return 0;
}
int LotteryMenu(int** pArr, int& nHowmany)
{
        int pLotto[6];
        int nNumber;
        int nWin = 0;
        int nBonus=0;
        int nCount_1,nCount_2,nCount_3;
        int temp;
        cout << "★★★★★★★ 추첨을시작합니다 ★★★★★★ " << endl;
        cout << "★★★★★★★    당첨번호는   ★★★★★★ " << endl;
        for(nCount_1=0;nCount_1<6;nCount_1++) //당첨번호생성
        {
                pLotto[nCount_1] = rand()%45+1;
                for(nCount_2=0;nCount_2<nCount_1;nCount_2++) // 중복되지않게 하는 for 문
                {
                        while(pLotto[nCount_1] == pLotto[nCount_2])
                        {
                                pLotto[nCount_1] = rand()%45+1;
                        }
                }
        }
        for(nCount_1=0;nCount_1<6;nCount_1++) // 오름차순으로 정렬하는 for 문
        {
                for(nCount_2=0;nCount_2<nCount_1;nCount_2++)
                {
                        if(pLotto[nCount_2]>pLotto[nCount_1])
                        {
                                temp=pLotto[nCount_2];
                                pLotto[nCount_2]=pLotto[nCount_1];
                                pLotto[nCount_1]=temp;
                        }
                }
        }
        for(nCount_1=0;nCount_1<6;nCount_1++) // 당첨된 번호 출력하는 for 문
        {
                cout << pLotto[nCount_1] << " ";
        }
        cout << " 입니다 " << endl;

        cout << "보너스번호는 ";
        nNumber = rand()%45+1; // 보너스번호생성
        
        for(nCount_1=0;nCount_1<6;nCount_1++) //보너스번호가 이전 6개와 중복시 재생성
        {
                while(pLotto[nCount_1] == nNumber)
                {
                        nNumber = rand()%45+1;
                }
        }
        cout << nNumber << " 입니다 " << endl;


        for(nCount_1=0;nCount_1<nHowmany;nCount_1++)   // 내가 선택한 숫자들을 오름차순으로 정렬 (셋트선택)
        {
                for(nCount_2=0;nCount_2<6;nCount_2++) // 각 셋트의 숫자선택
                {
                        for(nCount_3=0;nCount_3<nCount_2;nCount_3++) 
                        {
                                if(pArr[nCount_1][nCount_2] < pArr[nCount_1][nCount_3]) // 뒤에있는게 앞보다 작을시 위치 변경
                                {
                                        temp = pArr[nCount_1][nCount_3];
                                        pArr[nCount_1][nCount_3]=pArr[nCount_1][nCount_2];
                                        pArr[nCount_1][nCount_2]=temp;
                                }
                        }
                }
        }


        cout << endl << endl << endl << " 당신이 선택한번호 " << endl;
        for(nCount_1=0;nCount_1<nHowmany;nCount_1++) // 내가 선택한번호 출력
        {
                cout << nCount_1+1 << "번째 ";
                for(nCount_2=0;nCount_2<6;nCount_2++)
                {
                        cout << pArr[nCount_1][nCount_2] << " ";
                }
                cout << "  입니다" << endl;
                        
        }

        for (nCount_1=0; nCount_1<nHowmany;nCount_1++) // 당첨여부 확인
        {
                cout << nCount_1+1 << " 번째는 맞춘갯수 ";
                for (nCount_2=0;nCount_2<6;nCount_2++)
                {
                        for(nCount_3=0;nCount_3<6;nCount_3++)
                        {
                                if(pArr[nCount_1][nCount_2] == pLotto[nCount_3]) //당첨될때마다 nWin 값 +1
                                {
                                        nWin = nWin+1;
                                }
                        }
                }
                cout << nWin << " 개 입니다 ";
                switch(nWin) // nWin 값으로 순위설정 스위치문
                {
                case 0:
                        {
                                cout << " 꽝입니다" << endl;
                        }break;
                case 1:
                        {
                                cout << " 꽝입니다" << endl;
                        }break;
                case 2:
                        {
                                cout << " 꽝입니다" << endl;
                        }break;
                case 3:
                        {
                                cout << "5등입니다" << endl;
                    

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
279542 c# 고수님들 도와주세요! [3] souladin(58.103) 11.10.10 53 0
279541 초짜가 코딩해서 돈벌수 있는 방법 없어??? [3] ttttt(117.16) 11.10.10 88 0
279540 내가 자바를 싫어하는 이유 (부제: 함수포인터에 대한 고찰) [2] 비밀의계곡갤로그로 이동합니다. 11.10.10 138 0
279539 여자들 화나게 하는 방법 ㅋㅋㅋㅋ [1] blackd갤로그로 이동합니다. 11.10.10 149 0
279538 결국 한국형 os는 포기한듯.... [1] 거칠게갤로그로 이동합니다. 11.10.10 104 0
279537 아이폰4S 은글 땡긴다 [4] 분당살람갤로그로 이동합니다. 11.10.10 101 0
279534 스마트폰 뭐쓰지?/ 넥서스s 베가 레이서 [3] 이메지네이션(116.124) 11.10.10 183 0
279533 칼이란 게 되게 사용하기 어려운 툴인 듯 [3] 분당살람갤로그로 이동합니다. 11.10.10 85 0
279530 신기한 거 발견 [7] 분당살람갤로그로 이동합니다. 11.10.10 114 0
279529 알고리즘을 잘하려면 어떤 책을 봐야 할까?? [1] 거칠게갤로그로 이동합니다. 11.10.10 105 0
279528 난 코딩을 사랑한다 좋아 죽겠다 코딩맨(121.137) 11.10.10 49 0
279527 도배 풀렸다 :) +어게인갤로그로 이동합니다. 11.10.10 44 0
279524 스택 궁금한게 있어요 PIAGET갤로그로 이동합니다. 11.10.10 48 0
279523 그럼 최소 어디까지 선을그어야하는거지? 三didas갤로그로 이동합니다. 11.10.10 49 0
279522 흠.. 디바이스에서 이미지 생성하는게 더 빠른거같다. Regi☆갤로그로 이동합니다. 11.10.10 37 0
279521 아톰으로는 코딩어렵고 [7] 三didas갤로그로 이동합니다. 11.10.10 112 0
279520 OpenGL 초보에게 추천할만한 책이 있을까? [2] 정조교(163.180) 11.10.10 83 0
279518 터보씨 필요한 사람있냐? 이모군(175.114) 11.10.10 42 0
279517 리눅스에서 scp 쓰자나.. 그거 말고 원격지 디랙토리 만드는 법 있나? [4] iljeomobolt갤로그로 이동합니다. 11.10.10 94 0
279515 c언어 구구단좀여 [3] c언어(14.53) 11.10.10 144 0
279512 이미지 불러올때 그냥 픽셀찍는거랑 디바이스에서 이미지찍어주는거랑 [3] Regi☆갤로그로 이동합니다. 11.10.10 54 0
279511 횽들아 요즘 자바 프리단가 시세 어느정도임? [4] 웹프로그래머갤로그로 이동합니다. 11.10.10 111 0
279510 형들 오픈지엘로 개체인식 가능? [17] +어게인갤로그로 이동합니다. 11.10.10 115 0
279509 외국으로 뜨기 위해 [2] 534F444D61737465갤로그로 이동합니다. 11.10.10 88 0
279508 FTP에서 읽기는 불가로 하고 쓰기만 가능하게 하려면 어떻게 해야해? [5] 정조교(163.180) 11.10.10 74 0
279507 오줌맛햄버거 vs 햄버거맛오줌 [2] 534F444D61737465갤로그로 이동합니다. 11.10.10 71 0
279506 질문 1개만 더할껭 [2] 붉은동전갤로그로 이동합니다. 11.10.10 46 0
279505 제가 여기 이제 한번이라도 더오면 고추를 자른후 [2] lol(110.174) 11.10.10 101 0
279503 LNK2001,1120은 왜 뜰까 ㅠㅠ [5] 블러디갤로그로 이동합니다. 11.10.10 68 0
279502 으아아아앜아ㅏ카캌아ㅏㅇㅋ캉캉ㅇ카 C########## [7] McHello갤로그로 이동합니다. 11.10.10 84 0
279500 입출력함수로 버퍼에 저장했다가 한번에 변수에 저장시킬 수 있을까요? dad(220.149) 11.10.10 35 0
279498 형들 c언어 포인트 질문좀~ [7] 붉은동전갤로그로 이동합니다. 11.10.10 95 0
279497 데이터 코드화 시키려다가 멘탈 붕괴중.... [7] 꼬꼬월드갤로그로 이동합니다. 11.10.10 109 0
279495 for 따위 안쓰고 5 * 를 구하는방법 [2] lol(110.174) 11.10.10 109 0
279494 형들! 아직 동영상 모자이크 지울수 있는 프로그램 안나왔지??? [11] 무무(59.24) 11.10.10 167 0
279493 프갤러들은 바보에요.. 사실 사람들은 여러분을 보고 이렇게 생각해요... [2] lol(110.174) 11.10.10 106 0
279492 회사를 자주 바꿔타라는 교훈을 주는 글 [4] 3(116.42) 11.10.10 168 0
279491 c언어 첨배우는데 알려주세요 ㅠㅠ [16] c언어(14.53) 11.10.10 159 0
279490 데탑 하나 더 살까 생각하고있었는데.. 초소형 PC땡기네.. [3] .3(124.137) 11.10.10 106 0
279489 언제한번 우리나라에 프로그래머대란이 일어날꺼같다 [16] ㅁㄴㅇㄹ(124.61) 11.10.10 214 0
279488 형들 오픈지엘 설치했는데요..이거 3문제 헬프좀요 ㅠㅠㅠ [8] OpenUp(112.155) 11.10.10 92 0
279487 최근 잡스 열풍 보면서 [2] .3(124.137) 11.10.10 72 0
279486 다들 점심은 먹고 일하는거지? (짤방.. 웃길려나? ㅋ) [5] blackd갤로그로 이동합니다. 11.10.10 121 0
279485 Bros, I got something seriously wan tell [3] lol(110.174) 11.10.10 59 0
279484 세계는 지금 잡스 애플 열풍 1(121.182) 11.10.10 44 0
279483 형들은 문제 이렇게 주면 알아먹음? [4] ㅁㄴㅀㅁㅈㄹ(210.102) 11.10.10 96 0
279481 PM 신입사원은 무슨 일 시켜? [8] 뉴비(218.144) 11.10.10 150 0
279480 종기원 ㅅㅂ..ㅠㅠ !@#ㅇㅇ(211.238) 11.10.10 80 0
279478 이런거 괜찬지않음? [1] ㅋㅌㅊ(210.178) 11.10.10 64 0
279477 프갤러에게도 희망있어요...jpg [5] lol(110.174) 11.10.10 149 0
뉴스 ‘소이현♥’ 인교진, 당뇨 초기 진단…“주범은 ‘이 음식’이었다” 디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2