디시인사이드 갤러리

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

갤러리 본문 영역

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

블루밍(112.186) 2011.10.09 22:32:24
조회 232 추천 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/10 - -
이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
292165 이거 사실임??? [1] 거칠게갤로그로 이동합니다. 11.12.02 67 0
292164 내 작은 추억하나 얘기해볼께. [7] 좋은아버지갤로그로 이동합니다. 11.12.02 123 0
292163 퇴근하자 ㄱㄱㄱ [8] 줫밥(122.49) 11.12.02 108 0
292162 구글 어스에 추락한 UFO 모습이 잡혔대 분당살람갤로그로 이동합니다. 11.12.02 110 0
292161 이미지 크롤러를 만든이유 [3] 개쉛기갤로그로 이동합니다. 11.12.02 116 0
292160 어게인 형은 봅니다. [2] 좋은아버지갤로그로 이동합니다. 11.12.02 57 0
292158 금융 SI 질문 좀 할께요 형님들!! 대불이갤로그로 이동합니다. 11.12.02 96 0
292156 이번달 중반 넘어가면 취업하기 힘들겠죠? [4] 노예(219.250) 11.12.02 100 0
292155 나 담주부터 php 나 배워볼까 함.. [23] 줫밥(122.49) 11.12.02 162 0
292154 인턴으로 뽑거나 수습기간에만 쪽 뽑아먹고 버리는 회사가 있다. [6] 거칠게갤로그로 이동합니다. 11.12.02 217 0
292153 엠게임에서 프메 온라인 만든다면서? [2] -ㅂ-(210.90) 11.12.02 83 0
292151 자바하다가 오류났는데 좀 봐주라 ㅠㅠ 스노플갤로그로 이동합니다. 11.12.02 59 0
292149 바지샀다 [20] 줫밥(122.49) 11.12.02 154 0
292148 비쥬얼 2010 이거 안틀려도 막 빨간줄 긋고 이거 뭐야! [1] Lumberjack갤로그로 이동합니다. 11.12.02 56 0
292147 엄마가 자꾸 일을 나갈려고 해서 내가 좋은아버지갤로그로 이동합니다. 11.12.02 51 0
292141 경력에게 수습기간 있다면서 월급의 80%만 준다고 한다면? [2] 거칠게갤로그로 이동합니다. 11.12.02 119 0
292139 파일입출력할때 [6] 5공입갤갤로그로 이동합니다. 11.12.02 59 0
292137 noton ghost 15로 hdd->ssd구워본형없나요?ㅠㅠㅠㅠ [3] dddd(203.244) 11.12.02 89 0
292136 노래 방얘기 나와서 내 자랑글 하나 쓸게 [2] 좋은아버지갤로그로 이동합니다. 11.12.02 85 0
292135 이건 뭐 꿈의 연봉 1400을 주겠다는데도 뭐라고 그러네 [1] 거칠게갤로그로 이동합니다. 11.12.02 135 0
292134 연말 회식이 다가온다~!! 다들 개인기 하나씩은 준비해야지?? [1] 거칠게갤로그로 이동합니다. 11.12.02 67 0
292131 꿈의 연봉 1400.jyp [4] 거칠게갤로그로 이동합니다. 11.12.02 232 0
292126 춥냐? 그럼 이걸 봐라!!! [1] 거칠게갤로그로 이동합니다. 11.12.02 53 0
292125 이거 어떻게 설정하나요? [1] ㅁㄴㄻㄹ갤로그로 이동합니다. 11.12.02 51 0
292124 야이 쇼키들아!! 금요일은 칼퇴근이다!!! 알겠냐?!! 거칠게갤로그로 이동합니다. 11.12.02 50 0
292123 캐로로닭아 근데 동경소녀 요즘 애들이 좋아하냐?? [10] 쿄스케갤로그로 이동합니다. 11.12.02 87 0
292120 형들,, 여기서 과제 얼마정도에 받나요? 살려주세요(115.23) 11.12.02 42 0
292119 야이 쇼키들아!! 1시간 40분 뒤에 퇴근이다!!!! [3] 거칠게갤로그로 이동합니다. 11.12.02 59 0
292118 쌍년들아 나 내년 1월에 여기 참석한다 [4] 분당살람갤로그로 이동합니다. 11.12.02 94 0
292117 프갤공동설이라고 아냐 개쉛기갤로그로 이동합니다. 11.12.02 66 0
292116 안드로이드 개발하는 횽 있어? 111(218.39) 11.12.02 36 0
292115 씨발 세미나 내용 쓰레기네 [8] 햏햏했갤로그로 이동합니다. 11.12.02 101 0
292113 야이 10호구들아 이 정도도 해결할 줄 모르면 플갤에서 싹 다 꺼져라진짜 [4] 또하자(163.239) 11.12.02 78 0
292112 쿄스케 이번주에 옴? [5] 캐쿄스케닭(115.92) 11.12.02 60 0
292110 있잖아 회사가 대기업 계열사이면 [5] 좋은아버지갤로그로 이동합니다. 11.12.02 112 0
292109 근데 나 또 궁금한거 생겼어 [4] 좋은아버지갤로그로 이동합니다. 11.12.02 62 0
292108 머가 어케 돌아가는건지 모르겠다!! [1] 알탱o갤로그로 이동합니다. 11.12.02 44 0
292106 야호 월요일날 면접 본다 ! ! [8] 좋은아버지갤로그로 이동합니다. 11.12.02 104 0
292104 선생님들 도와주세요. java [15] 신규(218.54) 11.12.02 121 0
292101 횽들 ㅠㅠ 프로그래밍 알바구함... [6] 자비점(203.252) 11.12.02 228 0
292100 요즘 한나라당 패기 쩌넼ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [1] -ㅂ-(210.90) 11.12.02 121 0
292099 방송 자체가 올드 미디어 아니냐? [6] 분당살람갤로그로 이동합니다. 11.12.02 106 0
292097 10.26 재보선 선관위 DDos공격은 혹시 곽노현팀장이 한거냐? [1] 바보플머(121.190) 11.12.02 70 0
292094 부동 소수점 곱셈 개념좀 [2] 전원버튼갤로그로 이동합니다. 11.12.02 103 0
292092 우리나라에 진짜 실력자 해커들은 몇명이나 있을까요? [2] 복실이(59.23) 11.12.02 183 0
292091 곽노현팀장은 머냐? [2] 바보플머(121.190) 11.12.02 121 0
292090 선관위 홈피 DDOS 공격한게 국회의원실 직원?? [5] 시불라미갤로그로 이동합니다. 11.12.02 132 1
292088 세미나 이름을 지금봤네ㅋㅋㅋ [1] 햏햏했갤로그로 이동합니다. 11.12.02 81 0
292086 쓸데없는 것들로 주절주절 비관하지 마라. [3] 바보플머(121.190) 11.12.02 90 0
292085 학기말에 과제만 쌓여간다.. 다이렉트어렵다갤로그로 이동합니다. 11.12.02 37 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2