私は次の宿題の質問に取り組んでいます:
1次元配列を使用して、ユーザーが入力した10個の数値を格納するプログラムを作成します。数字を入力すると、10個の数字を昇順または降順で並べ替えて印刷するための2つのオプションを備えたメニューが表示されます。
私はいくつかの不可解な問題に直面しています。
私のコードは以下に掲載されています。配列の要素に対するユーザー入力を受け入れることができました。整数配列を並べ替えるためのコードをここで見つけました:http ://www.java-samples.com/showtutorial.php?tutorialid = 1577
このチュートリアルのコードは問題なく機能しますが、配列を自分で初期化するのではなく、ユーザーが指定した要素のコードを配列に追加するとすぐに、セグメンテーション違反が発生します。プログラムの実行時にコアダンプエラーが発生します。ソートプログラミングにヒットするまで機能し、その後クラッシュします。gccでのコンパイル時にエラーは発生しません。
#include<stdio.h>
#include<stdbool.h>
main()
{
int temporaryStorage;
int counter;
int numArray[] = {0};
int i = 0;
bool sortExists = true;
for (i = 0; i < 10; ++i)
{
fprintf(stdout, "Enter element[%d]->", i);
fscanf(stdin, "%d", &numArray[i]);
}
printf("Array Before Sorting\n");
for(counter = 0; counter < 10; ++counter){
printf("%d ", numArray[counter]);
}
while (sortExists == true)
{
sortExists = false;
for (counter = 0; counter < 9; ++counter)
{
if (numArray[counter] > numArray[counter + 1])
{
temporaryStorage = numArray[counter];
numArray[counter] = numArray[counter + 1];
numArray[counter + 1] = temporaryStorage;
sortExists = true;
}
}
}
printf("\n\nArray After Sorting – Ascending Order\n");
for(counter = 0; counter < 10; ++counter){
printf("%d ", numArray[counter]);
}
}