ได้รับสตริง 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 ย้อนกลับและเติม *)