लाइनों की संख्या दिए जाने पर, प्रोग्राम को न्यूनतम जटिलता के साथ सममित डबल ट्रायंगल पैटर्न प्रिंट करना होगा।
उदाहरण
इनपुट: 5
आउटपुट:
X X
O X O X
X O X O X
X O X O
X X
पूरी समस्या में 3 अलग-अलग भाग हैं:
- विषम n के लिए n-1 लाइनों या सम n के लिए n-2 लाइनों के साथ ऊपरी आधा प्रिंट करना।
- मध्य लाइनें प्रिंट करना, विषम n के लिए 1 लाइन या सम n के लिए 3 लाइनें।
- निचला आधा प्रिंट करना, विषम n के लिए n-1 लाइनों या सम n के लिए n-2 लाइनों के साथ।
एल्गोरिदम
शुरुआत चरण 1: यदि (n % 2 == 0) तो x = x - 1; p को n-1 स्पेस के लिए परिभाषित करें; s = 1 कैरेक्टर के लिए परिभाषित करें चरण 2: i=1 से (x-1)/2 तक i++ लूप j=1 से p तक j++ लूप: स्पेस प्रिंट करें यदि i % 2 != 0 तो Printx(s) अन्यथा Printo(s) नई लाइन प्रिंट करें p++ करें j=1 से p तक j++ लूप: स्पेस प्रिंट करें यदि i % 2 != 0 तो Printx(s) अन्यथा Printo(s) नई लाइन प्रिंट करें p-- करें, s++ करें लूप समाप्त चरण 3: यदि n % 2 == 0 तो अतिरिक्त ऊपरी मध्य चरण 4: मध्य लाइन प्रिंट करें चरण 5: यदि n % 2 == 0 तो अतिरिक्त निचला मध्य चरण 6: p = 1 सेट करें चरण 7: यदि n % 2 == 0 तो x--, p = 2 चरण 8: q = x / 2 सेट करें चरण 9: i=1 से x तक i++ लूप: स्पेस प्रिंट, Printx(q), यदि i%2==0 तो q--, नई लाइन, p++ चरण 10: नई लाइन प्रिंट करें चरण 11: Printx(n) - x से शुरू होने वाला वैकल्पिक x o चरण 12: Printo(n) - o से शुरू होने वाला वैकल्पिक x o समाप्त
उदाहरण
#include <stdio.h>
// x से शुरू होने वाला वैकल्पिक x o प्रिंट करना
int printx(int n) {
int i;
for ( i = 1; i <= n; i++) {
if (i % 2 != 0) printf("x ");
else printf("o ");
}
return 0;
}
// o से शुरू होने वाला वैकल्पिक x o प्रिंट करना
int printo(int n) {
int i;
for ( i = 1; i <= n; i++) {
if (i % 2 != 0) printf("o ");
else printf("x ");
}
return 0;
}
// n के लिए पैटर्न प्रिंट करना
int printpattern(int n) {
// ऊपरी आधा
int x = n;
int i, j;
if (n % 2 == 0) x = x - 1;
int p = n - 1;
int s = 1;
for ( i = 1; i <= (x - 1) / 2; i++) {
for ( j = 1; j <= p; j++) printf(" ");
if (i % 2 != 0) printx(s); else printo(s);
printf("\n");
p++;
for ( j = 1; j <= p; j++) printf(" ");
if (i % 2 != 0) printx(s); else printo(s);
printf("\n");
p--; s++;
}
// सम के लिए अतिरिक्त ऊपरी मध्य
if (n % 2 == 0) {
for ( i = 1; i <= p; i++) printf(" ");
if (n % 4 != 0) printx(n / 2); else printo(n / 2);
printf("\n");
}
// मध्य लाइन
if (n % 2 != 0) printx(n);
else {
if (n % 4 != 0) { printx(n / 2); printx(n / 2); }
else { printx(n / 2); printo(n / 2); }
}
printf("\n");
// सम के लिए अतिरिक्त निचला मध्य
if (n % 2 == 0) { printf(" "); printx(n / 2); printf("\n"); }
// निचला आधा
p = 1;
if (n % 2 == 0) { x--; p = 2; }
int q = x / 2;
for ( i = 1; i <= x; i++) {
for (int j = 1; j <= p; j++) printf(" ");
printx(q);
if (i % 2 == 0) q--;
printf("\n");
p++;
}
printf("\n");
return 1;
}
int main() {
int n = 5;
printpattern(n);
return 0;
}
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा।
X X
O X O X
X O X O X
X O X O
X X