Cho một chuỗi str, nhiệm vụ của chúng ta là in mẫu đảo ngược của nó. Mẫu sẽ tăng dần theo thứ tự đảo ngược và khi chuỗi hoàn thành, hãy điền dấu ‘*’ vào các vị trí còn lại.
Giống như chúng ta nhập một chuỗi “abcd”, bây giờ ở dòng đầu tiên chúng ta phải in “a”, sau đó ở dòng tiếp theo chúng ta phải in “cb” và sau đó ở dòng thứ ba chúng ta sẽ in “** d”.
Ví dụ
Input: str[] = { “abcd” } Output: a c b * * d
Giải thích -
- Trong dòng đầu tiên, hãy in 1 ký tự
- Ở dòng thứ hai, in 2 ký tự theo thứ tự ngược lại
- Ở dòng thứ ba In 3 ký tự theo thứ tự ngược lại, nếu chuỗi nhỏ hơn 3 thì in các ký tự và điền vào khoảng trống bằng *.
Input: str[] = {“tutorialspoint”} Output:
Phương pháp được sử dụng bên dưới như sau -
- Chúng tôi sẽ duyệt qua chuỗi từ i =0 và sẽ kiểm tra xem i
- Sau đó, chúng ta sẽ lấy một biến k và Đặt k là ((i * (i + 1)) / 2) -1
- Chúng tôi sẽ kiểm tra Nếu k> =n-1 thì In "*" còn không thì sẽ in giá trị của chuỗi theo thứ tự ngược lại
Thuật toán
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
Ví dụ
#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; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -