1

ちょっと頭が痛くなる質問があります。私がする必要があるのは、乱数をシャッフルした .txt ファイルを読み取り、それらを配列に保存し、(バブル ソートで) ソートされた画面に出力することです。最初の 2 つのフェーズは問題​​ないようです。問題は、スワップ機能や印刷行に何かが欠けているように見えることです。私が持っているコードは次のとおりです。

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


void swap(int A, int j, j+1)
{
    int original_A_i = A[j];
    A[j] = A[j+1];
    A[j+1] = original_A_i;
}

bool greater(double first, double second)
{
    return first > second;
}



int main()
{

    int totalNums = 0;
    double A[totalNums];
    FILE * fp;

    fp = fopen ("file.txt", "r");
    int i = 0;
    while(fscanf(fp, "%lf", &A[i]) != EOF) {
        i++; }

    totalNums = i;

     fclose(fp);


    for (int i = 0; i < totalNums - 1; i++) {
        for (int j = 0; j < totalNums - 1; j++) {
            if (greater(A[j], A[j + 1]))
                swap(A, j, j+1);
        }
    }

    printf("Ordem Ascendente:\n");

    for ( i = 0 ; i < totalNums ; i++ ) {
        printf("\n%lf", A[i]);
    }

    return 0;
}

コードをいじって得たエラーは、クラッシュまたは「0 0 0 0 0 0」の結果 (行で区切られています) です。注: 先生は、ポインターを使用せずにこれを作成してみてほしいと言っていますが、他の方法でうまくいかない場合は、低学年で使用できます。

PS: 簡単に言ってください。私はまだ学習中です。ここでの問題はおそらく非常に単純なものです:P

前もって感謝します

4

1 に答える 1