디시인사이드 갤러리

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

갤러리 본문 영역

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

블루밍(112.186) 2011.10.09 22:32:24
조회 241 추천 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/11 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45432 65
2871388 헬갤에서도 마주치는 냥덩 [1] 개멍청한유라갤로그로 이동합니다. 15:02 16 0
2871386 군인도 월급 차등지급해야한다 생각합니다. [2] 개멍청한유라갤로그로 이동합니다. 14:55 16 0
2871385 냥덩 최근 글 [3] 발명도둑잡기(118.235) 14:54 23 0
2871383 중세시대만해도 어린여자아이 처 첩으로 많이둠 ㅇㅅㅇ 류류(118.235) 14:48 8 0
2871382 '107만' 불꽃축제 무사히 마쳐...쓰레기 더미 '눈살' [1] 발명도둑잡기(118.235) 14:48 12 0
2871381 슬기 출처 = 류류 [4] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 14:45 26 0
2871380 [애니뉴스] 카카오톡 오픈챗방 첫 대화의 기본예절 프갤러(121.172) 14:44 7 0
2871378 김정은도 소아성애자인데? [1] 류류(118.235) 14:40 14 0
2871377 “유퀴즈 출연하고 3개월 만에 회사 잘렸습니다” 발명도둑잡기(118.235) 14:38 14 0
2871375 이번 정부지원금 상위10프로는 [4] 개멍청한유라갤로그로 이동합니다. 14:34 31 0
2871374 인간이 만든 댐이 북극 위치 바꿨다 발명도둑잡기(118.235) 14:34 10 0
2871372 여자아이 임신 자격증 여자아이 출산 자격증은 왜 안생김 류류(118.235) 14:32 7 0
2871371 프갤이 개병신이니까 [2] 아스카영원히사랑해갤로그로 이동합니다. 14:30 40 0
2871370 딱국이는 어디갔을까 개멍청한유라갤로그로 이동합니다. 14:29 15 0
2871369 냥덩아? 개멍청한유라갤로그로 이동합니다. 14:28 11 0
2871368 류류 언제 인간될래 [4] 개멍청한유라갤로그로 이동합니다. 14:26 26 0
2871365 나님 지금 생각났음.. [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 14:15 15 0
2871363 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ [2] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 14:06 17 0
2871361 에어컨 안키고 선풍기 중풍으로만 지내는게 더 편한듯 [4] 헬마스터갤로그로 이동합니다. 13:58 24 0
2871360 자주가는 더 벤티 알바생 나 오면 바로 아이스아메리카노 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 13:56 22 0
2871359 셔야 되는데 나라상황이 개판이라서, 국민의힘 갤러리 단속해야 해서, 넥도리아(175.196) 13:49 16 0
2871358 25만원이 아니라 15만원 받을 상황이라 ㅈ같네 [4] ㅇㅇ(1.239) 13:46 29 0
2871357 멍유야 이링크들어가봐 ㅇㅅㅇ 류류(121.160) 13:42 14 0
2871356 우리 모두 이겨내자 [10] 개멍청한유라갤로그로 이동합니다. 13:41 51 0
2871355 이거 제 잘못인가요? [4] ㅇㅇ(14.51) 13:25 44 0
2871354 느좋냥덩? [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 13:22 21 0
2871353 재능많은애들보면 불쌍함 좇센에서태어나서 [4] 뒷통수한방(1.213) 13:18 37 0
2871352 c와 c++의 차이점 - virtual [1] ㅇㅇ(118.235) 13:12 73 2
2871349 화살은 '이재명'이 아니라 '트럼프'로 향해야 한다 발명도둑잡기(118.235) 13:01 17 0
2871347 유럽과 일본을 버리고 [1] 아스카영원히사랑해갤로그로 이동합니다. 13:00 27 0
2871345 방통대 씨1발년아 [4] 아스카영원히사랑해갤로그로 이동합니다. 12:50 67 0
2871344 대용량으로 사둔 커피가 시큼해져서 변기에 버렸어.. [1] 프갤러(121.186) 12:34 19 0
2871343 의대보다 공대 입시치열 중국의 기술굴기 다큐 [1] 프갤러(183.101) 12:31 23 0
2871342 이재명 당선되었으니 [3] 류류(121.160) 12:11 42 0
2871341 여자아이 잠지는 조임력이 1티어임 ㅇㅅㅇ [4] 류류(121.160) 12:07 53 0
2871340 풀발기 자지 ♥로스트미디어냥덩이♥갤로그로 이동합니다. 12:02 30 0
2871339 클라이언트 여러개 동시 실행 [5] ㅇㅇ(110.12) 11:54 37 0
2871338 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 11:46 15 0
2871337 챗지피티한테 책 추천해달라고 했는데 [1] 프갤러(119.197) 11:37 18 0
2871336 나님은 왜 천재해커일깡 ㅇㅅㅇㅋ [2] 익명의따당이갤로그로 이동합니다. 11:32 41 0
2871335 넥도리아 어디감 ㅇㅇ(118.235) 11:27 26 0
2871334 러스팅 소울, 7장: 침묵 속의 반향 [3] 루비갤로그로 이동합니다. 11:23 25 0
2871333 러스트 담론을 해체하다. 7월 13일짜 업데이트 루비갤로그로 이동합니다. 11:20 13 0
2871332 러브버그 같은 아다모쏠 해충멍퀴.. ♥로스트미디어냥덩이♥갤로그로 이동합니다. 11:15 28 0
2871330 회사에서도 맨날 연봉작다징징대는애중에 일잘하는애 못봄 [2] ㅇㅇ(211.234) 11:01 45 0
2871329 섹스 [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 10:56 35 0
2871328 [대한민국] 우왁굳 사건을 통해 보는 저작권 침해 사건 재해석 [1] 프갤러(121.172) 10:30 47 0
2871327 좇센은 노력이라는 말 없애야됨 문재인 이재명 윤석열같은애들도 노력해서 [2] 타이밍뒷.통수한방(1.213) 10:21 32 1
2871326 좇센에서 태어났으면서 왜 아둥바둥하는거임??금수저임?? [3] 타이밍뒷.통수한방(1.213) 10:07 43 0
뉴스 Mnet '보이즈 2 플래닛' 제작진이 밝힌 글로벌로 확장된 최정상 향한 월드 스케일 데뷔 프로젝트 승부수는? 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2