#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10
//***********함수선언**********//
void print_list();
void find_sex_number();
void find_name();
void find_loterion_number();
void confirm_birthday();
struct date
{
int day;
int month;
int year;
};
//*************구조체 생성 부분***************//
struct whitePages
{
int recordNumber; //레코드번호
char name[20]; //이름
char phoneNumber[20]; //전화번호
char address[20]; //주소
int sex; //성별(1이면 남자, 0이면 여자)
float grade; //프로그래밍 성적
struct date birthday;
};
//*************구조체 생성 부분***************//
//****************배열 선언 후 초기화 ************************//
struct whitePages w[10] = {
{1, \"ㄱㄱㄱ\", \"010-1987-0101\", \"수원 \", 1, 76,{26,5,1988}},
{2, \"ㄱㄱㄱ\", \"010-2849-9999\", \"마산 \", 2, 77,{26,5,1988}},
{3, \"ㄱㄱㄱ\", \"010-3724-6666\", \"평택 \", 1, 78,{31,5,1982}},
{4, \"ㄱㄱㄱ\", \"010-4685-1234\", \"영월 \", 2, 79,{12,5,1983}},
{5, \"ㄱㄱㄱ\", \"010-5561-5553\", \"울진 \", 1, 80,{23,5,1984}},
{6, \"ㄱㄱㄱ\", \"010-6445-2211\", \"대구 \", 2, 82,{24,5,1985}},
{7, \"ㄱㄱㄱ\", \"010-7347-1122\", \"경기 \", 1, 83,{25,5,1986}},
{8, \"ㄱㄱㄱ\", \"010-8251-6677\", \"인천 \", 1, 84,{26,5,1987}},
{9, \"ㄱㄱㄱ\", \"010-9163-2345\", \"부산 \", 2, 85,{27,5,1988}},
{10,\"ㄱㄱㄱ\", \"010-1076-1234\", \"서울 \", 3, 86,{28,5,1989}}
};
//****************배열 선언 후 초기화 ************************//
int main(void)
{
int number=0;
while(1)
{
printf(\"메뉴 번호에 해당하는 숫자입력\\n\");
printf(\"/+1. 전체출력\\n\");
printf(\"/+2. 성별찾기\\n\");
printf(\"/+3. 이름찾기\\n\");
printf(\"/+4. 지역인원수\\n\");
printf(\"/+5. 종료\\n\");
scanf(\"%d\",&number);
if(number == 1) print_list();
if(number == 2) find_sex_number();
if(number == 3) find_name();
if(number == 4) find_loterion_number();
if(number == 5) return 0;
}
return 0;
}
void print_list()
{
int i;
for(i = 0; i < SIZE; i++)
{
printf(\"레코드번호 : %d\\n\" ,w[i].recordNumber);
printf(\"이름 : %s\\n\" ,w[i].name);
printf(\"전화번호 : %s\\n\",w[i].phoneNumber);
printf(\"주소 : %s\\n\",w[i].address);
printf(\"성별 : %d\\n\",w[i].sex);
printf(\"성적 : %f\\n\",w[i].grade);
printf(\"생년월일:%d,%d,%d\\n\",w[i].birthday);
if(w[i].sex == 1)
printf(\"남자\\n\");
else
printf(\"여자\\n\");
printf(\"\\n\");
}
}
void find_sex_number()
{
int i;
int a = 0;
int b = 0;
for(i = 0; i < SIZE; i++)
{
if(w[i].sex == 1)
a++;
else
b++;
}
printf(\"남자 %d명, 여자 %d명입니다.\",a,b);
}
void find_name()
{
int result=0;
char s2[20];
int i=0;
printf(\"이름을 입력하세요:\");
scanf(\"%s\",s2);
for(i=0;i<SIZE;i++)
{
if(strcmp(s2,w[i].name)==0)
{
printf(\"레코드번호 : %d\\n\" ,w[i].recordNumber);
printf(\"이름 : %s\\n\" ,w[i].name);
printf(\"전화번호 : %s\\n\",w[i].phoneNumber);
printf(\"주소 : %s\\n\",w[i].address);
printf(\"성별 : %d\\n\",w[i].sex);
printf(\"성적 : %f\\n\",w[i].grade);
printf(\"생년월일:%d,%d,%d\\n\",w[i].birthday);
}
}
}
void find_loterion_number()
{
char s1[20];
int c=0;
int i=0;
printf(\"이름을 입력하세요:\");
scanf(\"%s\",&s1);
for(i=0;i<SIZE;i++)
{
if(strcmp(s1,w[i].address)==0)
{
c++;
}
}
printf(\"%s는 %d명 입니다\\n\",s1,c);
}
void confirm_birthday()
{
int i;
int year=0;
printf(\"년도를 입력하세여\");
scanf(\"%s\",&year);
for(i=0;i<SIZE;i++)
{
if(w[i].birthday > year) <<<<<<<<<<<<<<이부분 뭐가 틀렸데 ㅠ 년도를 입력하면 그년도 보다 작은 사람들을 쭉 출력해줘야 하
{ 는데 여기 오류데 if문에서 뭔가 틀렸는ㄷ ㅔ 모르겠어 ㅋㅋ 알려주세여~
printf(\"레코드번호 : %d\\n\" ,w[i].recordNumber); 아는사람이 이시간엔 없겠지....ㅠ
printf(\"이름 : %s\\n\" ,w[i].name);
printf(\"전화번호 : %s\\n\",w[i].phoneNumber);
printf(\"주소 : %s\\n\",w[i].address);
printf(\"성별 : %d\\n\",w[i].sex);
printf(\"성적 : %f\\n\",w[i].grade);
printf(\"생년월일:%d,%d,%d\\n\",w[i].birthday);
}
}
}
봐드렸습니다
와시발 개쩐다
그나마 코드가 깔끔하네.. 이게 birthday는 구조체 date 아닙니까.. 이거랑 year를 비교해?.
w[i].birthday.year
뭐라 쓴거임 ㅡㅡ 전혀 도움이 안되네 ㅠㅠ 아 누구한테 물어보나 ㅠ
integer하고 date하고 저렇게 비교가 되나.. 형변환을 해줘야지..
그러게여 ㅠ 그니깐 어디에 ㅠㅠ 어떻게 바꿔야하는지 설명점 .. 신나게 바꿔보는데 전혀안되고있음
입력 받은 변수를 date로 형변환 하세요. 형변환은 구글링 해보시고. 비교라는 것은 타입이 같아야 하는 겁니다. 그리고 날짜 입력은 String으로 담아야지 int로 담으면 안됩니다.
ㅠㅠ 무슨말씀인가 ㅠ 난 뭘배웠는가... 입력은 바꾸었고 형변환은 date형으로 바꾸는건 대체 어떻게 하는거임?
ㅋㅋ 아~ date가 구조체였네 클래스인줄 알았네.. 이렇게 비교 해보세요. if(w[i].birthday.year > year) //jy님이 써줬구만.. ㅎㅎ
코딩은 되는데 ㅠ 오류는무엇이며 ㅠ 왜 비교가 안되지 ㅎㅎ 아돌겠다 ㅋㅋㅋ