[대체] 정렬, rank실습

2011. 2. 17. 01:21 from PROGRAMMING/C

/0217_8판매보고서/

/*8판매보고서.c 코드와 수량을 5개 입력받아 다음처럼!
코드가 a(A)면 품명은 양복, 단가 38만원, 코드가 b(B)면 품명은 원피스, 단가 19만원
코드가 c(C)면 품명은 투피스, 단가 23만원, 코드가 d(D)면 품명은 운동복, 단가 20만원
그외의 코드면 구두, 단가 16만원

1번째 입력 --->코드? a
                      수량? 7
....
--------------------*판매보고서*----------------------
                                   금액(단위:만원)
코드  품명  수량  단가  금액   판매순위
x
...
*/
#include <stdio.h>
#include<string.h>
#include<ctype.h>
#define Si 5
int main()
{
    char code[Si],pum[Si][10];
    int i,j,su[Si],dan[Si],kum[Si],rank[Si];
    for(i=0;i<Si;i++)
    {
        printf("%d번째 입력 ---> ",i+1);
        printf("코드? ");
        fflush(stdin);
        code[i]=getchar();
        printf("\t\t수량? ");
        scanf("%d",&su[i]);
        switch( tolower(code[i]))
               {
                   case 'a':strcpy(pum[i],"양  복");dan[i]=38;break;
                   case 'b':strcpy(pum[i],"원피스");dan[i]=19;break;
                   case 'c':strcpy(pum[i],"투피스");dan[i]=23;break;
                   case 'd':strcpy(pum[i],"운동복");dan[i]=20;break;
                   default:strcpy(pum[i],"구  두");dan[i]=16;break;
               }
               kum[i]=su[i]*dan[i];
    }
    //순위
    for(i=0;i<Si;i++)
    {
        rank[i]=1;
        for(j=0;j<Si;j++)
        {
            if(kum[i] < kum[j]) rank[i]++;
        }
    }
    printf("\n--------------------*판매보고서*---------------------\n");
    printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
    printf("                                      (단위:만원)\n");
    printf("-----------------------------------------------------\n");
    for(i=0;i<Si;i++)
    {
        printf("%c\t%s\t%d\t%d\t%d\t%d\n",code[i],pum[i],su[i],dan[i],kum[i],rank[i]);
    }
    return 0;
}

 


/0217_판매보고서에 총계,최고수량,최저수량 추가하기/

/*8판매보고서.c 코드와 수량을 5개 입력받아 다음처럼!
코드가 a(A)면 품명은 양복, 단가 38만원, 코드가 b(B)면 품명은 원피스, 단가 19만원
코드가 c(C)면 품명은 투피스, 단가 23만원, 코드가 d(D)면 품명은 운동복, 단가 20만원
그외의 코드면 구두, 단가 16만원

1번째 입력 --->코드? a
                      수량? 7
....
--------------------*판매보고서*----------------------
                                   금액(단위:만원)
코드  품명  수량  단가  금액   판매순위
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];
    int i,j,su[Si],dan[Si],kum[Si],rank[Si];
    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",&su[i]);
        switch( tolower(code[i]))
               {
                   case 'a':strcpy(pum[i],"양  복");dan[i]=38;break;
                   case 'b':strcpy(pum[i],"원피스");dan[i]=19;break;
                   case 'c':strcpy(pum[i],"투피스");dan[i]=23;break;
                   case 'd':strcpy(pum[i],"운동복");dan[i]=20;break;
                   default:strcpy(pum[i],"구  두");dan[i]=16;break;
               }
               kum[i]=su[i]*dan[i];
               allsu+=su[i];
               allkum+=kum[i];
               if(max < su[i]) max=su[i];
               if(min > su[i]) min=su[i];
    }
    //순위
    for(i=0;i<Si;i++)
    {
        rank[i]=1;
        for(j=0;j<Si;j++)
        {
            if(kum[i] < kum[j]) rank[i]++;
        }
    }
    printf("\n--------------------*판매보고서*---------------------\n");
    printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
    printf("                                      (단위:만원)\n");
    printf("-----------------------------------------------------\n");
    for(i=0;i<Si;i++)
    {
        printf("%c\t%s\t%d\t%d\t%d\t%d\n",code[i],pum[i],su[i],dan[i],kum[i],rank[i]);
    }
    printf("-----------------------------------------------------\n");
    printf("총  계 : \t%d\t\t %d\n",allsu,allkum);
    printf("최고수량 : %d\t최저수량 : %d\n", max,min);
    return 0;
}


/0217_8_1판매보고서-->품목별내림차순 출력/

/*8_1판매보고서.c  --> 최고,최저수량을 for를 이용해서.
코드와 수량을 5개 입력받아 다음처럼!
코드가 a(A)면 품명은 양복, 단가 38만원, 코드가 b(B)면 품명은 원피스, 단가 19만원
코드가 c(C)면 품명은 투피스, 단가 23만원, 코드가 d(D)면 품명은 운동복, 단가 20만원
그외의 코드면 구두, 단가 16만원

1번째 입력 --->코드? a
                      수량? 7
....
--------------------*판매보고서*----------------------
                                   금액(단위:만원)
코드  품명  수량  단가  금액   판매순위
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 i,j,su[Si],dan[Si],kum[Si],rank[Si],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",&su[i]);
        switch( tolower(code[i]))
               {
                   case 'a':strcpy(pum[i],"양  복");dan[i]=38;break;
                   case 'b':strcpy(pum[i],"원피스");dan[i]=19;break;
                   case 'c':strcpy(pum[i],"투피스");dan[i]=23;break;
                   case 'd':strcpy(pum[i],"운동복");dan[i]=20;break;
                   default:strcpy(pum[i],"구  두");dan[i]=16;break;
               }
               kum[i]=su[i]*dan[i];
               allsu+=su[i];
               allkum+=kum[i];

    }
    //순위
    for(i=0;i<Si;i++)
    {
        rank[i]=1;
        for(j=0;j<Si;j++)
        {
            if(kum[i] < kum[j]) rank[i]++;
        }
    }
    max=min=su[0];//배열 값중 하나를 초기치
        for(i=0;i<Si;i++)
        {
               if(max < su[i]) max=su[i];
               if(min > su[i]) min=su[i];
        }
    printf("\n--------------------*판매보고서*---------------------\n");
    printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
    printf("                                      (단위:만원)\n");
    printf("-----------------------------------------------------\n");
    for(i=0;i<Si;i++)
    {
        printf("%c\t%s\t%d\t%d\t%d\t%d\n",code[i],pum[i],su[i],dan[i],kum[i],rank[i]);
    }
    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;
                temp=su[i];su[i]=su[j];su[j]=temp;
                temp=dan[i];dan[i]=dan[j];dan[j]=temp;
                temp=kum[i];kum[i]=kum[j];kum[j]=temp;
                temp=rank[i];rank[i]=rank[j];rank[j]=temp;
            }
        }
    }
    printf("\n---------------*판매보고서*(품명의 내림차순)----------\n");
    printf("코드\t품명\t수량\t단가\t금액\t판매순위\n");
    printf("                                      (단위:만원)\n");
    printf("-----------------------------------------------------\n");
    for(i=0;i<Si;i++)
    {
        printf("%c\t%s\t%d\t%d\t%d\t%d\n",code[i],pum[i],su[i],dan[i],kum[i],rank[i]);
    }
    printf("-----------------------------------------------------\n");
    return 0;

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 판매보고서, 채점(2차원배열)  (0) 2011.02.17
[대체] 11. 배열 ② 이차원배열  (0) 2011.02.17
[대체] 10. 정렬하기  (0) 2011.02.17
[대체] 9. 배열 예제  (0) 2011.02.17
[대체] 9.배열 ① 일차원배열  (0) 2011.02.17
Posted by 마마필로 :