NAVER

질문 입력출력
suby**** 조회수 146 작성일2006.12.09

제가 물어보고 싶은것은 이거  구조체 인데요,

구조체 안에다가 함수를 넣어서 프로그램 안에서 실행을 할때

 

1을 누르면 입력을 하게 하고 2를 누르면 출력을 3을 누르면 정렬을 할 수 있어야 한대요..

그리고 4를 누르면 종료를...

 

근데 이 메뉴가 계속 반복대서 떠야 하는데....

 

어느정도 작성은 했는데 계속 오류가 떠서 어떻게 해야 할지 몰라서 올립니다..

 

부탁드립니다.

제가 쓴 프로그램은 turbo c++에서 작성하구요, 그걸로 쓰고 있어요,,ㅜㅜ

 

ㅜㅜ

 

#include<stdio.h>
struct subyn
{  int co;
 char *na;
 int su;
 int in4;
 int in5;
 int in6;
 float hab;
 float bi;
     
};
   
    struct subyn a[5],c[5],temp;
 int cnt, i,j;


    in_date()
{
    for(i=0;i<5;i++)
 {


 printf("부서코드");
 scanf("%d",&a[i].co);
  if(a[i].co==0)
      break;
 printf("4급인원");
 scanf("%d",&a[i].in4);
 printf("5급인원");
 scanf("%d",&a[i].in5);
 printf("6급인원");
 scanf("%d",&a[i].in6);

 if(a[i].co==11)
 {a[i].na="영업부";a[i].su=60;}
 else if(a[i].co==12)
 {a[i].na="인사부";a[i].su=70;}
  else if(a[i].co==13)
 {a[i].na="기획부";a[i].su=80;}
 else if(a[i].co==14)
 {a[i].na="총무부";a[i].su=90;}
 else
 {a[i].na="관리부";a[i].su=100;}


    a[i].hab= a[i].in4 + a[i].in5 + a[i].in6;
 a[i].bi=(a[i].hab/a[i].su)*100;
 if(a[i].bi>=100)
  a[i].bi=100;
   cnt=cnt+1;
        c[i]=a[i];

 }

   for(i=0;i<=cnt-2;i++)
    {
  for(j=i+1;j<=cnt-1;j++)
   {
   if(a[i].co>a[j].co)
   {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
            }

  }
       }

      

     void  out_date()
     {
 printf("\n부서코드  부서명  인원수  4,5,6,급 인원수 비율");
    for(i=0;i<=cnt-1;i++)
 printf(" \n%d     %s   %d    %3.0f   %4.0f",a[i].co,a[i].na,a[i].su,a[i].hab,a[i].bi);
    for(i=0;i<=cnt-1;i++)
 printf("\n%d    %d   %d   %d ",a[i].co,a[i].in4,a[i].in5,a[i].in6);
      }  
  


   main()
   {

   char i,menu;
 
   {
   cnt=0;

   printf("20327 차수빈\n");

   {
   printf("0.  정렬\n");
   printf("1.  입력\n");
   printf("2.  출력\n");
   scanf("%c",&menu);
   if (menu=='0')
      break;
   else if (menu=='1')
   in_date();
   else if(menu=='2')
   out_date();
   else
   printf("잘못 입력하셨습니다.\n");
   scanf("%c",&menu);
}
}
}

프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
sugu****
고수
C, C++ 분야에서 활동
본인 입력 포함 정보

그냥 메인 함수에 메뉴 간편하게 하는법 가르쳐 드릴께요

void menu()

{

 printf("0.  정렬\n");
   printf("1.  입력\n");
   printf("2.  출력\n");
 printf("choose the menu : ");

} // 이런 단순 메뉴목록 뿌려주는 함수

 

void SelMenu(int sel) // sel 즉 선택된 수를 인자로 받아서

{

switch (sel)

{

case 1:

// 정렬함수 호출;

break;

case 2:

// 입력함수 호출;

break;

case 3:

// 출력함수 호출

break;

}

} // 이렇게 sel의 값에 따라 각각 함수 호출해주고요

 

이제 이것을 이용해서 main 함수에

int main(void)

{

int sel = 0; // 이건 메뉴 셀렉트할 변수;

// 조건문은 메뉴를 계속 뿌려주는 조건입니다

while( (4 != sel )|| (sel >=1 && sel <=4)) // 4가 종료죠 즉 sel이 4가 아닌이상

{                              // 그리고 메뉴에 맞는 숫자를 찍어야 겠죠

menu(); // 메뉴 함수 호출;

scanf("%d", &sel); // 사용자가 번호 선택

fflush(stdin);

SelMenu(sel); // 셀렉트 함수 호출

}

retrun 0;

} // 그러면 위의 조건문만 맞으면 계속 메뉴 뿌려줍니다

간단하죠?

이렇게 하면 훨씩 깔끔하고 보기 좋을꺼에요

 

 

2006.12.09.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.