디시인사이드 갤러리

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

갤러리 본문 영역

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

블루밍(112.186) 2011.10.09 22:32:24
조회 240 추천 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/07/07 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
412318 마음이 아프다 [1] ??(110.12) 14.03.13 80 1
412317 여기에 아두이노에 대해 질문하면 알려주실 수 있는 고수가 있음? [5] ck(175.208) 14.03.13 130 0
412316 포플낼때 학교 다닐때 했던 플젝 넣어도 되냐? 요미코치료사(59.17) 14.03.13 94 0
412315 브ㄱH러즨구덜앙뇽ㄷr으믜싀ㄱrㄴH만ㄴr욘 호석갤로그로 이동합니다. 14.03.13 63 0
412314 횽들 엑셀로 알고리즘 할수 있다는데 하는법좀 알려줘 123123(119.192) 14.03.13 75 0
412312 안드로이드 개발환경 질문드려욤 [2] 뇌지랄갤로그로 이동합니다. 14.03.13 81 0
412311 형님들 c++에서 자연상수 e질문.. [6] ㅇㅇ(117.123) 14.03.13 408 0
412310 주변을 둘러보면.. [1] 생각놀이갤로그로 이동합니다. 14.03.13 84 0
412309 예능프로 갑.jpg [1] ๑•ิ_•ั๑(119.70) 14.03.13 157 0
412308 나이 22살 프로그래밍 입문하려고 합니다. 자살할까요? [7] ㅇㅇ(112.185) 14.03.13 230 0
412307 즤구ㅇr으ㅅr덜올ㅁrㄴr벌ㄱr욤 호석갤로그로 이동합니다. 14.03.13 49 0
412306 한국 소프트웨어 시장 개좆망이라고 하던데 사실인가요 [2] ㅇㅇ(112.185) 14.03.13 162 0
412305 C언어 기본서 하나 끝냈고 다음책 고르는데 봐주세요 [1] 중3(122.32) 14.03.13 194 0
412303 ㅈr소소구암송봐릐더숙ㅇlㄴr루믜ㅇH욘 [3] 호석갤로그로 이동합니다. 14.03.13 97 0
412301 프레임클래스 개발했다 ㅋ 2(114.201) 14.03.13 91 0
412297 수학은 필요할까? + 프로그래머 [3] 허세갑(59.23) 14.03.13 283 0
412294 내글읽고 글쓴 몇명봐라. txt [13] 최티모(110.70) 14.03.13 2662 31
412293 생각해보니 나도 비전공자네 --;; 생각놀이갤로그로 이동합니다. 14.03.13 94 0
412291 php초짜가 공부할 서적이 있을까요¿ [1] 요미코번역인(39.7) 14.03.13 96 0
412290 ㄴH누눌ㅂrㄹrㅂr 호석갤로그로 이동합니다. 14.03.13 68 0
412289 이제 2학년되는 지잡대생인데 지금부터 공부하면 희망있나여? [1] ppp(211.36) 14.03.13 122 0
412288 어셈이 무언가요? [4] ㅇㅇ(112.185) 14.03.13 89 0
412287 컴퓨터공학 대학원가는거 어떤거같아? [1] 통신쟁이(223.63) 14.03.13 169 0
412286 ㅂl듀올스듀ㄷl어수눈ㅇl젼바릐진릐ㅇr늰ㄱr욘¿ 호석갤로그로 이동합니다. 14.03.13 52 0
412285 형님들 16진수 다섯가지형태로 바꾸는문제좀 가르쳐주세요 간단!! [1] 컴퓨터좀가르쳐줘(1.252) 14.03.13 303 0
412284 mysql function을 쓰는이유는? ㅇㄹ(112.223) 14.03.13 61 0
412283 옹갇으ㅁHㅇH싀달료숨늬ㄷr [2] 호석갤로그로 이동합니다. 14.03.13 74 0
412282 갤늅인데 질문 하나만 해도 될까요 란승갤로그로 이동합니다. 14.03.13 40 0
412281 연애코드 ㅇㅇ(129.2) 14.03.13 65 0
412280 라이트봇 보니 내가 2년전에 [1] 시닙쎈(117.16) 14.03.13 186 0
412279 해킹도 입문은 c언어? [1] ㅇㅇ(112.185) 14.03.13 157 0
412278 코드도 바이러스를 만들 수 있냐 ㅇㅇ(112.185) 14.03.13 44 0
412277 ㄷl싄오므족갇다욘 [1] 호석갤로그로 이동합니다. 14.03.13 65 0
412276 화이트데이 까똑 요미코치료사(59.17) 14.03.13 88 0
412275 (조언좀)나의 해킹에 대한 환상 그리고 해킹을 배워서 해보고 싶은거 [1] ㅇㅇ(112.185) 14.03.13 153 0
412274 아 진짜 미친다 미쳐 dd(175.117) 14.03.13 48 0
412273 화이트데이 코드. [1] ๑•ิ_•ั๑(119.70) 14.03.13 85 0
412272 프로그래밍게임 라이트봇 4-6 방법 아는분 [1] ㅇㅇ(119.148) 14.03.13 161 0
412271 프로그래밍 공부하기에 가장 좋은 나이대 [1] 젖절한시기(211.105) 14.03.13 165 0
412269 java generics 질문 ㅇㅇ(129.2) 14.03.13 87 0
412267 후 ssd에 비쥬얼스튜디오 까니까 빡친다 에관(175.212) 14.03.13 133 0
412266 빨리ㅠㅠㅠㅠㅠㅠ tlqkfvmaldbb(110.15) 14.03.13 79 0
412265 이웃집힘법사 [1] ㅇㅇ(223.62) 14.03.13 209 0
412264 유니티뭐냐 [3] ㄹㅇ(211.201) 14.03.13 136 0
412263 컴공 현실 써준다 ㅇㅇ(117.111) 14.03.13 553 0
412262 죄송해요 허세갑(59.24) 14.03.13 63 0
412261 이제는 대중음악까지 학력 차별 [1] 에어로홍갤로그로 이동합니다. 14.03.13 110 0
412260 okjsp 분위기가 여기보다 좆같구만 ㅇㅇ(117.111) 14.03.13 318 0
412259 비관적인 놈에게 비관적이라고 하는게 뭐가 이상함???? [1] ㅇㅇ(117.111) 14.03.13 99 0
412258 형들 C언어 질문 있어요~ ㅜㅜ 안녕?(203.226) 14.03.13 90 0
뉴스 신지 예비신랑 문원, 과거 논란 해명하며 진실 밝혀 디시트렌드 07.05
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2