Students Marks Sum solution HackerRank

problem :

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.

image

Function Description

Complete the function, marks_summation in the editor below.

marks_summation has the following parameters:

  • int marks[number_of_students]: the marks for each student
  • int number_of_students: the size of marks[]
  • char gender: either ‘g’ or ‘b’

Returns

  • int: the sum of marks for boys if gender=b, or of marks of girls if gender=g

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 marks.
  • 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

Sample Input 0

3
3
2
5
b

Sample Output 0

8

Explanation 0

marks = [3, 2, 5] and  gender=b .

So, marks0 + marks1 = 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 + 4 = 6.

Sample Input 2

1
5
g

Sample Output 2

0

Explanation 2

 marks = [5] and gender = g

Here,  doesmarks1 not exist. So, sum = 0.

Students Marks Sum solution in c HackerRank

#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 i, sum=0;
  if(gender=='b') i=0;
  else{i=1; marks+=1;} 
  for(i;i<number_of_students;i+=2,marks+=2)
  sum+=(*marks);
  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;
}

Leave a comment