/*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
Posted by 마마필로 :