Rumah > pembangunan bahagian belakang > C++ > Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-08-28 19:45:03
ke hadapan
1466 orang telah melayarinya

Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah

Katakan kita bertanggungjawab membina sistem perpustakaan untuk memantau dan menyoal pelbagai operasi perpustakaan. Kini kami diminta untuk melaksanakan tiga arahan berbeza yang melaksanakan operasi berikut:

  • Menggunakan arahan 1, kita boleh merekodkan sisipan buku dengan halaman y pada rak buku x.

  • Menggunakan arahan 2, kita boleh mencetak nombor halaman buku ke-y di rak buku x.

  • Menggunakan arahan 3, kita boleh mencetak bilangan buku di rak buku x.

Arahan ini diberikan dalam bentuk tatasusunan 2D dengan format {command type, x, y}. Jika tiada nilai y, nilai lalai ialah 0. Kami mencetak hasil arahan yang diberikan.

Jadi, jika input adalah seperti berikut: Bilangan rak buku = 4, Bilangan pertanyaan = 4, Tatasusunan input = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0} , {3, 4 ,0}}; maka outputnya ialah

23
1
Salin selepas log masuk
Salin selepas log masuk
Command 1 inserts a book with 23 pages on shelf 3.
Command 2 inserts a book with 128 pages on shelf 4.
Command 3 prints the page number of book 0 on shelf 3.
Command 4 prints the number of books on shelf 3.
Salin selepas log masuk

Untuk menyelesaikan masalah ini, kita akan mengikuti langkah berikut:

  • b := Tatasusunan saiz s
  • p := Tatasusunan saiz baharu s
  • Inisialisasi i := 0, apabila i < s, kemas kini (naikkan i 1), lakukan operasi berikut:
    • b[i] := 0
    • p[i] := Tatasusunan baharu
  • Mulakan loopCount := 0, apabila loopCount < q, kemas kini (naikkan loopCount 1), lakukan operasi berikut −
    • qtype := q_array[loopCount, 0]
    • Jika qtype adalah sama dengan 1, maka −
      • := q_array[loopCount, 1]
      • y := q_array[loopCount, 2]
      • b[x] := b[x] + 1
      • p[x] := Lepaskan objek yang ditunjuk oleh p[x] ] dan kembalikan saiz
      • b [x]
      • p[x, b[x] - 1] = y
    • Jika tidak, apabila qtype adalah sama dengan 2, maka −
      • x := q_array[ loopCount, 1]
      • y := q_array[ loopCount, 2]
      • Cetak p[x, y]
    • Jika tidak
      • x := q_array[loopPrint, 1]
      . p[i] tidak kosong, maka −
    Lepaskan ingatan yang diperolehi oleh p[i]
    • Jika p tidak kosong, maka −
    Lepaskan ingatan yang diperolehi oleh p
      Mari kita lihat pelaksanaan berikut untuk memahami dengan lebih baik −
    • #include <stdio.h>
      #include <stdlib.h>
      
      void solve(int s, int q, int q_array[][3])
      {
            int* b;
            int** p;
         b = (int*)malloc(sizeof(int)*s);
         p = (int**)malloc(sizeof(int*)*s);
         for(int i = 0; i < s; i++)
         {
            b[i] = 0;
            p[i] = (int*)malloc(sizeof(int));
         }
         int loopCount;
         for(loopCount = 0; loopCount < q; loopCount++)
         {
            int qtype;
            qtype = q_array[loopCount][0];
            if (qtype == 1)
            {
               int x, y;
               x = q_array[loopCount][1];
                  y = q_array[loopCount][2];
               b[x] += 1;
               p[x] = realloc(p[x], b[x]*sizeof(int));
               p[x][b[x] - 1] = y;
            }
            else if (qtype == 2)
            {
               int x, y;
               x = q_array[loopCount][1];
                  y = q_array[loopCount][2];
               printf("%d</p><p>", p[x][y]);
            }
            else
            {
               int x;
               x = q_array[loopCount][1];
               printf("%d</p><p>", b[x]);
            }
         }
         if (b)
            free(b);
         for (int i = 0; i < s; i++)
            if (p[i])
               free(p[i]);
         if (p)
            free(p);
      }
      int main() {
         int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
            solve(4, 4, input_arr);
      }
      Salin selepas log masuk
    input
  • int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
    solve(4, 4, input_arr);
    Salin selepas log masuk
output

23
1
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Contoh program C yang menunjukkan penggunaan tatasusunan panjang berubah-ubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan