質問編集履歴
1
ソースコードを見やすくしました
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            main関数の中で第二コマンドライン引数を指定し、0を入力したときは昇順、1を入力したときは降順でファイル内の数字を並べたいです。
         | 
| 2 2 | 
             
            しかしどのようなコードを書けば指定できるのかが分かりません。ご教授お願いいたします。
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 4 | 
            +
            ```ここに言語を入力
         | 
| 5 5 | 
             
            #include <stdio.h>
         | 
| 6 6 | 
             
            #include <stdlib.h>
         | 
| 7 7 | 
             
            #include "sort_array.h"
         | 
| @@ -26,23 +26,39 @@ | |
| 26 26 | 
             
              fclose(fp);  
         | 
| 27 27 | 
             
            }
         | 
| 28 28 |  | 
| 29 | 
            -
            int add(int a, int b){ return a+b; }
         | 
| 30 | 
            -
            int sub(int a, int b){ return a-b; }
         | 
| 31 | 
            -
             | 
| 32 29 | 
             
            int main(int argc, char* argv[]){
         | 
| 33 30 | 
             
              int N = atoi(argv[1]);
         | 
| 34 | 
            -
              
         | 
| 35 | 
            -
               | 
| 31 | 
            +
              // ここに第2コマンドライン引数で,0:昇順と1:降順を指定したい
         | 
| 36 | 
            -
              int (*funcp[2])(int, int);
         | 
| 37 | 
            -
              funcp[0] = add; funcp[1] = sub;
         | 
| 38 | 
            -
              for(int i = 0; i < 2; i++) printf("%d¥n", funcp[i](a, b));
         | 
| 39 | 
            -
              
         | 
| 40 32 |  | 
| 33 | 
            +
              // ここに関数ポインタの配列を定義したい
         | 
| 34 | 
            +
             | 
| 41 35 | 
             
              int *scores = (int *) malloc(N*sizeof(int));
         | 
| 42 36 | 
             
              read_data(argv[3], scores, N);
         | 
| 43 37 |  | 
| 44 | 
            -
             
         | 
| 45 | 
            -
               | 
| 38 | 
            +
              // ここにinsert_sort関数の第3引数に比較関数へのポインタを指定したい
         | 
| 46 39 |  | 
| 47 40 | 
             
              write_result(argv[4], scores, N);
         | 
| 48 | 
            -
            }
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
            ```sort_array.hの中身
         | 
| 45 | 
            +
            ```ここに言語を入力
         | 
| 46 | 
            +
            int asc(void *p, void *q){ return *(int *)p - *(int *)q; }
         | 
| 47 | 
            +
            int desc(void *p, void *q){ return *(int *)q - *(int *)p; }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            void insert_sort(int *arr, int n, int (*cmp)(void*, void*)){
         | 
| 50 | 
            +
              int i, j, temp;
         | 
| 51 | 
            +
              for(i = 1; i < n; i++){
         | 
| 52 | 
            +
                temp = arr[i];
         | 
| 53 | 
            +
                for(j = i; j > 0; j--){
         | 
| 54 | 
            +
                  if(cmp(&arr[j-1], &temp) > 0) arr[j] = arr[j-1];
         | 
| 55 | 
            +
                  else break;
         | 
| 56 | 
            +
                }
         | 
| 57 | 
            +
                arr[j] = temp;
         | 
| 58 | 
            +
              }
         | 
| 59 | 
            +
            }
         | 
| 60 | 
            +
            ```
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 63 | 
            +
            ```
         | 
| 64 | 
            +
            ```
         | 
