คำอธิบายปัญหา
สมมติว่ามีอาร์เรย์ marks ที่เก็บคะแนน โดยดัชนีคู่ (0, 2, 4...) เป็นคะแนนของผู้ชาย และดัชนีคี่ (1, 3, 5...) เป็นคะแนนของผู้หญิง มีอินพุต gender เป็น 'b' หรือ 'g' ถ้าเป็น 'b' คืนผลรวมคะแนนผู้ชาย ถ้าเป็น 'g' คืนผลรวมคะแนนผู้หญิง (ขนาดอาร์เรย์คือ N)
ตัวอย่าง
หากอินพุตเป็น N = 9, marks = [8,5,2,6,7,5,9,9,7], gender = 'g' ผลลัพธ์จะเป็น 25 เพราะ 5+6+5+9 = 25
ขั้นตอนการแก้ปัญหา
- กำหนด g_sum = 0, b_sum = 0
- วนลูป i จาก 0 ถึง n-1:
- ถ้า i % 2 == 1 (ดัชนีคี่) บวกเข้า g_sum
- อื่นๆ บวกเข้า b_sum
- ถ้า gender == 'b' คืน b_sum มิฉะนั้นคืน g_sum
โค้ดตัวอย่าง
#include <stdio.h>
#define N 9
int solve(int marks[], int n, char gender) {
int g_sum = 0;
int b_sum = 0;
for (int i = 0; i < n; i++) {
if (i % 2 != 0) {
g_sum += marks[i];
} else {
b_sum += marks[i];
}
}
if (gender == 'b')
return b_sum;
return g_sum;
}
int main() {
int marks[N] = {8,5,2,6,7,5,9,9,7};
char gender = 'g';
int sum = solve(marks, N, gender);
printf("%d", sum);
return 0;
}
อินพุต
{8,5,2,6,7,5,9,9,7}, 'g'
เอาต์พุต
25