Membalikkan Isi dalam Larik

Saya memiliki larik angka yang saya coba balikkan. Saya yakin fungsi dalam kode saya sudah benar, tetapi saya tidak bisa mendapatkan output yang tepat.

Keluarannya berbunyi: 10 9 8 7 6. Mengapa saya tidak bisa mendapatkan separuh angka lainnya? Ketika saya menghapus "/2" dari hitungan, outputnya terbaca: 10 9 8 7 6 6 7 8 9 10

void reverse(int [], int);

int main ()
{
   const int SIZE = 10;
   int arr [SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

   reverse(arr, SIZE);
   return 0;
}
void reverse(int arr[], int count)
{
   int temp;
   for (int i = 0; i < count/2; ++i)
   {
      arr[i] = temp;
      temp = arr[count-i-1];
      arr[count-i-1] = arr[i];
      arr[i] = temp;

      cout << temp << " ";
   }
}

Garis

arr[i] = temp;

adalah salah. (Pada iterasi pertama dari perulangan Anda, baris ini menetapkan arr[i] ke nilai yang tidak terdefinisi; iterasi selanjutnya menetapkannya ke nilai yang salah). Jika Anda menghapus baris ini, larik Anda seharusnya dibalik dengan benar.

Setelah itu, Anda harus memindahkan kode yang mencetak larik terbalik ke dalam perulangan baru yang mengiterasi seluruh daftar. Kode Anda saat ini hanya mencetak elemen count/2 pertama.


int temp, i;
for (i = 0; i < count/2; ++i) {
    temp = arr[count-i-1];
    arr[count-i-1] = arr[i];
    arr[i] = temp;
}
for (i = 0; i < count; ++i) {
    cout 
Komentar (0)

Kedua jawaban terlihat benar bagi saya.

  1. arr[i] = temp; yang pertama harus dihilangkan

  2. Anda harus melakukan perulangan kedua untuk mencetak semua elemen, bukan hanya setengah larik. Perulangan yang melakukan kebalikannya tidak perlu mencetaknya.

Komentar (0)

Anda tidak mencetak larik, Anda mencetak nilai temp - yang hanya setengah dari larik...

Komentar (0)