Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การพิมพ์สตริงในรูปแบบเครื่องหมายบวก '+' ในเมทริกซ์ใน C++


ให้สตริง str เราต้องพิมพ์สตริงที่กำหนดในรูปแบบ '+' ในเมทริกซ์ ในการสร้างรูปแบบบวกในเมทริกซ์ เมทริกซ์ต้องเป็นเมทริกซ์กำลังสอง เมทริกซ์สี่เหลี่ยมจัตุรัสคือเมทริกซ์ที่มีจำนวนแถวและคอลัมน์เท่ากัน

เช่นเดียวกับที่เรามีสตริง "ติวเตอร์" หน้าที่ของเราคือพิมพ์สตริงในแนวนอนและแนวตั้งที่ตัดกันจากจุดศูนย์กลาง และทำให้องค์ประกอบที่เหลือของเมทริกซ์เป็น "x" เหมือนในรูปที่กำหนด -

การพิมพ์สตริงในรูปแบบเครื่องหมายบวก  +  ในเมทริกซ์ใน C++

ป้อนข้อมูล

str[] = {“Point”}

ผลผลิต

การพิมพ์สตริงในรูปแบบเครื่องหมายบวก  +  ในเมทริกซ์ใน C++

ป้อนข้อมูล

str[] = {“this”}

ผลผลิต

Pattern not possible

แนวทางที่ใช้ด้านล่างมีดังต่อไปนี้ในการแก้ปัญหา

  • รับอินพุต

  • ตรวจสอบว่าอินพุตไม่ยาวเท่ากัน

  • เริ่มแรกตั้งค่าเมทริกซ์ทั้งหมดด้วย “x”

  • ตั้งค่าสตริงในแถวกลางและคอลัมน์กลาง

  • พิมพ์เมทริกซ์ผลลัพธ์

อัลกอริทึม

Start
In function int stringcross(char str[], int n)
   Step 1→ If n % 2 == 0 then,
      Step 2→ Printf "Pattern not possible”
   Step 3→ Else
      Declare a str2[max][max]
      Declare m and set as n / 2
      For i = 0 and i < n and i++
         For j = 0 and j < n and j++
            Set str2[i][j] as 'x'
      For i = 0 and i < n and i++
         Set str2[i][m] as str[i]
      For i = 0 and i < n and i++
         Set str2[m][i] as str[i]
      For i = 0 and i < n and i++
         For j = 0 and j < n and j++
         Print str2[i][j]
      Print newline
In Function int main()
   Step 1→ Declare and Initialize str[] as "TUTOR"
   Step 2→ Declare and Initialize n with the size of the string
   Step 3→ Call stringcross(str, n-1)
Stop

ตัวอย่าง

#include <stdio.h>
#define max 100
int stringcross(char str[], int n){
   if (n % 2 == 0){
      //odd length string is only possible
      printf("Pattern not possible\n");
   }
   else {
      //decalaring a 2-d character array
      char str2[max][max];
      int m = n / 2;
      //Initially setting x for all elements
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < n; j++) {
            str2[i][j] = 'x';
         }
      }
      //Placing the string in a manner
      //a cross is formed.
      for (int i = 0; i < n; i++){
         //for middle columns
         str2[i][m] = str[i];
      }
      for (int i = 0; i < n; i++){
         //for middle row
         str2[m][i] = str[i];
      }
      //printing
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < n; j++) {
            printf("%c ",str2[i][j]);
         }
         printf("\n");
      }
   }
   return 0;
}
int main(){
   char str[] = {"TUTOR"};
   int n = sizeof(str)/sizeof(str[0]);
   stringcross(str, n-1);
   return 0;
}

ผลลัพธ์

หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -