C언어 초보 버블정렬 내림차순 에러 좀 고쳐주세요.
그대와나
#includestdio.hint DesSort4(int leng,int num[]);int main(void)
{
int num[7]={1,2,3,4,5,6,7};
DesSort4(7,num);
printf(Program End);
return 0;
}
int DesSort4(int leng,int num[])
{
int cnt,cnt2,count;
int temp;
printf(\n);
printf(Input Check:);
for(count=0;count7;count++)
{
printf(%d ,num[count]);
}
printf(\n);
for(cnt=0;cntleng-1;cnt++)
{
for(cnt2=1;cnt2leng-1;cnt2++)
{
if(num[cnt]num[cnt2])
{
num[cnt]=temp;
num[cnt]=num[cnt2];
temp=num[cnt2];
}
printf(Output:);
for(count=0;count7;count++)
{
printf(%d ,num[count]);
}
printf(\n);
}
}
printf(Output:);
for(count=0;count7;count++)
{
printf(%d ,num[count]);
}
printf(\n);
return 0;
}
1,2,3,4,5,6,7을 7,6,5,4,3,2,1로 버블정렬을 이용해서 정렬 하는건데자꾸 문제가 생기네요.Input Check:1 2 3 4 5 6 7
Output:2 2 3 4 5 6 7
Output:3 2 3 4 5 6 7
Output:4 2 3 4 5 6 7
Output:5 2 3 4 5 6 7
Output:6 2 3 4 5 6 7
Output:6 2 3 4 5 6 7
Output:6 3 3 4 5 6 7
Output:6 4 3 4 5 6 7
Output:6 5 3 4 5 6 7
Output:6 6 3 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 4 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 5 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Output:6 6 6 6 6 6 7
Program End진짜 미치겠습니다.어디가 잘못됬는지 좀 알려주세요.ㅠㅠ
-
혜윤
7은 전부 leng으로 바꿔주셔야 합니다.
않그러면 leng을 받은 의미가 없습니다.
int num[2]로 바꾸고
DesSort4(2,num);로 바꾼다음
프로그램을 돌리면 에러가 뜨거나 쓰레기값이 출력되겠죠. -
가시
첫번째 for문의 조건문을 약간 수정하셔야할거같네요.
cntleng-1이라고 하시면
leng이 7이니까, cnt6일때까지 돌아가는데.
그럼 배열의 7번째는 정렬이 되지않습니다 ;ㅅ; -
세움
일부 수정이 되서 정렬이 되긴하는데 6123457로 되네요--;
-
노을빛
num[cnt]=temp;
num[cnt]=num[cnt2];
temp=num[cnt2];
이부분을
temp=num[cnt];
num[cnt]=num[cnt2];
num[cnt2]=temp;
로 해주셔야할거같네요 ;ㅅ;