Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

In chuỗi theo mẫu dấu cộng '+' trong ma trận trong C++


Cho chuỗi str. Nhiệm vụ: in chuỗi theo hình dấu '+' trong ma trận vuông. Ma trận vuông có số hàng = số cột = độ dài chuỗi (phải là số lẻ).

Yêu cầu

  • Chuỗi in ngang hàng giữa.
  • Chuỗi in dọc cột giữa.
  • Các vị trí còn lại in 'x'.
  • Độ dài chuỗi phải lẻ (để có tâm chính xác).

Ví dụ 1

Input – "Point" (5 ký tự)

Output

x x P x x
x x o x x
P o i n t
x x n x x
x x t x x

Ví dụ 2

Input – "this" (4 ký tự)

Output – "Pattern not possible" (độ dài chẵn)

Thuật toán

  1. Kiểm tra độ dài chuỗi lẻ. Nếu chẵn → báo lỗi.
  2. Tạo ma trận n×n, fill 'x'.
  3. mid = n/2.
  4. Gán hàng giữa: matrix[mid][j] = str[j].
  5. Gán cột giữa: matrix[i][mid] = str[i].
  6. In ma trận.

Ví dụ code

#include <iostream>
#include <vector>
#include <string>
using namespace std;

void printPlusPattern(const string& str) {
    int n = str.length();
    if (n % 2 == 0) {
        cout << "Pattern not possible (length must be odd)" << endl;
        return;
    }
    
    vector<vector<char>> mat(n, vector<char>(n, 'x'));
    int mid = n / 2;
    
    for (int i = 0; i < n; i++) {
        mat[i][mid] = str[i]; // Cột giữa
        mat[mid][i] = str[i]; // Hàng giữa
    }
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << mat[i][j] << ' ';
        }
        cout << endl;
    }
}

int main() {
    printPlusPattern("TUTOR");
    return 0;
}

Kết quả

x x T x x
x x U x x
T U T O R
x x O x x
x x R x x

Lưu ý: Code dùng vector> an toàn hơn mảng tĩnh. Xử lý Unicode cần wstring/wcout.