#include <stdio.h>
#include <string.h>
#define STUDENT_COUNT 5
// โครงสร้างนักเรียน
typedef struct {
char name[100];
int age;
int physicsScore;
int mathScore;
float physicsGPA;
float mathGPA;
} Student;
// ฟังก์ชันให้เกรด GPA แบบไทย
float calculateThaiGPA(int score) {
if (score >= 80) return 4.0;
else if (score >= 75) return 3.5;
else if (score >= 70) return 3.0;
else if (score >= 65) return 2.5;
else if (score >= 60) return 2.0;
else if (score >= 55) return 1.5;
else if (score >= 50) return 1.0;
else return 0.0;
}
// ฟังก์ชันตรวจสอบคะแนน
int isValidScore(int score) {
return (score >= 0 && score <= 100);
}
int main() {
Student students[STUDENT_COUNT];
for (int i = 0; i < STUDENT_COUNT; i++) {
printf("กรอกข้อมูลนักเรียนคนที่ %d\n", i
+ 1);
getchar(); // รับ newline ค้าง
fgets(students
[i
].name
, sizeof(students
[i
].name
), stdin
); students
[i
].name
[strcspn(students
[i
].name
, "\n")] = 0; // ลบ newline
scanf("%d", &students[i].age);
// รับคะแนนฟิสิกส์
do {
printf("คะแนนรวมฟิสิกส์ (เต็ม 100): "); scanf("%d", &students[i].physicsScore);
if (!isValidScore(students[i].physicsScore)) {
printf("❌ คะแนนไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 100\n"); }
} while (!isValidScore(students[i].physicsScore));
// รับคะแนนคณิตศาสตร์
do {
printf("คะแนนรวมคณิตศาสตร์ (เต็ม 100): "); scanf("%d", &students[i].mathScore);
if (!isValidScore(students[i].mathScore)) {
printf("❌ คะแนนไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 100\n"); }
} while (!isValidScore(students[i].mathScore));
// คำนวณเกรด
students[i].physicsGPA = calculateThaiGPA(students[i].physicsScore);
students[i].mathGPA = calculateThaiGPA(students[i].mathScore);
}
// แสดงผล
printf("\n📚 รายงานผลนักเรียนทั้งหมด:\n"); for (int i = 0; i < STUDENT_COUNT; i++) {
printf("\nนักเรียนคนที่ %d\n", i
+ 1); printf("ชื่อ: %s\n", students
[i
].name
); printf("อายุ: %d ปี\n", students
[i
].age
); printf("คะแนนฟิสิกส์: %d | เกรด: %.1f\n", students
[i
].physicsScore
, students
[i
].physicsGPA
); printf("คะแนนคณิตศาสตร์: %d | เกรด: %.1f\n", students
[i
].mathScore
, students
[i
].mathGPA
); printf("----------------------------------\n"); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgU1RVREVOVF9DT1VOVCA1CgovLyDguYLguITguKPguIfguKrguKPguYnguLLguIfguJnguLHguIHguYDguKPguLXguKLguJkKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciBuYW1lWzEwMF07CiAgICBpbnQgYWdlOwoKICAgIGludCBwaHlzaWNzU2NvcmU7CiAgICBpbnQgbWF0aFNjb3JlOwogICAgZmxvYXQgcGh5c2ljc0dQQTsKICAgIGZsb2F0IG1hdGhHUEE7Cn0gU3R1ZGVudDsKCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC5g+C4q+C5ieC5gOC4geC4o+C4lCBHUEEg4LmB4Lia4Lia4LmE4LiX4LiiCmZsb2F0IGNhbGN1bGF0ZVRoYWlHUEEoaW50IHNjb3JlKSB7CiAgICBpZiAoc2NvcmUgPj0gODApIHJldHVybiA0LjA7CiAgICBlbHNlIGlmIChzY29yZSA+PSA3NSkgcmV0dXJuIDMuNTsKICAgIGVsc2UgaWYgKHNjb3JlID49IDcwKSByZXR1cm4gMy4wOwogICAgZWxzZSBpZiAoc2NvcmUgPj0gNjUpIHJldHVybiAyLjU7CiAgICBlbHNlIGlmIChzY29yZSA+PSA2MCkgcmV0dXJuIDIuMDsKICAgIGVsc2UgaWYgKHNjb3JlID49IDU1KSByZXR1cm4gMS41OwogICAgZWxzZSBpZiAoc2NvcmUgPj0gNTApIHJldHVybiAxLjA7CiAgICBlbHNlIHJldHVybiAwLjA7Cn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4leC4o+C4p+C4iOC4quC4reC4muC4hOC4sOC5geC4meC4mQppbnQgaXNWYWxpZFNjb3JlKGludCBzY29yZSkgewogICAgcmV0dXJuIChzY29yZSA+PSAwICYmIHNjb3JlIDw9IDEwMCk7Cn0KCmludCBtYWluKCkgewogICAgU3R1ZGVudCBzdHVkZW50c1tTVFVERU5UX0NPVU5UXTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IFNUVURFTlRfQ09VTlQ7IGkrKykgewogICAgICAgIHByaW50Zigi4LiB4Lij4Lit4LiB4LiC4LmJ4Lit4Lih4Li54Lil4LiZ4Lix4LiB4LmA4Lij4Li14Lii4LiZ4LiE4LiZ4LiX4Li14LmIICVkXG4iLCBpICsgMSk7CgogICAgICAgIHByaW50Zigi4LiK4Li34LmI4LitOiAiKTsKICAgICAgICBnZXRjaGFyKCk7IC8vIOC4o+C4seC4miBuZXdsaW5lIOC4hOC5ieC4suC4hwogICAgICAgIGZnZXRzKHN0dWRlbnRzW2ldLm5hbWUsIHNpemVvZihzdHVkZW50c1tpXS5uYW1lKSwgc3RkaW4pOwogICAgICAgIHN0dWRlbnRzW2ldLm5hbWVbc3RyY3NwbihzdHVkZW50c1tpXS5uYW1lLCAiXG4iKV0gPSAwOyAvLyDguKXguJogbmV3bGluZQoKICAgICAgICBwcmludGYoIuC4reC4suC4ouC4uDogIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnN0dWRlbnRzW2ldLmFnZSk7CgogICAgICAgIC8vIOC4o+C4seC4muC4hOC4sOC5geC4meC4meC4n+C4tOC4quC4tOC4geC4quC5jAogICAgICAgIGRvIHsKICAgICAgICAgICAgcHJpbnRmKCLguITguLDguYHguJnguJnguKPguKfguKHguJ/guLTguKrguLTguIHguKrguYwgKOC5gOC4leC5h+C4oSAxMDApOiAiKTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwgJnN0dWRlbnRzW2ldLnBoeXNpY3NTY29yZSk7CgogICAgICAgICAgICBpZiAoIWlzVmFsaWRTY29yZShzdHVkZW50c1tpXS5waHlzaWNzU2NvcmUpKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIuKdjCDguITguLDguYHguJnguJnguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcg4LiV4LmJ4Lit4LiH4Lit4Lii4Li54LmI4Lij4Liw4Lir4Lin4LmI4Liy4LiHIDAg4LiW4Li24LiHIDEwMFxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSB3aGlsZSAoIWlzVmFsaWRTY29yZShzdHVkZW50c1tpXS5waHlzaWNzU2NvcmUpKTsKCiAgICAgICAgLy8g4Lij4Lix4Lia4LiE4Liw4LmB4LiZ4LiZ4LiE4LiT4Li04LiV4Lio4Liy4Liq4LiV4Lij4LmMCiAgICAgICAgZG8gewogICAgICAgICAgICBwcmludGYoIuC4hOC4sOC5geC4meC4meC4o+C4p+C4oeC4hOC4k+C4tOC4leC4qOC4suC4quC4leC4o+C5jCAo4LmA4LiV4LmH4LihIDEwMCk6ICIpOwogICAgICAgICAgICBzY2FuZigiJWQiLCAmc3R1ZGVudHNbaV0ubWF0aFNjb3JlKTsKCiAgICAgICAgICAgIGlmICghaXNWYWxpZFNjb3JlKHN0dWRlbnRzW2ldLm1hdGhTY29yZSkpIHsKICAgICAgICAgICAgICAgIHByaW50Zigi4p2MIOC4hOC4sOC5geC4meC4meC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguJXguYnguK3guIfguK3guKLguLnguYjguKPguLDguKvguKfguYjguLLguIcgMCDguJbguLbguIcgMTAwXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICB9IHdoaWxlICghaXNWYWxpZFNjb3JlKHN0dWRlbnRzW2ldLm1hdGhTY29yZSkpOwoKICAgICAgICAvLyDguITguLPguJnguKfguJPguYDguIHguKPguJQKICAgICAgICBzdHVkZW50c1tpXS5waHlzaWNzR1BBID0gY2FsY3VsYXRlVGhhaUdQQShzdHVkZW50c1tpXS5waHlzaWNzU2NvcmUpOwogICAgICAgIHN0dWRlbnRzW2ldLm1hdGhHUEEgPSBjYWxjdWxhdGVUaGFpR1BBKHN0dWRlbnRzW2ldLm1hdGhTY29yZSk7CgogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KCiAgICAvLyDguYHguKrguJTguIfguJzguKUKICAgIHByaW50ZigiXG7wn5OaIOC4o+C4suC4ouC4h+C4suC4meC4nOC4peC4meC4seC4geC5gOC4o+C4teC4ouC4meC4l+C4seC5ieC4h+C4q+C4oeC4lDpcbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTVFVERU5UX0NPVU5UOyBpKyspIHsKICAgICAgICBwcmludGYoIlxu4LiZ4Lix4LiB4LmA4Lij4Li14Lii4LiZ4LiE4LiZ4LiX4Li14LmIICVkXG4iLCBpICsgMSk7CiAgICAgICAgcHJpbnRmKCLguIrguLfguYjguK06ICVzXG4iLCBzdHVkZW50c1tpXS5uYW1lKTsKICAgICAgICBwcmludGYoIuC4reC4suC4ouC4uDogJWQg4Lib4Li1XG4iLCBzdHVkZW50c1tpXS5hZ2UpOwogICAgICAgIHByaW50Zigi4LiE4Liw4LmB4LiZ4LiZ4Lif4Li04Liq4Li04LiB4Liq4LmMOiAlZCB8IOC5gOC4geC4o+C4lDogJS4xZlxuIiwgc3R1ZGVudHNbaV0ucGh5c2ljc1Njb3JlLCBzdHVkZW50c1tpXS5waHlzaWNzR1BBKTsKICAgICAgICBwcmludGYoIuC4hOC4sOC5geC4meC4meC4hOC4k+C4tOC4leC4qOC4suC4quC4leC4o+C5jDogJWQgfCDguYDguIHguKPguJQ6ICUuMWZcbiIsIHN0dWRlbnRzW2ldLm1hdGhTY29yZSwgc3R1ZGVudHNbaV0ubWF0aEdQQSk7CiAgICAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoK
#include <stdio.h>
#include <string.h>
#define STUDENT_COUNT 5
// โครงสร้างนักเรียน
typedef struct {
char name[100];
int age;
int physicsScore;
int mathScore;
float physicsGPA;
float mathGPA;
} Student;
// ฟังก์ชันให้เกรด GPA แบบไทย
float calculateThaiGPA(int score) {
if (score >= 80) return 4.0;
else if (score >= 75) return 3.5;
else if (score >= 70) return 3.0;
else if (score >= 65) return 2.5;
else if (score >= 60) return 2.0;
else if (score >= 55) return 1.5;
else if (score >= 50) return 1.0;
else return 0.0;
}
// ฟังก์ชันตรวจสอบคะแนน
int isValidScore(int score) {
return (score >= 0 && score <= 100);
}
int main() {
Student students[STUDENT_COUNT];
for (int i = 0; i < STUDENT_COUNT; i++) {
printf("กรอกข้อมูลนักเรียนคนที่ %d\n", i + 1);
printf("ชื่อ: ");
getchar(); // รับ newline ค้าง
fgets(students[i].name, sizeof(students[i].name), stdin);
students[i].name[strcspn(students[i].name, "\n")] = 0; // ลบ newline
printf("อายุ: ");
scanf("%d", &students[i].age);
// รับคะแนนฟิสิกส์
do {
printf("คะแนนรวมฟิสิกส์ (เต็ม 100): ");
scanf("%d", &students[i].physicsScore);
if (!isValidScore(students[i].physicsScore)) {
printf("❌ คะแนนไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 100\n");
}
} while (!isValidScore(students[i].physicsScore));
// รับคะแนนคณิตศาสตร์
do {
printf("คะแนนรวมคณิตศาสตร์ (เต็ม 100): ");
scanf("%d", &students[i].mathScore);
if (!isValidScore(students[i].mathScore)) {
printf("❌ คะแนนไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 100\n");
}
} while (!isValidScore(students[i].mathScore));
// คำนวณเกรด
students[i].physicsGPA = calculateThaiGPA(students[i].physicsScore);
students[i].mathGPA = calculateThaiGPA(students[i].mathScore);
printf("\n");
}
// แสดงผล
printf("\n📚 รายงานผลนักเรียนทั้งหมด:\n");
for (int i = 0; i < STUDENT_COUNT; i++) {
printf("\nนักเรียนคนที่ %d\n", i + 1);
printf("ชื่อ: %s\n", students[i].name);
printf("อายุ: %d ปี\n", students[i].age);
printf("คะแนนฟิสิกส์: %d | เกรด: %.1f\n", students[i].physicsScore, students[i].physicsGPA);
printf("คะแนนคณิตศาสตร์: %d | เกรด: %.1f\n", students[i].mathScore, students[i].mathGPA);
printf("----------------------------------\n");
}
return 0;
}