โจทย์
เขียนโปรแกรมพิมพ์รูปหัวใจมีชื่ออยู่กลางด้วย for loop
วิธีแก้
ผู้ใช้ป้อนชื่อที่จะพิมพ์กลาง และจำนวนแถวของดาว
อัลกอริทึม
ขั้นตอน 1 - ประกาศตัวแปร
ขั้นตอน 2 - อ่านชื่อตอนรันไทม์
ขั้นตอน 3 - อ่านจำนวนแถว
ขั้นตอน 4 - หาความยาวชื่อ
ขั้นตอน 5 - พิมพ์ส่วนบนของหัวใจ
ขั้นตอน 6 - พิมพ์ส่วนล่างของหัวใจ
ขั้นตอน 7 - พิมพ์ชื่อบนหน้าจอ
ตัวอย่าง
โปรแกรม C พิมพ์ชื่อในรูปหัวใจด้วย for loop:
#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; }
ผลลัพธ์
Enter your name: Tutorials POint Enter no of rows: 10 ***** ***** ******* ******* ********* ********* **Tutorials POint* ***************** *************** ************* *********** ********* ******* ***** *** *