/*11판매보고서(이차원배열)코드와 수량을 5개 입력받아 다음처럼!
코드가 a(A)면 품명은 양복, 단가 38만원, 코드가 b(B)면 품명은 원피스, 단가 19만원
코드가 c(C)면 품명은 투피스, 단가 23만원, 코드가 d(D)면 품명은 운동복, 단가 20만원
그외의 코드면 구두, 단가 16만원
1번째 입력 --->코드? a
수량? 7
....
--------------------*판매보고서*----------------------
금액(단위:만원)
코드 품명 수량(0번열) 단가(1번열) 금액(2번열) 판매순위(3번열)
x
...
---------------------------------------------------------
총계 XXX XXX
최고수량 : XX 최저수량 : XX
*/
#include <stdio.h>
#include<string.h>
#include<ctype.h>
#define Si 5
int main()
{
char code[Si],pum[Si][10],tpum[10],tcode;
int k,i,j,a[Si][4],temp;
int allsu=0,allkum=0,max,min;
max=-9999;
min=9999;
for(i=0;i<Si;i++)
{
printf("%d번째 입력 ---> ",i+1);
printf("코드? ");
fflush(stdin);
code[i]=getchar();
printf("\t\t수량? ");
scanf("%d",&a[i][0]);
switch( tolower(code[i]))
{
case 'a':strcpy(pum[i],"양 복");a[i][1]=38;break;
case 'b':strcpy(pum[i],"원피스");a[i][1]=19;break;
case 'c':strcpy(pum[i],"투피스");a[i][1]=23;break;
case 'd':strcpy(pum[i],"운동복");a[i][1]=20;break;
default:strcpy(pum[i],"구 두");a[i][1]=16;break;
}
a[i][2]=a[i][0]*a[i][1];
allsu+=a[i][0];
allkum+=a[i][2];
}
//순위
for(i=0;i<Si;i++)
{
a[i][3]=1;
for(j=0;j<Si;j++)
{
if(a[i][2] < a[j][2]) a[i][3]++;
}
}
max=min=a[0][0];//배열 값중 하나를 초기치
for(i=0;i<Si;i++)
{
if(max < a[i][0]) max=a[i][0];
if(min > a[i][0]) min=a[i][0];
}
printf("\n--------------------*판매보고서*---------------------\n");
printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
printf(" (단위:만원)\n");
printf("-----------------------------------------------------\n");
for(i=0;i<Si;i++)
{
printf("%3c\t%s\t%4d\t%4d\t%4d\t%4d\n",code[i],pum[i],a[i][0],a[i][1],a[i][2],a[i][3]);
}
printf("-----------------------------------------------------\n");
printf("총 계 : \t%d\t\t %d\n",allsu,allkum);
printf("최고수량 : %d\t최저수량 : %d\n", max,min);
//정렬하기
for(i=0;i<Si-1;i++)
{
for(j=i+1;j<Si;j++)
{
if( strcmp(pum[i],pum[j] )<0 )//strcmp("원피스","투피스")<0
{
strcpy(tpum,pum[i]);
strcpy(pum[i],pum[j]);
strcpy(pum[j],tpum);
tcode=code[i];code[i]=code[j];code[j]=tcode;
for(k=0;k<4;k++)
{temp=a[i][k];a[i][k]=a[j][k];a[j][k]=temp;}
//temp=a[i][1];a[i][1]=a[j][1];a[j][1]=temp;
//temp=a[i][2];a[i][2]=a[j][2];a[j][2]=temp;
//temp=a[i][3];a[i][3]=a[j][3];a[j][3]=temp;
}
}
}
printf("\n---------------*판매보고서*(품명의 내림차순)----------\n");
printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
printf(" (단위:만원)\n");
printf("-----------------------------------------------------\n");
for(i=0;i<Si;i++)
{
printf("%3c\t%s\t",code[i],pum[i]);
for(j=0;j<4;j++)
{
printf("%4d\t",a[i][j]);
}
printf("\n");
}
printf("-----------------------------------------------------\n");
return 0;
}
/*12채점.ㅊ 5명의 답안을 입력받아 채점하고 다음처럼!
int jdap[5]={1,2,3,4,1};//정답지
#1번째 data입력)
번호? 11 (이미 있는 번호는 입력X)
이름? 이 수 정
#1 -> 1
#2 -> 2
#3 -> 2
#4 -> 3
#5 -> 4
#2번째 data입력)
번호? 11
이미 존재하는 번호입니다. 다시 번호? 11
이미 존재하는 번호입니다. 다시 번호? 11
이미 존재하는 번호입니다. 다시 번호? 12
...
-------------------*채점 결과*------------------
번호 이름 #1 #2 #3 #4 #5 점수(6) 등수(7)
ZZ(0) ZZZ 1(1) 2(2) 2(3) 3(4) 3(5)
O O X X X 40 Z
....
*/
#include<stdio.h>
#define Si 5
int main()
{
int i,j,jdap[5]={1,2,3,4,1},a[Si][8];
char name[Si][15],ox[Si][5];
for (i=0;i<Si;i++)
{
printf("#%d번째 data입력)\n",i+1);
Dasino:
printf("번호? ");
scanf("%d",&a[i][0]);
//번호check i: 3, j: 0,1,2
for(j=0;j<i;j++)
{
if(a[i][0]==a[j][0])
{
printf("\t이미 존재하는 번호입니다. 다시");
goto Dasino;
}
}
printf("이름? ");
fflush(stdin);
gets(name[i]);
a[i][6]=0;//점수
for(j=1;j<=5;j++)
{
printf("\t#%d -> ",j);
scanf("%d",&a[i][j]);
if(a[i][j]==jdap[j-1])
{ox[i][j-1]='O';a[i][6]+=20;}
else
ox[i][j-1]='X';
}
}
//등수구하기
for(i=0;i<Si;i++)
{
a[i][7]=1;
for(j=0;j<Si;j++)
{
if(i==j) continue;
if(a[i][6]<a[j][6]) a[i][7]++;
}
}
printf("\n---------------------*채점 결과*--------------------\n");
printf("번호\t이름\t #1 #2 #3 #4 #5\t점수\t등수\n");
for(i=0;i<Si;i++)
{
printf("%d\t%s\t",a[i][0],name[i]);
for(j=1;j<=5;j++)
{
printf("%3d ",a[i][j]);
}
printf("\n \t\t");
for(j=0;j<5;j++)
{
printf("%3c ",ox[i][j]);
}
printf("%6d\t%4d\n",a[i][6],a[i][7]);
}
return 0;
}
'PROGRAMMING > C' 카테고리의 다른 글
[대체] 사용자함수 (0) | 2011.02.18 |
---|---|
[대체] 자리배치(1차원배열, 난수) (0) | 2011.02.18 |
[대체] 11. 배열 ② 이차원배열 (0) | 2011.02.17 |
[대체] 정렬, rank실습 (0) | 2011.02.17 |
[대체] 10. 정렬하기 (0) | 2011.02.17 |