Vấn đề
Viết chương trình in mẫu hình trái tim với tên ở giữa bằng vòng lặp for.
Giải pháp
Người dùng phải nhập tên sẽ được in ở giữa cùng với số hàng mà các dấu sao phải được in.
Thuật toán
Tham khảo thuật toán đưa ra bên dưới để in tên trong hình trái tim bằng cách sử dụng vòng lặp for.
Bước 1 - Khai báo các biến.
Bước 2 - Đọc tên trong thời gian chạy sẽ được in ở giữa.
Bước 3 - Đọc số hàng.
Bước 4 - Tìm độ dài của tên.
Bước 5 - In phần trên của trái tim.
Bước 6 - In phần dưới của trái tim.
Bước 7 - In tên trên màn hình.
Ví dụ
Sau đây là chương trình C để in tên trong hình trái tim bằng cách sử dụng vòng lặp for -
#include <stdio.h> #include <string.h> int main(){ int i, j, n; char name[50]; int len; printf("Enter your name: "); gets(name); printf("Enter no of rows: "); scanf("%d", &n); len = strlen(name); // Print upper part of the heart shape with stars for(i=n/2; i<=n; i+=2){ for(j=1; j<n-i; j+=2){ printf(" "); } for(j=1; j<=i; j++){ printf("*"); } for(j=1; j<=n-i; j++){ printf(" "); } for(j=1; j<=i; j++){ printf("*"); } printf("\n"); } // Prints lower triangular part with stars for(i=n; i>=1; i--){ for(j=i; j<n; j++){ printf(" "); } // Print the name on screen if(i == n){ for(j=1; j<=(n * 2-len)/2; j++){ printf("*"); } printf("%s", name); for(j=1; j<(n*2-len)/2; j++){ printf("*"); } }else{ for(j=1; j<=(i*2)-1; j++){ printf("*"); } } printf("\n"); } return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter your name: Tutorials POint Enter no of rows: 10 ***** ***** ******* ******* ********* ********* **Tutorials POint* ***************** *************** ************* *********** ********* ******* ***** *** *