Die Anzeige von Zahlen in verschiedenen Formaten ist eines der grundlegenden Codierungsprobleme beim Lernen.
Verschiedene Codierungskonzepte wie bedingte Anweisungen und Schleifenanweisungen. haben In verschiedenen Programmen verwenden wir Sonderzeichen wie Sternchen zum Ausdrucken von Dreiecken oder Quadrat. In diesem Artikel drucken wir Zahlen in Spiralform, genau wie Quadrate in C++.Wir nehmen die Anzahl der Zeilen n als Eingabe und beginnen in der oberen linken Ecke Bewegen Sie sich nach rechts, dann nach unten, dann nach links, dann nach oben, dann wieder nach rechts und so weiter usw.
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
Um dieses Problem zu lösen, verwenden wir eine 2D-Matrix der Größe n x n, in diesem Fall nehmen wir n = 7. Füllen Sie dann die Matrix spiralförmig aus, beginnend in der oberen linken Ecke. endgültiger Ausdruck die gesamte Matrix. Hier drucken wir in der ersten Zeile von 1 bis 7 und dann ändert der Prozess seine Werte Richtung, bewegen Sie sich nach unten zu 13, dann nach links zu 19 und schließlich Gehen Sie nach oben bis 24, dann nach rechts und so weiter. Schauen wir uns einen besseren Algorithmus an verstehen.
#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
Die Anzeige von Zahlenmustern ist ein ziemlich häufiges Problem beim Erlernen des Programmierens Sprache. In diesem Artikel haben wir gelernt, wie man Zahlen in dem Quadrat anzeigt, in dem sich das Element befindet Drucken Sie in C++ spiralförmig, beginnend in der oberen linken Ecke und nach unten Am Ende der Spalte n bewegen wir uns nach unten, am Ende der Zeile n bewegen wir uns dann nach links Nachdem Sie die erste Reihe erreicht haben, gehen Sie bis zur zweiten Reihe vor und wiederholen Sie diesen Vorgang immer wieder, bis ... Vervollständigen Sie das gesamte Quadrat. Im Gegensatz zu anderen numerischen Musterproblemen ist ein 2D-Array erforderlich Lösen Sie dieses Problem effektiv.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Drucken spiralförmiger Zahlenmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!