Computer >> Máy Tính >  >> Lập trình >> C ++

In chuỗi ở dạng dấu cộng ‘+’ trong ma trận trong C ++

Cho một chuỗi str, chúng ta phải in chuỗi str đã cho theo mẫu dấu ‘+’ trong ma trận. Để tạo thành mẫu cộng trong một ma trận, ma trận phải là một ma trận vuông. Ma trận vuông là ma trận có cùng số hàng và số cột.

Giống như chúng ta có một chuỗi “Tutor”, nhiệm vụ của chúng ta là in chuỗi theo chiều ngang và chiều dọc giao nhau từ tâm và làm cho phần còn lại của ma trận là “x” như trong hình đã cho -

In chuỗi ở dạng dấu cộng ‘+’ trong ma trận trong C ++

Đầu vào

str[] = {“Point”}

Đầu ra

In chuỗi ở dạng dấu cộng ‘+’ trong ma trận trong C ++

Đầu vào

str[] = {“this”}

Đầu ra

Pattern not possible

Phương pháp được sử dụng dưới đây như sau để giải quyết vấn đề

  • Nhận thông tin đầu vào.

  • Kiểm tra xem đầu vào không phải là độ dài chẵn.

  • Ban đầu, đặt toàn bộ ma trận bằng “x”

  • Đặt chuỗi ở hàng giữa và cột giữa

  • In ma trận kết quả.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -