디시인사이드 갤러리

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

갤러리 본문 영역

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

블루밍(112.186) 2011.10.09 22:32:24
조회 239 추천 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 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45242 65
2870336 민생지원금 오늘부터주네 25만원 방금받음 ㅋㅋㅋㅋ ㅇㅇ(121.164) 07:40 0 0
2870335 이거 뻘짓 한거냐??? ㅇㅇ(211.241) 07:38 0 0
2870334 혹시 나처럼 등에 신경통 겪는 사람 있냐? ㅇㅇ(223.38) 07:27 5 0
2870333 전쟁? 배구공(119.202) 07:21 10 0
2870332 보통 코테 얼마나 준비함? ㅇㅇ갤로그로 이동합니다. 07:18 11 0
2870330 나는조현병이야 나는내향적이야 [1] 손발이시립디다갤로그로 이동합니다. 06:48 14 0
2870326 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 06:31 11 0
2870324 90년대 게임 배구공(119.202) 06:13 14 0
2870323 전쟁나면 이민 가실 거 정함? [1] 넥도리아(112.170) 06:12 19 0
2870321 영화 러브레터 ost 배구공(119.202) 06:02 17 0
2870319 90년대 빌게이츠 아재 강연 배구공(119.202) 05:52 12 0
2870315 자다가 코 막힘 존나 심해서 꺳다 [3] 루도그담당(58.239) 05:30 23 0
2870313 7일에 올려보는 배구공(119.202) 05:28 19 0
2870309 '부정선거론' 한국계 법학자, "이재명 소년원 복역" 허위사실유포 발명도둑잡기(118.216) 04:04 29 1
2870306 증권시장 달러는 미국산 종이일 뿐이라서 공정하지 않다 발명도둑잡기(118.216) 03:32 13 0
2870305 [여적] 장하준의 ‘대선 제안’ 발명도둑잡기(118.216) 03:25 21 0
2870304 장하준 "야당 상법개정안 우려" 발명도둑잡기(118.216) 03:21 20 0
2870303 말하지 않는 자 말하려는 자. 댓글쓰려는 자 댓읽는자. [1] 넥도리아(112.170) 03:18 17 0
2870301 스미스 선장은 정말 타이타닉의 영웅이었을까? 발명도둑잡기(118.216) 03:13 20 0
2870300 안타 까운 일이도 리버풀 은퇴 선수 디오구 조타와 안드레 실바 선수에게 넥도리아(112.170) 03:11 15 0
2870299 작은돈은 되고 큰 돈은 안된다는 부모님. 공임의가치를 돈으로 판단 넥도리아(112.170) 03:06 21 0
2870298 "옷이 젖을까 봐 강을 건너지 못하고" [2] 발명도둑잡기(118.216) 03:04 24 0
2870297 제네들 토해내면 어떻게 될지 궁금하다 넥도리아(112.170) 03:03 16 0
2870295 단순다수결 선거제 있는한 국민의힘 200년 넘게 지속가능 [3] 발명도둑잡기(118.216) 02:51 28 0
2870294 휴대폰 데이터 복구 가능할까요? 넥도리아(112.170) 02:47 17 0
2870293 어제 저녁 발명도둑잡기(118.216) 02:33 20 1
2870291 홍준표가 따라했던 코카콜라의 몰락 발명도둑잡기(118.216) 02:29 19 0
2870290 이해가 존나 안되는게 이준석은 그냥 프로그래밍 신비주의로 갔으면 [1] ㅆㅇㅆ(124.216) 02:27 54 1
2870289 권은비 좆되더라 [1] hrin(220.120) 02:25 199 0
2870288 준석이햄 코드 플로우 보니까 GPT가 짜준게 백프로임 그냥ㅋㅋ ㅆㅇㅆ(124.216) 02:22 53 0
2870287 이준석 보좌진은 그냥 코딩 관련 글 못올리게해라 ㅆㅇㅆ(124.216) 02:16 54 4
2870286 필리핀 공부방 사건 혹시 종교인이었나? 발명도둑잡기(118.216) 02:11 15 0
2870284 님들 저 졸업작품 추천좀 [4] 공기역학갤로그로 이동합니다. 02:07 37 0
2870283 미셸푸코- 감시와 처벌-감옥의 역사 발명도둑잡기(118.216) 02:02 19 0
2870281 류류가 욕을 먹어도 발명도둑잡기(118.216) 01:46 18 0
2870280 인공지능이 전염병 퍼뜨려서 인간 멸종이키는게 가장 위험하다 발명도둑잡기(118.216) 01:42 34 0
2870278 준석이가 만든 프로그램인데 어캐생각함? [6] ㅇㅇ(211.241) 01:36 72 0
2870277 민생 사는거 겁나 좋아하는 인간들 특징민 그냥 특징이 있어 특이 [1] 넥도리아(112.170) 01:19 36 0
2870275 겁나 성심 쓰는듯 휴대폰 사준다는 엄마. 그러나 아들은 반대 넥도리아(112.170) 01:15 18 0
2870273 zenfone 4 데이터 복구할까 민생지원쿠폰으로 가능할까 넥도리아(112.170) 01:11 17 0
2870271 블록퍼즐 알고리즘 배틀 만들었는데 시간 되는 사람 구경 한 번 해봐라 ㅋ 프갤러(118.235) 00:56 29 0
2870269 가난한 남자도 미소녀랑 성관계 할수 있어야됨 ㅇㅅㅇ [2] 류류(210.217) 00:54 41 0
2870268 내란수괴는 감옥에 가야 이 땅이 평화로워진다 발명도둑잡기(118.216) 00:50 16 0
2870266 시사힙합 내란의 힘 발명도둑잡기(118.216) 00:44 17 0
2870263 에바게리온 애니메이터가 지지한 혐중 파시스트 정치인 발명도둑잡기(118.216) 00:19 19 0
2870261 일본이 한국보다 살기 ㅈ같은점 프로외노자갤로그로 이동합니다. 00:14 36 0
2870259 나 보험든게 있는데, 20년전에.... 2007년인가 [3] 넥도리아(112.170) 00:08 24 0
2870258 몇시간 전부터.노트북 인터넷이 안되고 있다 발명도둑잡기(118.216) 00:07 12 0
2870256 나의 경우인 가난한 남자의 성욕 해소법 발명도둑잡기(118.216) 00:01 50 0
뉴스 [집 나가면 개호강] ‘스카이개슬 1타(?)’ 강소라VS조한선, 불꽃 신경전! 눈 가리고 ‘아웅’ 승부…세기의 대결!  디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2