1

私はCにいくつかのコードを持っています:

#include <stdio.h>
#include <stdlib.h>

int multiply(int);

int main() {
    FILE *fp;
    int i, j, n, m,
        matrix[99][99],
        sum = 0,
        columnSums[99] = {0};

    fp = fopen("data.txt", "r");
    if(fp != NULL) {
        fscanf(fp, "%d", &n);
        fscanf(fp, "%d", &m);

        for(i = 0; i < n; i++) {
            for(j = 0; j < m; j++) {
                fscanf(fp, "%d", &matrix[i][j]);
            }
        }

        for(i = 0; i < m; i++) {
            for(j = 0; j < n; j++) {
                sum += multiply(matrix[j][i]);
            }
            columnSums[i] = sum;
            sum = 0;
        }
    } else {
        puts("Cannot read the file!");
    }
    puts("");
    system("pause");
    return 0;
}

int multiply(int thisNum) {
    return thisNum * thisNum *thisNum;
}

私のタスクでは、テキストファイルから多次元配列を読み取り、各列メンバーを3回乗算して各列を並べ替えます。配列を読んで各列の加算を見つけて、各列の加算を格納する他の配列に格納するのはそれほど難しくありませんでしたが(それが役立つことを願っています)、私はそれを整理することに固執しています。ヒントはありますか?:)

4

2 に答える 2

2

qsort() を使用できます。stdlib.h を含めることを忘れないでください

#define ARR_SIZE(a) (sizeof(a) / sizeof(*(a)))

int comp(const void* a, const void* b)
{
    return *(const int*)a - *(const int*)b;
}

...

for (i = 0; i < ARR_SIZE(matrix); i++)
{
    qsort(matrix[i], ARR_SIZE(matrix[i]), sizeof matrix[i][0], comp);
}
于 2013-02-18T19:34:29.047 に答える
1

stdlib.h で宣言されている qsort 関数を使用できます

于 2013-02-18T18:58:22.950 に答える