제가 물어보고 싶은것은 이거 구조체 인데요,
구조체 안에다가 함수를 넣어서 프로그램 안에서 실행을 할때
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);
}
}
}
답변자님,
정보를 공유해 주세요.
그냥 메인 함수에 메뉴 간편하게 하는법 가르쳐 드릴께요
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이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.