Rumah > Artikel > pembangunan bahagian belakang > Program C++ untuk mencetak corak lingkaran nombor
Memaparkan nombor dalam format yang berbeza ialah salah satu masalah pengekodan asas untuk pembelajaran.
Konsep pengekodan yang berbeza seperti pernyataan bersyarat dan pernyataan gelung. mempunyai Dalam program yang berbeza kami menggunakan aksara khas seperti asterisk untuk mencetak segi tiga atau segi empat sama. Dalam artikel ini, kami akan mencetak nombor dalam bentuk lingkaran, sama seperti petak dalam C++.Kami mengambil bilangan baris n sebagai input dan bermula dari sudut kiri atas Bergerak ke kanan, kemudian ke bawah, kemudian ke kiri, kemudian ke atas, kemudian ke kanan lagi, dan seterusnya dll.
1 2 3 4 5 6 7 24 25 26 27 28 29 8 23 40 41 42 43 30 9 22 39 48 49 44 31 10 21 38 47 46 45 32 11 20 37 36 35 34 33 12 19 18 17 16 15 14 13
Untuk menyelesaikan masalah ini, kami akan menggunakan matriks 2D bersaiz n x n, dalam kes ini, kami mengambil n = 7. Kemudian isi matriks dalam lingkaran bermula dari sudut kiri atas. cetakan akhir keseluruhan matriks. Di sini kami mencetak dari 1 hingga 7 pada baris pertama dan kemudian prosesnya mengubahnya arah, bergerak ke bawah ke 13, kemudian ke kiri ke 19, dan akhirnya Naik sehingga 24, kemudian kanan, dan seterusnya. Mari lihat algoritma yang lebih baik faham.
#include <iostream> using namespace std; void solve( int s ){ int mat[ s ][ s ] = {0}; int i, j, m, n, p, q, num; num = 1; // start count from 1 i = 0; j = 0; m = 0; // row index lower limit n = s - 1; // row index upper limit p = 0; // column index lower limit q = s - 1; // column index upper limit while ( num <= s * s ) { // place numbers horizontally left to right for ( j = p; j <= q; j++ ) { mat[ m ][ j ] = num; num = num + 1; } m = m + 1; // fill vertically from top to bottom for ( i = m; i <= n; i++ ) { mat[ i ][ q ] = num; num = num + 1; } q = q - 1; // fill horizontally from right to left for ( j = q; j >= p; j-- ) { mat[ n ][ j ] = num; num = num + 1; } n = n - 1; // fill vertically from bottom to top for ( i = n; i >= m; i-- ) { mat[ i ][ p ] = num; num++; } p = p + 1; } // display the mat for ( i = 0; i < s; i++ ) { for ( j = 0; j < s; j++ ) { printf("%d\t", mat[i][j]); } printf("\n"); } } int main(){ int n = 5; cout << "Spiral numbers for " << n << " lines." << endl; solve( n ); }
Spiral numbers for 5 lines. 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Spiral numbers for 12 lines. 1 2 3 4 5 6 7 8 9 10 11 12 44 45 46 47 48 49 50 51 52 53 54 13 43 80 81 82 83 84 85 86 87 88 55 14 42 79 108 109 110 111 112 113 114 89 56 15 41 78 107 128 129 130 131 132 115 90 57 16 40 77 106 127 140 141 142 133 116 91 58 17 39 76 105 126 139 144 143 134 117 92 59 18 38 75 104 125 138 137 136 135 118 93 60 19 37 74 103 124 123 122 121 120 119 94 61 20 36 73 102 101 100 99 98 97 96 95 62 21 35 72 71 70 69 68 67 66 65 64 63 22 34 33 32 31 30 29 28 27 26 25 24 23
Memaparkan corak nombor adalah masalah yang agak biasa apabila mempelajari pengaturcaraan bahasa. Dalam artikel ini kami belajar cara memaparkan nombor dalam segi empat sama di mana unsur itu terletak Cetak dalam bentuk lingkaran dalam C++, bermula dari sudut kiri atas dan bergerak ke bawah Pada penghujung lajur n, kita bergerak ke bawah, kemudian pada penghujung baris n, kita bergerak ke kiri, kemudian Selepas mencapai baris pertama, naik sehingga baris ke-2nd dan ulangi proses ini berulang kali sehingga... Lengkapkan seluruh petak. Tidak seperti masalah corak berangka lain, ia memerlukan tatasusunan 2D Selesaikan masalah ini dengan berkesan.
Atas ialah kandungan terperinci Program C++ untuk mencetak corak lingkaran nombor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!