U E D R , A S I H C RSS

빵페�지/숫�야구

1. 문제 정�


난수�성 참고�료 : RandomFunction , WindowsConsoleControl

DeleteMe 내용� 중복�어서 문제정�와 참고�료 부분� 지웠습니다. 위키�는 지� 풀�� 중복�는 지�� ��로 충분하겠지요. 아래� 문제들 역시 ~cpp 숫�야구/유주� �으로 하는 편� 차후 접근성 측면�서 � 좋�것 같습니다.--NeoCoin


  • ì•„ì•…~ ì•„ì§� 마방진ë�„ 못했는ë�° 어려운게 ë˜� -_ã…œ - 승균
    • í•´ë³´ë©´ 알겠지만 ê²°ê³  어렵지 않아 - 민수
  • ì�´ê±° 4ìž�리 수로 만든거 있는ë�° 올려ë�„ ë�˜ë‚˜ìš”?? 소스는 ì§€X같지만 ;; - ì •ìš±
  • ì•„ 그리고 rand() ë§Œ ì“°ë©´ 똑같ì�€ 숫ìž�ë§Œ ë�œë‹¤ê³ .. ë­� 다른것ë�„ 해야 ë�˜ë�˜ë�°ìš”.. - ì •ìš±
    • ctime 를 include 하고 srane(time(0)); ì�„ 선언해주면 바뀔걸~ - 민수


2. 유주�

~cpp 
#include <iostream>
#include <stdlib.h> 
#include <time.h> 
using namespace std;
 int main()
{
	
	int num[3];
	while(num[0]==num[1] || num[1]==num[2] || num[0]==num[2])
	{
	srand(time(NULL)); 
   for(int i=0; i<3; i++)
      num[i] = rand()%9 +1; 
    }
	cout <<"컴퓨터가 ��한 숫� : " << num[0] << num[1] << num[2] << "\n";
	int ch; 
	while(ch) // 탈ìœì¡°ê±´X  
	{cout <<"ìž…ë ¥ : ";
	cin >> ch;
	
	
	int person[3];
 	int bcount=0;
	int scount=0;
	person[0] = ch/100;
	person[1] = (ch%100)/10;
	person[2] = (ch%10);

		for(int i=0;i<3;i++)
		{
			for(int j=0;j<3;j++)
			{
			if(num[i]==person[j])
				{
				if(i==j)
					scount++;
				else
					bcount++;
				}
			}
		}

		 if(scount==0 && bcount==0)
			cout << "ìœë ¥ : OUT\n";
		else if(scount==0 && bcount!=0)
			cout << "ìœë ¥ : "<< bcount << "ë³¼\n";
		else if(bcount==0 && scount!=0)
		{	cout << "ìœë ¥ : " << scount << "스트ë�¼ì�´í�¬\n";
			if(scount==3)
				break;
		}
		else 
			cout << "ìœë ¥ : "<< scount << "스트ë�¼ì�´í�¬ " << bcount << "ë³¼\n"; 
	}
		cout << "프로그램� 종료해요.\n";
		return 0;
	
}
역시나 야바위� ���.. -_-+
쓰다보니 길어졌다~ while문 탈ìœì¡°ê±´ 안쓰고 ê¹”ë�”하게 하는방법 ì—†ì�„까.?

  • 오,, 주ì˜� 멋쪄~ ã…‹ã…‹ - 민수
  • 문ìž� 입력하면 매트릭스 모드 ë�Œìž…하네 -_-;;; - 승균
    • 숫ìž�ë§Œ 입력하지 않ì�€ 죄값ì�„ 치룬것ì�´ì˜¤.ã…‹ã…‹


3. 권정욱

~cpp 
// 베�스볼 게임입니다. 간단히 �해 숫� 맞추기 게임으로 4�리 � 숫�를 9번 �전� 맞춰야 합니다.

#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int rand_num[3]; //난수�성� 사용� 변수입니다.
	int i, j, k, num;   //i,j,k 는 �문용, num � 사용� 입력입니다.
	int player_num[3];  //사용�가 입력한 값� � �리 숫�로 나눠서 rand_num과 비�하기 쉽게 만듭니다.
	int ext,extra;    //여분� 변수입니다.
	int strike, ball; //스트���와 볼� �정� 쓰입니다.
 
	srand(time(NULL));
 
	for(i=0;i<3;i++){
		rand_num[i] = rand()%10;   //한 �리수 난수를 �성합니다.
		if (i == 1 && rand_num[i] == rand_num[0]) 
			i--;
		else if (i == 2 && (rand_num[i] == rand_num[0] || rand_num[i] == rand_num[1])) 
			i--;
	}          //� if 문� 통해서 4�리 숫�가 모� 다르게 배열�게 합니다.
 
	for (i=0;i<9;i++){   //게임� 시작
		cout << "3�리 숫�를 입력하세요(숫�가 겹치지 않게 쓰세요) : " ;
		cin >> num;
		ext = num;
  
		if (num < 100 || num > 999) {
			cout << "\a 잘못 입력하셨습니다. 다시 입력하여 주세요. \n";
			i--;
		}
		else{
			for (j=2;j>=0;j--){//숫�를 배열로 바꾸는 �문
				player_num[j] = ext%10;
				ext = ext/10;
			}
			for(j=0;j<2;j++){  //��리 비� �문 시작
				extra = 1;
				for(k=j+1;k<3;k++){
					if (player_num[j] == player_num[k]) {
						cout << "\a 잘못 입력하셨습니다. 다시 입력하여 주세요. \n";
						i--;
						extra = 0;
						break;
					}
					if (extra == 0) break;
				}
				if (extra == 0) break;
			}   // ��리 비� �문 �
		}    // else 문 �
                  	if (extra == 0) continue;

		strike = 0;
		ball = 0;

		if (extra == 1) {
			for(j=0;j<3;j++){  
				for(k=0;k<3;k++){
					if (rand_num[j] == player_num[k] && j==k) strike++;
					if (rand_num[j] == player_num[k] && j!=k) ball++;
				}
			}
		}
		if (strike == 0 && ball == 0) cout << "아웃입니다.\n";
		else cout << strike << "스트���, " << ball << "볼 입니다.\n";
		if (strike == 3) {
			cout << "숫�를 맞추셨습니다.!!\n";
			break;
		}
		if (i==8 && strike!=3) cout << "9회 게임 오버 입니다.\n";
	}     // 게임� �
	return 0;
}
보고 놀�지들 �아주시길 -_-;;; -정욱


  • ì•„.. 그리고 비주얼 ë² ì�´ì§�ì�´ ê°‘ìž�기 한글ì�´ 다 깨져서 나오는ë�°..
    어떻게 해야 할지 모르겠어요 ㅜㅜ -정욱

  • 4. ì�¼ì •

    ~cpp 
    #include<iostream> // 수정� ^^
    #include<ctime>
    using namespace std;
    int main()
    {
    	int num[3];
    	int yagu[3];
    	int a;
    	cout<<"컴퓨터가 ��하는 숫�:";
    	srand(time(NULL));
    	do
    	{
    	for(int i=0;i<3;i++)
    	num[i]=rand()%9+1;
    	}while(!(num[0]!=num[1] && num[1]!=num[2] && num[2]!=num[0]));
    		cout<<num[0]<<num[1]<<num[2];
    up :
    	cout<<"\nìž…ë ¥:"; 
    	cin>>a;
    	if(a<1000 && a>99)
    		{
    			yagu[0]=a/100;
    			yagu[1]=(a-yagu[0]*100)/10;
    			yagu[2]=(a-yagu[0]*100-yagu[1]*10);
    		}
    	else
    			cout<<"세�리수를 입력하세요:";
    	
    	int strike=0;
    	int ball=0;
    	for(int i=0;i<3;i++)
    	{
    		for(int j=0;j<3;j++)
    		{
    			if(yagu[i]==num[j])
    			{
    				if(i==j)
    					strike++;
    				if(i!=j)
    					ball++;
    			}
    		}
    	}
    	if(strike!=0 && ball==0)
    		if(strike==3)
    			cout<<strike<<"스트���! 종료";
    		else
    		{cout<<strike<<"스트���";
    		goto up;
    		}
    	else if(strike==0 && ball!=0)
    	{
    		cout<<ball<<"ë³¼";
    		goto up;
    	}
    	else if(strike!=0 && ball!=0)
    	{
    		cout<<strike<<"스트���"<<ball<<"볼";
    		goto up;
    	}
    	else
    	{
    		cout<<"out";
    		goto up;
    	}
    	return 0;
    }
    
    • goto문ì�´ ìƒ�ê°�나서 쓰긴했는ë�° ... ... ì „ì—� 실습시간ì—� ì¡°êµ�오빠가 goto문 안 쓰는 게 좋다고 한 것 ê°™ì�€ë�°.. ㅡㅜ숫ìž� 입력할 때 한 숫ìž� 넣고 스페ì�´ìФ ë°” 누른 후 다ì�Œ 숫ìž�를 입력해야 하는 번거로움ì�´ 있네 어떻게 해야하지?? 프로그램ì�´ 바르게 ë�Œì•„가는 게 맞는 ì§€ 확신ì�´ 없어서 계ì†� 미루고 못 올렸는ë�° í� .. 틀린 것 좀 알려주시길.... - ì�¼ì •
      - 무엇�든 100% 좋고 100% 나�것� 없습니다. dijkstra 할아버지가 goto 를 쓰지 ��고 하셨� 때� 달리 ��하는 많� 아저씨들� 수많� 논문� �고 �로 �해 많� 논�� 있었습니다. 중요한것� 좋으�? 혹� 나��? 가 아니� 그 결론� �루어지기까지� 과정입니다. SeeAlso NotToolsButConcepts Seminar:컴퓨터고전 Goto Statements Considered Harmful� 구글 검색결과 Wiki:GotoConsideredHarmful - 임��
      - 소스코드를 보아하니 레�블로 cin � 사용하였군요. cin � c++� 예약어는 아니지만 예약어와 마찬가지� ostream � �체 �름입니다. �런 레�블� 코드를 �는 사람�게 그 �미가 와전�어 전달� 수가 있습니다. - 임��
      • 넵!오빠~ thank you~^^ -ì�¼ì •
    • 오~ ì�¼ì • 대단해~ 잘했어~ - 민수
    • 우와...goto...첨보는거다 =ã……= - 승균
    • goto 문ì—� 관한 것ì�€ ë�„서관ì—�서 마ì�´í�¬ë¡œì†Œí”„트웨어 2003ë…„ 4월호 다ì�µìŠ¤íŠ¸ë�¼ê°€ gotoì—� 시비(?)를 ê±´ ì§„ì§œ ì�´ìœ ëŠ” ì�´ë�¼ëŠ” 기사를 보세요. 2003ë…„ì—� GotoConsideredHarmful ì�„ 스터디 한후ì—� 토론하고 작성ë�œ 기사입니다. Dijkstra ì�˜ 심오한 ìƒ�ê°�들ì�´ 묻어 있ì�„ê²�니다. --아무개
    • 문ë“� 숙제를 하다 go toì—�대해 알아보게 ë�˜ì—ˆêµ°ìš”. 편한방법ì�´ê¸´í•œë�°.. -주ì˜�

    5. 오승균� 숫�야구게임 v1.3

    ~cpp 
    #include <iostream.h>
    #include <stdlib.h>
    #include <ctime>
    void game();
    void new_game();
    
    
    void main()
    {
            cout << "┌──────────────────────────�\n" 
                    "│                                                    │\n" 
                    "│                                                    │\n" 
                    "│                  숫  �  야  구                    │\n" 
                    "│                                                    │\n" 
                    "│                      게   임 ver 1.3               │\n" 
                    "│                                                    │\n" 
                    "│                                                    │\n" 
                    "│                                                    │\n" 
                    "│                                  Made by 오승균    │\n" 
                    "│                                                    │\n" 
                    "└──────────────────────────┘\n";// 타�틀 화면	
    
             cout << "\n";
    
    	game(); // 게임함수 시작
    }
    
    void game()
    {
    	char random[4]; // 임�로 만들어질 숫�를 저장하는 배열
    	char space[64]; // 입력하는 숫�를 저장하는 배열
    	int strike = 0; // 스타��� 카운터 초기화
    	int ball = 0; // 볼 카운터 초기화
    	srand(time(NULL));
    	
    	for (int i = 0; i < 4; i++)	
    	{	
    		random[i] = '0' + rand() % 9 + 1;
            for (int j = 0; j < i; j++)
    			if (random[i] == random[j])
    			{
    				i--;
    				break;
    			}
    	} // 랜�하게 4�리 숫�를 �성합니다
    	
    	
    	/*cout << random[0] << random[1] << random[2] << random[3] << endl;*/ // 대략 답 -_-;;;
    
    
    	cout << "랜�하게 4�리숫�를 만들었습니다. 맞춰보세요 *^^* (종료 : Q)\n\n";
    	
    	int success = 0; // 제대로 입력했는지 확� 절차 (0 = 실패, 1 = 성공)
    
    	while (success == 0)
    	{	
    		cout << "숫�를 입력하세요 : ";
    		cin.getline(space, 64);
    		success = 1;
    
    		if ((space[0] == 'q' || space[0] == 'Q') && space[1] == '\0') 
    		{
    			cout << "Bye!!\n";
    			exit(0);
    		} // �중� 'Q'를 입력하면 종료
    		
    		for (i = 0; i < 4; i++)
    		{	
    			if (space[i] < '1' || space[i] > '9') 
    			{
    				success = 0;
                    break;
    			}
    		} // 1~9사�� 숫�가 제대로 입력�었는지 확� 
            if (space[4] != '\0')
    			success = 0; // 4�리가 정확히 입력�었는지 확�
    		for (i = 0; i < 3; i++)
    			for (int h = i + 1; h < 4; h++)
    				if (space[i] == space[h])
    				{	
    					success = 0;
    					break;
    				} // 중복 입력� �었는지 확�
    		if (success == 0)
    			continue; // 위 사항중 1개�� 걸리면 다시 입력
    
    		// 여기서 부터 제대로 입력했�시...
    		
    		for (int j = 0; j < 4; j++)
    		{
    			if (space[j] == random[j])
    				strike++; // 스트��� 카운터
    			for (int k = 0; k < 4; k++)
    				if (j != k && space[j] == random[k])
    					ball++; // ë³¼ ì¹´ìš´í„°
    				else 
    					continue;
    				
    		}
    			
    		if (strike == 0 && ball == 0)
    		{
    			cout << "ê²°ê³¼ : ";
    			cout << "OUT!!";	// 스트ë�¼ì�´í�¬, ë³¼ì�´ 없는 겨우 'OUT' ìœë ¥		
    		}
    		else if (strike == 4)
    			new_game(); // 정확히 맞췄� 경우 new_game함수로 ��
    		else
    		{
    			cout << "ê²°ê³¼ : ";
    			cout << strike << "S" << "  " << ball << "B";
    		} // ìž…ë ¥ì—� 대한 ê²°ê³¼ ìœë ¥
    		
    		cout << endl;
    		
    		strike = 0;
    		ball = 0; 
    		success = 0; // success를 0으로 초기화함으로� while문 다시 시작
    	}
    }
    
    
    void new_game() // 게임�서 성공했�시 여기로 ��
    {	
    	cout << "맞추셨습니다. � 하시겠습니까? (Y/N) : ";
    	char ch;
    	cin >> ch;
    	
    	while (ch != 'y' || ch != 'Y' || ch != 'n' || ch != 'N')
    	{
    		if (ch == 'y' || ch == 'Y')
    		{
    			while (cin.get() != '\n')
    				continue; // y를 치고 엔터를 쳤�때 �기는 개행문� 제거
    			game();
    			break;
    		}
    		else if (ch == 'n' || ch == 'N')
    		{	
    			cout << "Bye!!\n";
    			exit(0); // 게임 종료
    		}
    		else
    		{
    			cout << "맞추셨습니다. � 하시겠습니까? (Y/N) : ";
    			cin >> ch; 
    		}
    	}
    }
    
    
    /*
    Ver 1.3 Update
    게임 �중� 종료기능 추가
    
    Ver 1.2 Update
    개행문� 제거하기 (무쟈게 어려웠어요 ㅜㅜ)
    
    Ver 1.1 Update
    3�리수�서 4�리수로 변경. 소스 대거 수정.
    
    Ver 1.0
    기본 틀 완성. 게임� 제대로 구��나 숫� �외� 문� 입력시 메트릭스 모드 �입 -_-;;;
    */
    

    �효...무쟈게 힘들었� ㅜㅜ
    그래� 성공하니 뿌듯하네요.
    그리고...
    절대!!!!!!!!!!
    �거 혼�한거 아님.
    기본틀� 혼�서 다 했는�,
    메트릭스모드 제거 �런건 �움좀 받았�.

    P.S. 윽...소스가 정리가 안�어서 보기� 좋지는 않군 (쿨럭) 비쥬얼C++�다 �접 붙여서 보세요 ~_~
    Digi-VM

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:29:38
    Processing time 0.0094 sec