In this HackerRank Students Marks sum in c programming problem solution You are given an array of integers, marks, denoting the marks scored by students in a class. The alternating elements marks0, marks2, marks4 and so on denote the marks of boys.
Similarly, marks1, marks3, marks5 and so on denote the marks of girls. The array name, marks, works as a pointer which stores the base address of that array. In other words, marks contains the address where marks0 is stored in the memory.
![HackerRank Students Marks Sum solution in c programming Students marks sum solution](https://programmingoneonone.com/wp-content/uploads/2024/07/HackerRank-students-marks-sum-solution-in-c.webp)
HackerRank students mark sum solution in c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//Complete the following function.
int marks_summation(int* marks, int number_of_students, char gender) {
int sum = 0;
for (int i = (gender == 'b' ? 0 : 1); i < number_of_students; i = i + 2)
sum += *(marks + i);
return sum;
}
int main() {
int number_of_students;
char gender;
int sum;
scanf("%d", &number_of_students);
int *marks = (int *) malloc(number_of_students * sizeof (int));
for (int student = 0; student < number_of_students; student++) {
scanf("%d", (marks + student));
}
scanf(" %c", &gender);
sum = marks_summation(marks, number_of_students, gender);
printf("%d", sum);
free(marks);
return 0;
}
Second solution
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int marks_summation(int* p, int number_of_students, char gender) {
int s = 0, i = 0;
if (gender == 'g') {
i++;
}
for (; i < number_of_students; i = i+2) {
s += p[i];
}
return s;
}
int main() {
int number_of_students;
char gender;
int sum;
scanf("%d", &number_of_students);
int *marks = (int *) malloc(number_of_students * sizeof (int));
for (int student = 0; student < number_of_students; student++) {
scanf("%d", (marks + student));
}
scanf(" %c", &gender);
sum = marks_summation(marks, number_of_students, gender);
printf("%d", sum);
free(marks);
return 0;
}