다들 수준이 높으신데 이런 질문 올리기 죄송하지만.. gets함수가 잘 안돌아가요 ㅠㅠ
핫파랑
제가 활동은 잘 안하지만 이 사이트에서 정말 많은 도움을 받고 있습니다..
그런데 제가 정말 이해 안가는 문제가 있어서 질문 올립니다.
일단 이게 제가 짠 소스입니다
#includestdio.h
#includestring.h
int main()
{
char name[30][10],n_temp[10];
int data[30][5],d_temp;
int select,select_2,i,j,k,man;
for(;;){
printf(1.학생 정보 입력\n);
printf(2.정보 정렬하기\n);
printf(3.학생 정보 보기\n);
printf(4.학생 검색하기\n);
printf(5.종료\n);
scanf(%d,&select);
switch (select){
case 1:
printf(학생의 수 : );
scanf(%d,&man);
for(i=0;iman;i++){
printf(이름 : );
gets(name[i]);
printf(수학 점수 : );
scanf(%d,&data[i][0]);
printf(영어 점수 : );
scanf(%d,&data[i][1]);
printf(과학 점수 : );
scanf(%d,&data[i][2]);
data[i][3]=data[i][0]+data[i][1]+data[i][2];
data[i][4]=data[i][3]/3;
}
break;
case 2:
printf(1.이름순 정렬);
printf(2.성적순 정렬);
scanf(%d,&select_2);
switch(select_2){
case 1:
for(i=0;iman-1;i++){
for(j=i+1;jman;j++){
if(strcmp(name[i],name[j])0){
strcpy(n_temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],n_temp);
for(k=0;k5;k++){
d_temp=data[i][k];
data[i][k]=data[j][k];
data[j][k]=d_temp;
}
}
}
}
break;
case 2:
for(i=0;iman-1;i++){
for(j=i+1;jman;j++){
if(data[3][i]data[3][j]){
for(k=0;k5;k++){
d_temp=data[i][k];
data[i][k]=data[j][k];
data[j][k]=d_temp;
}
strcpy(n_temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],n_temp);
}
}
}
break;
}
break;
case 3:
printf(이름 \t수학 \t영어 \t과학 \t총점 \t평균\n);
for(i=0;iman;i++){
printf(%s %d %d %d %d %d \n,name[i],data[i][0],data[i][1],data[i][2],data[i][3],data[i][4]);
break;
}
case 4:
gets(n_temp);
for(i=0;iman;i++){
if(strcmp(n_temp,name[i])==0){
printf(%s %d %d %d %d %d ,name[i],data[i][0],data[i][1],data[i][2],data[i][3],data[i][4]);
}
}
break;
}
if(select==5)break;
}
return 0;
}
이름과 점수3개(수학,영어,과학)을 입력받아 총점,평균을 구하고 성적순,이름순 정렬을 선택하고
이름으로 검색하여 그 사람의 성적을 찾을 수 있도록 하는 프로그램인데요
질문하고싶은게.. 이 프로그램을 돌리면 이름 입력을 안받습니다 ㅡ,.ㅡ;;; 정말눈물나요..;;
제가 이 사이트에서 알고리즘 공부를 열심히 했는데 기본기가 탄탄치못해 기본함수에서
막히네요 ㅠㅠ 그리고 성적순 정렬할때
data[i][k]를 d_temp값에 넣어주어 swap해주었는데요
데이타배열이 한줄에 5개의 값(수학,영어,과학,총점,평균)을 갖는데 이걸 한꺼번에 다른 x[5]배열에 넣어주어서
swap해줄 수 없나요?? strcpy는 문자열복사라서 안될거같은데 ㅠㅠ
중구난방으로 써서 눈이 아프실까봐 질문 정리!!
1.이 소스를 돌려보면 이름 입력을 받지 않고 성적만 입력받습니다 ㅠㅠ
2.성적순 정렬을 할 때 swap과정에서 배열안의 원소를 하나하나 swap해주는 것이 아니라
한줄씩 (data[i][j]가 있다면 data[i] 단위로)swap 하는 방법은 없나요?
-p.s 구조체로 짜면 조금 더 간편하겠지만... 구조체를 아직 수업시간에 안나가서 사용할수가 없네요 ;;; 그리고 구조체도 동적할당 되나요?
-
모아
구조체 자체가 동적할당을 해서 쓰기위해 선언하는경우가 대부분이 아닐까 싶네요. ^^
-
마중물
정말 감사합니다.. 역시 기초가안되서 ㅠㅠ 키보드 버퍼 안비우고 해서 그런거였군요 ^^ 감사합니다