PAT niveau A 1137 Note finale

Lien vers le titre original

Pour les étudiants qui suivent des cours de "Structure de données" dans des MOOC universitaires chinois, afin d'obtenir un certificat qualifié, ils doivent d'abord obtenir pas moins de 200 points pour des devoirs de programmation en ligne, puis obtenir pas moins de 60 points (sur 100) pour l'évaluation globale.

La formule de calcul de la note d'évaluation globale est G=(Gmi-parcours×40%+Gfinale×60%), si Gmi-parcours>Gfinal sinon, l'évaluation globale G est Gfinale.

Ici, Gmid−term et Gfinal sont respectivement les notes intermédiaires et finales des étudiants.

Le problème est maintenant que chaque test produit une carte de pointage distincte.

Pour cette question, veuillez écrire un programme pour combiner différentes transcriptions en une seule.

Format d'entrée
Entrez 3 nombres entiers sont donnés sur la première ligne, qui sont P (nombre d'étudiants qui ont fait des devoirs de programmation en ligne), M (nombre d'étudiants qui ont passé des examens de mi-session) et N (nombre d'étudiants qui ont passé des examens finaux ).

Ensuite, il y a trois blocs d'entrée.

Le premier bloc contient P grades de programmation en ligne Gp ;

Le deuxième bloc contient les notes d'examen à mi-parcours M G à mi-parcours ;

Le troisième bloc contient N notes d'examen final Gfinal.

Chaque note occupe une ligne et le format est le suivant : nombre d'étudiants score.

Parmi eux, la carte d'étudiant est constituée de lettres et de chiffres anglais ne dépassant pas 20 caractères ; le score est un nombre entier non négatif (le score total le plus élevé pour la programmation est de 900 points, et le score le plus élevé pour la mi-session et la finale est de 100 points).

Format de sortie
Imprimez une liste des étudiants qui ont reçu un certificat d'admissibilité.

Une ligne par élève, au format :

Numéro d'étudiant Gp Gmi−session Gfinal G
Si certaines notes n'existent pas (par exemple, quelqu'un n'a pas passé l'examen de mi−session), écrivez "−1" dans la position correspondante.

L'ordre de sortie est décroissant en fonction du score total (arrondi à un entier).

S'il y a égalité, il sera incrémenté en fonction du numéro d'étudiant.

Le sujet garantit que la carte d'étudiant n'est pas répétée et qu'il y a au moins un étudiant qualifié.

Plage de données
1≤P,M,N≤10000
Exemple d'entrée :
6 6 7
01234 880
a1903 199
ydjh2 200
wehu8 300
dx86w 220
manquant 400
ydhfu77 99 wehu8 55 ydjh2
98 dx86w 88 a1903 86 01234 3 9 ydhfu77 88 a1903 66 01234 58 wehu8 84 ydjh2 82 manquant 99 dx86w 81 exemple de sortie : manquant 400 -1 99 99 ydjh2 200 98 82 88 dx86w 220 88 81 84 wehu8 300 55 84 84















Ma soluce :

#include <bits/stdc++.h>
using namespace std;
struct Student{
    string id;
    int p, m, f, s;
    Student(): p(-1), m(-1), f(-1), s(0){}
    
    void calc(){
        if(m > f) s = round(m*0.4 + f*0.6);
        else s = f;
    }
    
    bool operator< (const Student& t) const{
        if(s != t.s) return s > t.s;
        else{
            return id < t.id;
        }
    }
};

int main(){
    int p, m, n;
    cin >> p >> m >> n;
    
    unordered_map<string, Student> hash;
    
    string id;
    int s;
    
    for(int i = 0; i < p; i ++ ){
        cin >> id >> s;
        hash[id].id = id;
        hash[id].p = s;
    }
    
    for(int i = 0; i < m; i ++ ){
        cin >> id >> s;
        hash[id].id = id;
        hash[id].m = s;
    }
    
    for(int i = 0; i < n; i ++ ){
        cin >> id >> s;
        hash[id].id = id;
        hash[id].f = s;
    }
    vector <Student> students;
    for(auto per : hash){
        auto stu = per.second;
        stu.calc();
        if(stu.p >= 200 && stu.s >= 60) students.push_back(stu);
    }
    sort(students.begin(), students.end());
    for(auto re : students){
        cout << re.id << ' ' << re.p << ' ' << re.m << ' ' << re.f << ' ' << re.s << endl;
    }
    return 0;
}

récompense:

  Initialisation du constructeur de structure : Student() : p(-1), m(-1), f(-1), s(0){}

Définir la fonction interne de la structure

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45660485/article/details/126073059
conseillé
Classement