यहां हम एक दिलचस्प समस्या देखेंगे। इस समस्या में हम देखेंगे कि कैसे क्रिसमस ट्री को यादृच्छिक रूप से प्रिंट किया जाए। तो ट्री क्रिसमस ट्री लाइट्स की तरह झिलमिलाएगा।
क्रिसमस ट्री प्रिंट करने के लिए, हम विभिन्न आकारों के पिरामिड को एक के नीचे एक प्रिंट करेंगे। सजावटी पत्तियों के लिए दिए गए कैरेक्टर्स की सूची से एक यादृच्छिक कैरेक्टर प्रिंट किया जाता है। ऊंचाई और यादृच्छिकता समायोज्य है।
यहां एक ट्री उत्पन्न करने के बाद, पूरी स्क्रीन साफ हो जाती है, फिर फिर से उत्पन्न होती है, इसलिए यह झिलमिलाते ट्री जैसा दिखता है।
उदाहरण
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define REFRESH_RATE 40000
#define RANDOM_NESS 5 // उच्च मान कम यादृच्छिकता दर्शाता है
void clear_screen() {
system("@cls||clear");
}
void display_random_leaf() {
char type_of_leaves[5] = {'.', '*', '+', 'o', 'O'}; // ये पत्ती के प्रकार हैं
int temp = rand() % RANDOM_NESS;
if (temp == 1)
printf("%c ", type_of_leaves[rand() % 5]); // यदि temp 1 है तो अन्य पत्तियों का उपयोग करें
else
printf("%c ", type_of_leaves[1]); // अन्यथा * प्रिंट करें
}
void tree_triangle(int f, int n, int toth) {
int i, j, k = 2 * toth - 2;
for (i = 0; i < f - 1; i++)
k--;
for (i = f - 1; i < n; i++) { // i पंक्तियों की संख्या को इंगित करेगा
for (j = 0; j < k; j++) // स्पेस डालने के लिए उपयोग किया जाता है
printf(" ");
k = k - 1;
for (j = 0; j <= i; j++)
display_random_leaf();
printf("\n");
}
}
void display_tree(int h) {
int start = 1, end = 0, diff = 3;
while (end < h + 1) {
end = start + diff;
tree_triangle(start, end, h);
diff++;
start = end - 2;
}
}
void display_log(int n) { // ट्री का तना प्रिंट करें
int i, j, k = 2 * n - 4;
for (i = 1; i <= 6; i++) {
for (j = 0; j < k; j++)
printf(" ");
for (j = 1; j <= 6; j++)
printf("#");
printf("\n");
}
}
int main() {
srand(time(NULL));
int ht = 15;
while (1) {
clear_screen();
display_tree(ht);
display_log(ht);
usleep(REFRESH_RATE); // बदलने से पहले स्लीप उपयोग करें
}
}
आउटपुट
