Skip to content
Related Articles

Related Articles

Improve Article

Students with maximum average score of three subjects

  • Last Updated : 09 Jun, 2021

Given a file containing data of student name and marks scored by him/her in 3 subjects. The task is to find the list of students having the maximum average score. 
Note : If more than one student has the maximum average score, print them as per the order in the file.
Examples: 
 

Input : file[] = {“Shrikanth”, “20”, “30”, “10”, “Ram”, “100”, “50”, “10”} 
Output : Ram 53 
Average scores of Shrikanth, Ram are 20 and 53 respectively. So Ram has the maximum average score of 53. 
Input : file[] = {“Ramesh”, “90”, “70”, “40”, “Adam”, “50”, “10”, 
            ”40″, “Suresh”, “22”, “1”, “56”, “Rocky”, “100”, “90”, “10”} 
Output : Ramesh Rocky 66 
Average scores of Ramesh, Adam, Suresh and Rocky are 66, 33, 26 and 66 respectively. So both Ramesh and Rocky have the maximum average score of 66. 
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

 



Approach : 
 

  1. Traverse the file data and store average scores for each student.
  2. Now, find the maximum average score and search for all the students with this maximum average score.
  3. Print the maximum average score and names as per the order in the file.

Below is the implementation of the above approach: 
 

C++




// C++ program to find the
// list of students having maximum average score
#include<bits/stdc++.h>
using namespace std;
 
// Function to find the
// list of students having maximum average score
// Driver code
void getStudentsList(string file[],int n)
{
    // Variables to store average score of a student
    // and maximum average score
    int avgScore;
    int maxAvgScore = INT_MIN;
 
    // List to store names of students
    // having maximum average score
    vector<string> names;
 
    // Traversing the file data
    for (int i = 0; i < n; i += 4) {
 
        // finding average score of a student
        avgScore = (stoi(file[i + 1]) +
                    stoi(file[i + 2]) +
                stoi(file[i + 3])) / 3;
 
        if (avgScore > maxAvgScore) {
            maxAvgScore = avgScore;
 
            // Clear the list and add name of student
            // having current maximum average score in the list
            names.clear();
            names.push_back(file[i]);
        }
 
        else if (avgScore == maxAvgScore)
            names.push_back(file[i]);
    }
 
    // Printing the maximum average score and names
    // of students having this maximum average score
    // as per the order in the file.
    for (int i = 0; i < names.size(); i++) {
        cout <<names[i] + " ";
    }
 
    cout << maxAvgScore;
}
 
// Driver code
int main()
{
    string file[] = { "Shrikanth", "20", "30",
                    "10", "Ram", "100", "50", "10" };
     
    // Number of elements in string array               
    int n= sizeof(file)/sizeof(file[0]);
     
    getStudentsList(file,n);
}
 
// This code is contributed by ihritik

Java




// Java program to find the
// list of students having maximum average score
 
import java.io.*;
import java.util.*;
import java.lang.*;
 
class GFG {
 
    // Function to find the
    // list of students having maximum average score
    // Driver code
    static void getStudentsList(String[] file)
    {
        // Variables to store average score of a student
        // and maximum average score
        int avgScore;
        int maxAvgScore = Integer.MIN_VALUE;
 
        // List to store names of students
        // having maximum average score
        ArrayList<String> names = new ArrayList<>();
 
        // Traversing the file data
        for (int i = 0; i < file.length; i += 4) {
 
            // finding average score of a student
            avgScore = (Integer.parseInt(file[i + 1]) +
                        Integer.parseInt(file[i + 2]) +
                       Integer.parseInt(file[i + 3])) / 3;
 
            if (avgScore > maxAvgScore) {
                maxAvgScore = avgScore;
 
                // Clear the list and add name of student
                // having current maximum average score in the list
                names.clear();
                names.add(file[i]);
            }
 
            else if (avgScore == maxAvgScore)
                names.add(file[i]);
        }
 
        // Printing the maximum average score and names
        // of students having this maximum average score
        // as per the order in the file.
        for (int i = 0; i < names.size(); i++) {
            System.out.print(names.get(i) + " ");
        }
 
        System.out.print(maxAvgScore);
    }
 
    // Driver code
    public static void main(String args[])
    {
        String[] file = { "Shrikanth", "20", "30",
                        "10", "Ram", "100", "50", "10" };
        getStudentsList(file);
    }
}

Python3




# Python3 program to find the list of
# students having maximum average score
 
# Function to find the list of students
# having maximum average score
def getStudentsList(file):
     
    # Variables to store maximum
    # average score
    maxAvgScore = 0
 
    # List to store names of students
    # having maximum average score
    names = []
 
    # Traversing the file data
    for i in range(0, len(file), 4):
 
        # finding average score
        # of a student
        avgScore = (int(file[i + 1]) +
                    int(file[i + 2]) +
                    int(file[i + 3])) // 3
 
        if avgScore > maxAvgScore:
            maxAvgScore = avgScore
 
            # Clear the list and add name
            # of student having current
            # maximum average score in the list
            names.clear()
            names.append(file[i])
             
        elif avgScore == maxAvgScore:
            names.add(file[i])
         
    # Printing the maximum average score and names
    # of students having this maximum average score
    # as per the order in the file.
    for i in range(len(names)):
        print(names[i], end = " ")
         
    print(maxAvgScore)
 
