ให้สตริง str งานของเราคือพิมพ์รูปแบบกลับด้าน รูปแบบจะเพิ่มขึ้นในลำดับที่กลับกัน และเมื่อสตริงเสร็จสิ้นให้เติม '*' ในตำแหน่งที่เหลือ
เช่นเดียวกับที่เราป้อนสตริง "abcd" ตอนนี้ในบรรทัดแรกเราต้องพิมพ์ "a" จากนั้นในบรรทัดถัดไปเราต้องพิมพ์ "cb" จากนั้นในบรรทัดที่สามเราจะพิมพ์ "**d"
ตัวอย่าง
Input: str[] = { “abcd” } Output: a c b * * d
คำอธิบาย −
- ในบรรทัดแรกให้พิมพ์ 1 ตัวอักษร
- ในบรรทัดที่สองให้พิมพ์อักขระ 2 ตัวในลำดับที่กลับกัน
- ในบรรทัดที่สาม พิมพ์อักขระ 3 ตัวในลำดับที่กลับกัน หากสตริงน้อยกว่า 3 ให้พิมพ์อักขระและเติมช่องว่างด้วย *.
Input: str[] = {“tutorialspoint”} Output:
แนวทางที่ใช้ด้านล่างมีดังนี้ −
- เราจะสำรวจสตริงจาก i=0 และจะตรวจสอบว่า i
- จากนั้นเราจะหาตัวแปร k และตั้งค่า k เป็น ((i*(i+1))/2)-1
- เราจะตรวจสอบว่า ถ้า k>=n-1 จะพิมพ์ "* " มิฉะนั้นจะพิมพ์ค่าของสตริงในลำดับที่กลับกัน
อัลกอริทึม
Start In function int reverse_it(char str[], int n) Step 1-> Declare and Initialize i, j=0 , k=0 Step 2-> Loop For i=0 and i<n && k<(n-i)*2 and i++ Set k as ((i*(i+1))/2)-1 Loop For j=0 and j<i && k<(n-i)*2 and j++ If k >= n-1 then, Print "* " Else Print "%c ",str[k] Decrement k by 1 End loop Print new line End loop In Function int main(int argc, char const *argv[]) Step 1-> Declare and initialize string str[] Step 2-> Declare and Initialize size as sizeof(str)/sizeof(str[0]) Step 3-> Call function reverse_it(str, size); 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++) { //Assigning k k = ((i*(i+1))/2)-1; for(j=0; j<i && k<(n-i)*2; j++) { //will check if k is greater than the total number of characters //then we will print * for filling the extra characters if(k >= n-1) printf("* "); //print the string in reverse order else printf("%c ",str[k]); k--; } //for line break after reverse sequence printf("\n"); } return 0; } //Main Function int main(int argc, char const *argv[]) { char str[] = {"tutorialspoint"}; int size = sizeof(str)/sizeof(str[0]); reverse_it(str, size); return 0; }
ผลลัพธ์
หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -