Students Marks Sum - Hacker Rank Solution
Problem Statement
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.
For example, let marks = [3,2,5] and marks stores 0x7fff9575c05f. Then, 0x7fff9575c05f is the memory address of marks0.
Complete the function,
marks_summation(int* marks, char gender, int number_of_students)
which returns the total sum of: - marks of boys if gender = b
- marks of girl if gender = g
The locked code stub reads the elements of marks along with gender. Then, it calls the function
marks_summation(marks, gender, number_of_students)
to get the sum of alternate elements as explained above and then prints the sum.Input Format
- The first line contains number_of_students, denoting the number of students in the class, hence the number of elements in marks.
- Each of the number_of_students subsequent lines contains marksi.
- The next line contains gender.
Constraints
- number_of_students <=10^3
- 1<=marksi<=10^3 (where 0<= i< number_of_students)
- gender = g or b
Output Format
The output should contain the sum of all the aternate elements in marks as explained above.
Sample Input 0
3 3 2 5 b
Sample Output 0
8
Explanation 0
marks = [3,2,5] and gender = b.
so marks0+marks2 = 3+5 = 8.
so Sum = marks1+marks3 = 2+5 = 8.
here does marks1 not exist. so Sum = 0
Disclaimer :-
so marks0+marks2 = 3+5 = 8.
Sample Input 1
5 1 2 3 4 5 g
Sample Output 1
6
Explanation 1
marks = [1,2,3,4,5] and gender = g.so Sum = marks1+marks3 = 2+5 = 8.
Sample Input 2
1 5 g
Sample Output 2
0
Explanation 2
marks = [5] and gender = g.here does marks1 not exist. so Sum = 0
Solution :-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #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) { //Write your code here. 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; } |
Disclaimer :-
the whole problem statement are given by HackerRank.com but the solution are generated by the codeworld19 authority if any of the query regarding this post or website fill the following contact form thank you.