Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์สตริงแบบ Wave Pattern ใน C++

ภาพรวมปัญหา

ได้รับสตริงและจำนวนบรรทัด n ต้องพิมพ์สตริงในรูปแบบ Wave Pattern จำนวน n บรรทัด

ตัวอย่าง

Input: "Tutorial", n = 3
Output:
T       r
 U   o   i   s   t
  t       l

วิธีแก้ปัญหา

ใช้การจำลองการเคลื่อนที่ลง-ขึ้น (zigzag) บนกริด 2D วางตัวอักษรตามแถว แล้วพิมพ์แถวละบรรทัด

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

void printWavePattern(string s, int n) {
    if (n == 1) {
        cout << s;
        return;
    }
    int len = s.length();
    char a[len][len] = { };
    int row = 0;
    bool down;
    
    for (int i = 0; i < len; i++) {
        a[row][i] = s[i];
        if (row == n - 1)
            down = false;
        else if (row == 0)
            down = true;
        (down) ? (row++) : (row--);
    }
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < len; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    string str = "TutorialsPoint";
    int n = 4;
    cout << n << " Line wave pattern '" << str << "' is:\n";
    printWavePattern(str, n);
    return 0;
}

ผลลัพธ์ (Output)

4 Line wave pattern 'TutorialsPoint' is:
T       a       n
 u   i   l
  t       r       s   o
   o       o       P