Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 행렬에서 더하기 '+' 패턴으로 문자열 인쇄하기

<시간/>

문자열 str이 주어지면 행렬에서 주어진 문자열 str을 '+' 패턴으로 인쇄해야 합니다. 행렬에서 더하기 패턴을 형성하려면 행렬이 정방 행렬이어야 합니다. 정방행렬은 행과 열의 수가 같은 행렬입니다.

"Tutor"라는 문자열이 있는 것처럼 중앙에서 가로로 세로로 교차하는 문자열을 인쇄하고 주어진 그림과 같이 행렬의 나머지 요소를 "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;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -