문자열 str이 주어지면 행렬에서 주어진 문자열 str을 '+' 패턴으로 인쇄해야 합니다. 행렬에서 더하기 패턴을 형성하려면 행렬이 정방 행렬이어야 합니다. 정방행렬은 행과 열의 수가 같은 행렬입니다.
"Tutor"라는 문자열이 있는 것처럼 중앙에서 가로로 세로로 교차하는 문자열을 인쇄하고 주어진 그림과 같이 행렬의 나머지 요소를 "x"로 만드는 것입니다. -
입력
str[] = {“Point”}
출력
입력
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; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -