#include <stdio.h> #include <stdlib.h> char color[5]; //색깔 입력받을 배열 int num[5]; //숫자 입력받을 배열 int line_num[4][2]={0}; int color_same(void); int line(void); void count(void); void pr(void); int main(void) { int i, col, li; for(i=0; i<5; i++) scanf(" %c %d", &color[i], &num[i]); col=color_same(); li=line(); if(col==5 && li==5) //1. 카드 5장이 모두 같은 색이면서 숫자가 연속적일 때 printf("%d", num[4]+900); else if(col==5) //4. 카드 5장이 모두 같은 색일 때 printf("%d", num[4]+600); else if(li==5) //5. 카드 5장의 숫자가 연속적일 때 printf("%d", num[4]+500); else { count(); if(line_num[0][1]==4) //2. 카드 4장의 숫자가 같을 때 printf("%d", line_num[0][0]+800); else if(line_num[0][1]==3) { if(line_num[1][1]==2) //3. 카드 3장의 숫자가 같고 나머지 2장도 숫자가 같을 때 printf("%d", (line_num[0][0]*10)+line_num[1][0]+700); else //6. 카드 3장의 숫자가 같을 때 printf("%d", line_num[0][0]+400); } else if(line_num[0][1]==2) { if(line_num[1][1]==2) //7. 카드 2장의 숫자가 같고 또 다른 2장의 숫자가 같을 때 printf("%d", (line_num[1][0]*10)+line_num[0][0]+300); else //8. 카드 2장의 숫자가 같을 때 printf("%d", line_num[0][0]+200); } else //어떤 경우도 해당하지 않을 때 printf("%d", num[4]+100); } return 0; } int color_same(void) //숫자가 모두 같은가? { int i, c=1; for(i=1; i<5; i++) { if(color[0]!=color[i]) break; c++; } return c; } int line(void) { int i, j, aa, c=1; char bb; for(i=0; i<4; i++) //숫자 크기 순으로 정렬 { for(j=i+1; j<5; j++) { if(num[i]>num[j]) { aa=num[i]; num[i]=num[j]; num[j]=aa; bb=color[i]; color[i]=color[j]; color[j]=bb; } } } for(i=0; i<4; i++) //숫자가 연속적인가? { if(num[i]+1!=num[i+1]) break; c++; } return c; } void count(void) //같은 숫자의 개수 { int i, j, a=0, aa; //printf("start \n"); //pr(); for(i=0; i<5;) { // printf("for i= %d\n", i); line_num[a][0]=num[i]; line_num[a][1]=1; for(j=i+1; j<5; j++) { if(num[i]==num[j]) line_num[a][1]++; else { i=j; a++; break; } } // printf("j= %d \n", j); // printf("for \n"); // pr(); // system("pause"); if(a>3 || j>4) break; } for(i=0; i<3; i++) { for(j=i+1; j<4; j++) { if(line_num[i][1]<line_num[j][1]) { aa=line_num[i][0]; line_num[i][0]=line_num[j][0]; line_num[j][0]=aa; aa=line_num[i][1]; line_num[i][1]=line_num[j][1]; line_num[j][1]=aa; } } } // printf("finish \n"); // pr(); } void pr(void) { int i; for(i=0; i<4; i++) { printf("[%d] - %d %d \n", i, line_num[i][0], line_num[i][1]); } printf("\n\n"); }
2017.12.23 11:11
정올 - 실력키우기 - 카드게임(1311)
조회 수 1886 추천 수 0 댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. | 좋은아빠되기 | 2019.02.15 | 299 |
공지 | 키보드 화살표값 출력 | 좋은아빠되기 | 2016.11.19 | 1079 |
공지 | 원하는 좌표에 값 출력하기 | 좋은아빠되기 | 2016.11.19 | 2394 |
공지 | Python(파이썬) 학습 자료 PDF 1 | 좋은아빠되기 | 2014.12.10 | 10308 |
공지 | dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) | 좋은아빠되기 | 2014.06.07 | 4719 |
공지 | DEV-C++ 기본 코드 | 좋은아빠되기 | 2013.06.19 | 8267 |
공지 | 무료 C++ 컴파일러(윈도우용) DEV-C++ | 좋은아빠되기 | 2013.06.18 | 18956 |
공지 | 이클립스 C++ 설치 파일들 | 좋은아빠되기 | 2013.06.18 | 37860 |
210 | 영단어 입력한후 그단어중 가장큰 아스키코드 구하기(승민) | 승민 | 2016.04.02 | 508 |
209 | 배열1 자가진단5 | 선우 | 2016.04.02 | 229 |
208 | 띄어쓰기까지 프로그램 출력하기(승민) | 승민 | 2016.04.02 | 1916 |
207 | scanf함수를 사용한 문자열(승민) | 승민 | 2016.04.02 | 194 |
206 | scanf함수를 사용한 배열(승민) | 승민 | 2016.03.26 | 807 |
205 | 배열 5개숫자 더히가(승민) | 승민 | 2016.03.26 | 108 |
204 | 배열 3가지 | 선우 | 2016.03.19 | 102 |
203 | 숫자두개 입력하고 큰거 작은거 구분하고 작은숫자부터 큰숫자까지 곱하기(승민) | 승민 | 2016.03.19 | 222 |
202 | 반복제어문3 형성평가 7 | 선우 | 2016.03.19 | 216 |
201 | 반복제어문3 형성평가 6 | 선우 | 2016.03.19 | 209 |
200 | 반복제어문3 형성평가 5 | 선우 | 2016.03.19 | 337 |
199 | 반복제어문3 형성평가 4 | 선우 | 2016.03.19 | 286 |
198 | 반복제어문3 형성평가 3 | 선우 | 2016.03.19 | 187 |
197 | 반복제어문3 형성평가 2 | 선우 | 2016.03.19 | 284 |
196 | 반복제어문3 형성평가 1 | 선우 | 2016.03.19 | 264 |
195 | for문 입력한숫자만큼 입력받고 평균구하기(승민) | 승민 | 2016.03.19 | 4390 |
194 | 짝수 홀수 갯수구하기(승민) | 승민 | 2016.03.12 | 1195 |
193 | 제어문 연습(완성) | 선우 | 2016.03.12 | 102 |
192 | 입력한 숫자 이하 짝수만 출력하기(승민) | 승민 | 2016.03.12 | 1402 |
191 | 정올 반복제어문3 자가진단4 | 선우 | 2016.03.12 | 190 |