ปัญหา
เขียนโปรแกรมพิมพ์รูปหัวใจโดยให้ชื่ออยู่ตรงกลางโดยใช้ for loop
วิธีแก้ปัญหา
ผู้ใช้ต้องป้อนชื่อที่ควรพิมพ์ตรงกลางพร้อมกับจำนวนแถวที่จะพิมพ์ดาว
อัลกอริทึม
อ้างอิงอัลกอริธึมที่ให้ไว้ด้านล่างเพื่อพิมพ์ชื่อในรูปแบบหัวใจโดยใช้ 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* ***************** *************** ************* *********** ********* ******* ***** *** *