오름차순,내림차순 으로 차례 바꾸는건데 어디가 틀린지 모르겠어요
곰돌이
질문 제목 : 질문 내용 :
명령행 전달인자에서 주어진 만큼의 정수를받아서 오름차순(ascending order) 또는 내림차순(descending order)으로 정렬해 출력하는 c 프로그램(실행파일명은 sort.exe)을 작성하시오
(실행 예 1) c:\ sort asc 4
(입력) 52 33 44 -12
(정렬) -12 33 44 52이런 문젠데요
제가 소스를 짰는데 어디가 잘못됬는지
숫자 정렬이 잘 안되요 ! 오ㅐ 그런걸까요 ??
#includestdio.h
#includestdlib.h//atoi,malloc
void exchange(int *,int *);
int main(int argc,char *argv[]){//argc:전달인자가 몇개인가 argv[1][2][3]...전달인자 배열저장
int *aa;
int count;//지정해준 정수 갯수
int i,j;//카운터
count=atoi(argv[2]);//지정해준 정수 갯수
aa=(int *)malloc(sizeof(int)*count);
printf((입력)\n);
i=0;
while(icount){
scanf(%d,&aa[i]);
i++;
}
if(argv[1]==asc){//오름차순으로 정렬
for(i=0;icount;i++){
for(j=i;jcount;j++){
if(aa[i]aa[j]) exchange(&aa[i],&aa[j]);
}}}
else if(argv[1]==des){//내림차순으로 정렬
for(i=0;icount;i++){
for(j=i;jcount;j++){
if(aa[i]aa[j]) exchange(&aa[i],&aa[j]);
}}}
printf((출력)\n);
for(i=0; icount; i++){
printf(%d ,aa[i]);
}
free(aa);
return 0;
}
void exchange(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
-
보나
저도 몇번 실수를 했던건데 또 깜박할번 했네요
문자열을 비교할때는 strcmp함수를 이용해야하는데 문자열 상수 주소값으로 비교를 하니
참값이 안되는 듯 합니다.
strcmp함수를 이용하면 같을때 0이 리턴됩니다. !strcmp형식으로 하면 같을때 참값을 얻을 수 있습니다.