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 -
Đầu vào
str[] = {“Point”}
Đầu ra
Đầ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 -