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

โปรแกรม C พิมพ์รูปแบบสตริงย้อนกลับ (Reversed String Pattern)

ได้รับสตริง str พิมพ์รูปแบบทวิ้งย้อนกลับ (Reversed Pattern) แบบเพิ่มทีละตัว และเติม * ถ้าตัวอักษรไม่พอ

เช่น "abcd":

บรรทัด 1: a
บรรทัด 2: c b
บรรทัด 3: * * d  (เพราะอักษรเหลือแค่ d เติม * 2 ตัว)

ตัวอย่าง

Input: "abcd"  Output: a / c b / * * d
Input: "tutorialspoint"  Output: (รูปแบบสามเหลี่ยมขนาดใหญ่)

แนวทาง

  • ลูป i = 0 ถึง n-1
  • k = (i*(i+1))/2 - 1 (index เริ่มต้นสำหรับบรรทัดนี้)
  • ลูป j = 0 ถึง i-1
  • ถ้า k >= n-1 พิมพ์ * มิฉะนั้นพิมพ์ str[k] แล้ว k--

อัลกอริทึม

Start
ฟังก์ชัน reverse_it(str[], n):
    for i = 0; i < n && k < (n-i)*2; i++:
        k = (i*(i+1))/2 - 1
        for j = 0; j < i && k < (n-i)*2; j++:
            if k >= n-1: print "* "
            else: print "%c ", str[k]; k--
        newline

main(): str="tutorialspoint" เรียก reverse_it
Stop

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

#include <stdio.h>

int reverse_it(char str[], int n) {
    int i, j = 0, k = 0;
    for (i = 0; i < n && k < (n - i) * 2; i++) {
        k = ((i * (i + 1)) / 2) - 1;
        for (j = 0; j < i && k < (n - i) * 2; j++) {
            if (k >= n - 1) printf("* ");
            else printf("%c ", str[k]);
            k--;
        }
        printf("\n");
    }
    return 0;
}

int main() {
    char str[] = "tutorialspoint";
    int size = sizeof(str) / sizeof(str[0]);
    reverse_it(str, size);
    return 0;
}

ผลลัพธ์

(แสดงรูปแบบสามเหลี่ยมจากสตริง tutorialspoint ย้อนกลับและเติม *)