구조체와 열거형에 대한 질문입니다
진달래
문제는
컴퓨터 하드 디스크에 대한 구조체를 작성하는 것입니다 하드 디스크는 종류, 용량, 제조사, 가격이라는 정보를 가지고
하드 디스크는 E_IDE, SATA, SCSI 방식이 있다 종류는 열거형을 이용하여 표현하여 보라 10개의 정도의 하드 디스크에 대한 정보를 사용자로부터 입력받아서 저장할수 있도록 구조체의 배열을 선언한다.
저장된 하드 디스크 정볼ㄹ 화면에 출력하는 프로그램을 작성한다. 하드 디스크의 종류를 숫자 대신에 해당되는 문자열로 출력하는 프로그램이다
저는 쉽게 풀어쓴 express C 학교 책으로 방학중에 연습문제를 풀고 있어서 부득이하게 숙제 같이 보이지만 문제를 다씁니다..
문제가 이해를 못했거든요... 정보입력해서 출력은 했는데... 하드 디스크의 종류를 숫자 대신에 해당되는 문자열로 출력하는 프로그램이다 ㅣ;;; 이게 무슨말인지 몰라서요....그래서 제가 한 소스가 맞는지 확인이 안되서 올려 봅니다..
3개 정보를 입력받는걸로 소스 해놧는데.. 마지막 문제 부분을 잘 몰라서요....
아주 다 틀린건가요???
#include stdio.h
#define SIZE 3
struct HARD{
int capacity;
char making[10];
int price;
};
enum disk {E_IDE=1, SATA, SCSI};
void input(struct HARD *pp);
void print(struct HARD *p);
int main(){
struct HARD hard[SIZE];
enum disk d;
int i=0;
input(hard);
print(hard);
return 0;
}
void input(struct HARD *pp)
{
int i=0,k=0;
int j=0;
while(kSIZE)
{
printf(1.E_IDE \n2. SATA \n3.SCSI입니다 \n선택하세요 );
scanf(%d,&i);
switch(i)
{
case E_IDE:
{
printf(E_IDE의 정보입력입니다\n);
printf(E_IDE의 용량을 입력하시오 :);
scanf(%d,&pp[j].capacity);
printf(E_IDE의 가격을 입력하시오 :);
scanf(%d,&pp[j].price);
printf(E_IDE의 제조사를 입력하시오:);
scanf(%s,pp[j].making);
printf(\n);
j++;
break;
}
case SATA:
{
printf(SATA의 정보입력입니다\n);
printf(SATA의 용량을 입력하시오 :);
scanf(%d,&pp[j].capacity);
printf(SATA의 가격을 입력하시오 :);
scanf(%d,&pp[j].price);
printf(SATA의 제조사를 입력하시오:);
scanf(%s,pp[j].making);
printf(\n);
j++;
break;
}
case SCSI:
{
printf(SCSI의 정보입력입니다\n);
printf(SCSI의 용량을 입력하시오 :);
scanf(%d,&pp[j].capacity);
printf(SCSI의 가격을 입력하시오 :);
scanf(%d,&pp[j].price);
printf(SCSI의 제조사를 입력하시오:);
scanf(%s,pp[j].making);
printf(\n);
j++;
break;
}
}
k++;
}
}
void print(struct HARD *p)
{
int i=0;
printf(----------------------------------정보출력!-----------------------------);
puts();
for(i=0; iSIZE; i++)
{
printf(%d 번 용량: %d 가격: %d 제조사 %s\n,i+1,p[i].capacity,p[i].price,p[i].making);
}
printf(\n);
}
-
라
감사합니다 ^^
-
주리
struct HARD{
int type; // 여기에 하드디스크의 종류에 대한 변수를 넣어야 할테고
int capacity;
char making[10];
int price;
};
그 변수는 정수형(int)일겁니다.
struct HARD hard;
hard.type = E_IDE; // 와 같이 E_IDE라고 적지만 출력할 때는 E_IDE의 값(?)인 1이 출력될 겁니다.
이렇게 숫자로 출력하지 말고 E_IDE에 해당하는 \E_IDE\를 출력하라 -
횃불
답변 감사합니다.. 그런데 님 이게 무슨 말인지 잘 모르겠어요.. 예를 설명해 주시면 안될까요??
-
Addictive
struct HARD에 하드디스크의 종류에 대한 변수는 안 보이는 군요.
열거형을 사용하였으니 이 변수는 정수형을 사용하게 될 겁니다.
출력할 때 이 정수형 값을 그대로 출력하지 말고 각 숫자에 해당하는 하드디스크 종류의 문자열을 출력하라는 말입니다. 1이면 \E-IDE\를 출력하는 식으로 말입니다.