Informatică, întrebare adresată de Trollea, 8 ani în urmă

Se cunosc notele a n elevi la un extemporal. Să se afişeze care este nota maximă la test şi de către câţi elevi a fost obţinută. Exemplu: Pentru n=7 şi notele: 4, 6, 4,8,8,5,8, se va afişa: 'Nota 8 obţinuta de 3 elevi'.

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n,i,nota,notamax=0, v[11]={0};

   cin >> n;

   for (i=1; i<=n; ++i)

   {

       cin >> nota;

       ++v[nota];

       if (nota>notamax)

       {

           notamax=nota;

       }

   }

   cout << "Nota " << notamax << " obtinuta de " << v[notamax] << " elevi";

   return 0;

}

Explicație:

v[11] - vector de frecvenţă a notelor, care din start a fost zerografiat


CinevaFaraNume: Daca vrei sa fie mai eficient poti declara vectorul v global.
Cand spui ca e "zerografiat" defapt este umplut cu 0-uri la inceput(pentru vectori mari se vede diferenta).
CinevaFaraNume: Si e de ~2 ori mai rapid daca e initializat global in comparatie cu unul de aceasi marime initializat in stack.
Răspuns de CinevaFaraNume
2

#include <iostream>

using namespace std;

int main(){

int n, x;

cin >> n;

int notamax = 0, notamaxap = 0;// nota maxima si numar de aparitii

while(n-- > 0){

 cin >> x;

 if(x > notamax){

  notamax = x;

  notamaxap = 1;

 }else if(x==notamax){

  notamaxap++;

 }

}

cout << "Nota " << notamax << " obtinuta de " << notamaxap << " elevi";

}


Trollea: mersii mult
Trollea: in loc de while nu pot sa folosesc for ??
CinevaFaraNume: Ba da... Eu l-am facut fara inca o variabila
Alte întrebări interesante