# Driver Code
if __name__ == "__main__":
     
    file = ["Shrikanth", "20", "30", "10",
            "Ram", "100", "50", "10"]
                     
    getStudentsList(file)
 
# This code is contributed
# by rituraj_jain

C#




// C# program to find the
// list of students having maximum average score
 
using System;
using System.Collections.Generic;
class GFG {
 
    // Function to find the
    // list of students having maximum average score
    // Driver code
    static void getStudentsList(string [] file)
    {
        // Variables to store average score of a student
        // and maximum average score
        int avgScore;
        int maxAvgScore = Int32.MinValue;
 
        // List to store names of students
        // having maximum average score
        List<string> names = new List<string>();
 
        // Traversing the file data
        for (int i = 0; i < file.Length; i += 4) {
 
            // finding average score of a student
            avgScore = (Int32.Parse(file[i + 1]) +
                        Int32.Parse(file[i + 2]) +
                    Int32.Parse(file[i + 3])) / 3;
 
            if (avgScore > maxAvgScore) {
                maxAvgScore = avgScore;
 
                // Clear the list and add name of student
                // having current maximum average score in the list
                names.Clear();
                names.Add(file[i]);
            }
 
            else if (avgScore == maxAvgScore)
                names.Add(file[i]);
        }
 
        // Printing the maximum average score and names
        // of students having this maximum average score
        // as per the order in the file.
        for (int i = 0; i < names.Count; i++) {
            Console.Write(names[i] + " ");
        }
 
        Console.WriteLine(maxAvgScore);
    }
 
    // Driver code
    public static void Main()
    {
        string[] file = { "Shrikanth", "20", "30",
                        "10", "Ram", "100", "50", "10" };
        getStudentsList(file);
    }
}
 
 
// This code is contributed by ihritik

PHP




<?php
// PHP program to find the list of students
// having maximum average score
 
// Function to find the list of students
// having maximum average score
function getStudentsList($file, $n)
{
    // Variables to store average score of
    // a student and maximum average score
    $maxAvgScore = PHP_INT_MIN;
 
    // List to store names of students
    // having maximum average score
    $names = array();
    $avgScore = 0;
     
    // Traversing the file data
    for ($i = 0; $i < $n; $i += 4)
    {
 
        // finding average score of a student
        $avgScore = (int)((intval($file[$i + 1]) +
                           intval($file[$i + 2]) +
                           intval($file[$i + 3])) / 3);
 
        if ($avgScore > $maxAvgScore)
        {
            $maxAvgScore = $avgScore;
 
            // Clear the list and add name of
            // student having current maximum
            // average score in the list
            unset($names);
            $names = array();
            array_push($names, $file[$i]);
        }
 
        else if ($avgScore == $maxAvgScore)
            array_push($names, $file[$i]);
    }
 
    // Printing the maximum average score
    // and names of students having this
    // maximum average score as per the
    // order in the file.
    for ($i = 0; $i < count($names); $i++)
    {
        echo $names[$i] . " ";
    }
 
    echo $maxAvgScore;
}
 
// Driver code
$file = array( "Shrikanth", "20", "30", "10",
               "Ram", "100", "50", "10" );
 
// Number of elements in string array        
$n = count($file);
 
getStudentsList($file, $n);
 
// This code is contributed by mits
?>

Javascript




<script>
// Javascript program to find the
// list of students having maximum average score
 
// Function to find the
// list of students having maximum average score
// Driver code
function getStudentsList(file, n)
{
 
    // Variables to store average score of a student
    // and maximum average score
    let avgScore;
    let maxAvgScore = Number.MIN_SAFE_INTEGER;
 
    // List to store names of students
    // having maximum average score
    let names = [];
 
    // Traversing the file data
    for (let i = 0; i < n; i += 4)
    {
 
        // finding average score of a student
        avgScore = Math.floor((Number(file[i + 1]) + Number(file[i + 2]) + Number(file[i + 3])) / 3);
 
        if (avgScore > maxAvgScore)
        {
            maxAvgScore = avgScore;
 
            // Clear the list and add name of student
            // having current maximum average score in the list
            names = [];
            names.push(file[i]);
        }
 
        else if (avgScore == maxAvgScore)
            names.push(file[i]);
    }
 
    // Printing the maximum average score and names
    // of students having this maximum average score
    // as per the order in the file.
    for (let i = 0; i < names.length; i++) {
        document.write(names[i] + " ");
    }
 
    document.write(maxAvgScore);
}
 
// Driver code
 
let file = ["Shrikanth", "20", "30",
    "10", "Ram", "100", "50", "10"];
 
// Number of elements in string array               
let n = file.length;
 
getStudentsList(file, n);
 
// This code is contributed by gfgking.
 
</script>
Output: 
Ram 53

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :