디시인사이드 갤러리

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

갤러리 본문 영역

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

블루밍(112.186) 2011.10.09 22:32:24
조회 234 추천 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
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연예인 안됐으면 어쩔 뻔, 누가 봐도 천상 연예인은? 운영자 24/06/17 - -
294753 존나 춥다며? [2] monoless갤로그로 이동합니다. 11.12.16 60 0
294752 흔한 컴덕유머.jpg [4] warota(221.150) 11.12.16 235 0
294751 날씨 왜케 덥냐 [3] 알탱o갤로그로 이동합니다. 11.12.16 70 0
294749 진짜 씨부랄 개같애서 못해먹겠다 [3] 므해?갤로그로 이동합니다. 11.12.16 128 0
294748 저 vector의 간략한 질문 좀요ㅠ.... [1] 구원손길좀(1.211) 11.12.16 56 0
294747 뇌지랄 책산사람있음? [5] 타살춤(59.3) 11.12.16 171 0
294745 자바인데 도와주실분 사례드림 라이커리갤로그로 이동합니다. 11.12.16 52 0
294743 메모장 열고 F5버튼 누르면 날짜 나오듯이 [3] 리눅슽(121.186) 11.12.16 99 0
294742 줫밥횽은 봅니다. 캐줫밥닭(115.92) 11.12.16 41 0
294741 비쥬얼 스튜디오 2010 사용하는 사람들 .. ssonacy갤로그로 이동합니다. 11.12.16 104 0
294740 나도 한번 해볼까 - 엑스칼리버 = ω=)ษิีึืิีึืิีึืิีึืิีึืิีึืิีึืิีึื [1] 땡칠도사갤로그로 이동합니다. 11.12.16 96 0
294739 네이티브어플맹글때 질문. [3] 고추장불고기갤로그로 이동합니다. 11.12.16 69 0
294738 Mathematica.... 땡칠도사갤로그로 이동합니다. 11.12.16 81 0
294737 크리스마스 이브가 일주일 남았다 - 광선검(ส°ㅅ°)ส 거칠게갤로그로 이동합니다. 11.12.16 63 0
294736 아~ 안녕 플갤이여~ ㅜ,.ㅜ [3] 개심심(61.73) 11.12.16 70 0
294735 횽들 ppt 복구 방법 없나여? ㅠㅠ [4] 일광면(119.198) 11.12.16 198 0
294734 리눅스에서 쉘로 간단한 자바 파일 컴파일하고 실행하는방법좀요... 늅늅(175.198) 11.12.16 34 0
294733 이쁜여자 많다는 인픽스라는 회사는 머배워야 들어갈수 이씀??? [5] 복실이(121.174) 11.12.16 191 0
294732 씹돼지.. [3] 줫밥(122.49) 11.12.16 119 0
294731 퇴근 15분 전입니다 고갱님~광선검(ส°ㅅ°)ส [1] 거칠게갤로그로 이동합니다. 11.12.16 74 0
294729 오에~~ 망해따 [1] 일광면(119.198) 11.12.16 51 0
294728 싸지른글 모두 폭파완료 하암 주말들 잘보내귀 줫밥(122.49) 11.12.16 39 0
294727 부산에 IT회사 취직자리 많나요?? [4] 까꼬이(121.174) 11.12.16 254 0
294726 연말이라고 커플들 하나 둘 생겨나는거냐 ㅠㅠㅠ 우씨 ㅠㅠ [3] coding갤로그로 이동합니다. 11.12.16 80 0
294723 줫밥 형 php 어느 정도 수준이어야 입사 가능해요? [15] bbbb(210.90) 11.12.16 170 0
294720 줫밥 & 아스... 니내 꼮 사귀어라. [8] 프게이(116.125) 11.12.16 107 0
294717 인증 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [13] 줫밥(122.49) 11.12.16 252 0
294715 으 화수목 야근해서 2시퇴근하게해줌 개떙보갤로그로 이동합니다. 11.12.16 44 0
294714 비주얼스튜디오 클래스뷰에 화살표 표시 무슨뜻? [4] ㅋㄱ(183.96) 11.12.16 93 0
294713 나 지금 줫밥형 만나러 간다 [6] McHello갤로그로 이동합니다. 11.12.16 136 0
294711 형들 살려줘 복룡갤로그로 이동합니다. 11.12.16 37 0
294709 겨울방학 프로그래밍 C.C++.자바 특강 안내 [1] 솔맨갤로그로 이동합니다. 11.12.16 109 0
294702 횽들 도와줘영 ㅜㅜ [2] 횽들 도와줭 (124.51) 11.12.16 43 0
294701 IE진짜 개구린거 같음 [2] Mihark(219.239) 11.12.16 65 0
294700 to. 김국진 [2] 줫밥(122.49) 11.12.16 63 0
294698 야 대한민국 국민소득 25000불이면 한가정당 10만불 이잖아 [1] 12(125.7) 11.12.16 80 0
294696 횽들 .net으로 웹개발중인데, 플래시랑 통신하는거땜에 [1] Mihark(219.239) 11.12.16 48 0
294695 하암 빨리 다른걸 해야할탠데 줫밥(122.49) 11.12.16 39 0
294693 HTML 소스좀 수정 부탁드릴려구요... 고수님들하 부탁좀 [9] 안사장님(124.111) 11.12.16 84 0
294691 남자나이 28세 그것은 가장 멋있을 때 [3] Lover♥갤로그로 이동합니다. 11.12.16 133 0
294688 이번 학기 성적이 기대댄다 Lover♥갤로그로 이동합니다. 11.12.16 65 0
294687 약삿당 핰핰 [4] 줫밥(122.49) 11.12.16 80 0
294684 리눅스에서 vi로 자바 소스 작성중인데.... [1] 늅늅(175.198) 11.12.16 78 0
294682 root file system에서 nand에 r/w하는 방법 아는사람~ [1] 깁순대갤로그로 이동합니다. 11.12.16 43 0
294681 월 소득 500이 하층민 [1] 9m(203.236) 11.12.16 107 0
294677 다 끝났다..... [1] 땡칠도사갤로그로 이동합니다. 11.12.16 59 0
294675 cString [2] iljeomobolt갤로그로 이동합니다. 11.12.16 58 0
294674 세후 1400 vs 세전 1400 12(125.7) 11.12.16 60 0
294672 어제 회사면접을 봤는데.. [3] ㄱㄱㄱㄱ(211.48) 11.12.16 123 0
294671 횽들 크리스마스 선물이얍 [1] 쿄스케갤로그로 이동합니다. 11.12.16 52 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2