Saya menjalankan kode ini dan meminta masukan pengguna dan kemudian hang ketika mulai memasukkan semua angka itu ke posisi array, saya melakukan beberapa tes di sini untuk membantu saya mencari tahu apa yang menyebabkan hang. Saya tidak dapat memahaminya. Entah itu sesuatu yang sangat mudah atau akan menjadi sesuatu dengan kompiler saya (Kode::Blok).
// Chapter 9 Programming Project #1
#include <stdio.h>
#define N 10
void selection_sort(int n, int a[]);
int main(void)
{
int i, a[N];
printf("Enter a series of integers: ");
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
printf("Scanf Test #%d and %d\n", i, a[i]);
}
printf("Scanf Test\n");
selection_sort(N - 1, a);
// iterate through array
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void selection_sort(int n, int a[n])
{
// Search for the highest value
// Place that value at the end
// Call the function with the end of the array removed
// Create a way for it to break the cycle
int i, temp, high = n;
printf("Function Called\n");
for (i = 0; i < n; i++) {
printf("Test: %d", i);
if (a[i] > a[high]) {
temp = a[high];
a[high] = a[i];
a[i] = temp;
printf("Test Pass: %d\n", i);
if (n - 1 > 1)
selection_sort(n - 1, a);
}
}
}
Catatan::Program ini mencetak Scanf Test #0 and 1
berulang-ulang hingga nomor terakhir ditetapkan ke posisinya di a[i]
....di mana #0 and 1
, 1 akan menjadi nomor pertama yang dimasukkan pengguna
Edit: Untuk menghilangkan kebingungan, jika pengguna hanya memasukkan 1 angka menjadi "1", maka program akan menetapkan nilai tersebut dan/atau semua nilai lain yang dimasukkan dan ini dapat diverifikasi dengan "Scanf Test" yang saya masukkan, yang akan cetak posisi dalam array diikuti dengan nomor yang ditetapkan padanya. Setelah semua nilai telah ditetapkan ke array, secara teori array harus menjalankan pengujian berikutnya yang berada tepat di bawah loop for. Soalnya tidak, program malah hang setelah mencetak posisi dan nomor terakhir yang ditugaskan....
Program ini tidak melakukan apa pun kecuali hanya duduk di sana, satu orang di bawah menyatakan dia menjalankan kode ini dan berfungsi dengan baik...yang membuat saya percaya ini adalah masalah kompilasi di IDU saya (Kode::Blok)
if (n - 1 > 1)
diubah menjadiif (n - 1 >= 1)
? - person Mohit Jain   schedule 16.04.2014