Problema la informatica
Last Updated: Oct 31 2017 20:03, Started by
Luk1152
, Oct 28 2016 20:22
·
0
#1
Posted 28 October 2016 - 20:22
M-am uitat putin prin cartea de informatica (sunt in a 9-a) si am dat de problema asta de info prin carte:
La un concurs, comisia de notare este formata din n membri. Sa se scrie algoritmul de calcul al mediei, stiind ca nota cea mai mica si nota cea mai mare nu sunt luate in considerare la calcularea mediei. Am incercat sa o rezolv dar nu am reusit . Problema e facuta in Python 2.7.12, dar nu cred ca are relevanta. n = int(raw_input("n= ")) x = int(raw_input("> ")) minim = x maxim = x S = 0 nrNumbers = 1 for i in range (1,n): x = int(raw_input("> ")) if x > maxim: maxim = x elif x < minim: minim = x else: S += x nrNumbers += 1 print "Media este {}." .format(S/nrNumbers) Problema ar fi ca atunci cand valoarea lui n = 5, sa zicem, si introduc 0, 1, 2, 3 si 4 se modifica maximul. Si eu as vrea sa il aflu abia la final. Adica pentru numerele astea da eroarea ZeroDivisionerror: integer division or modulo by zero pentru mereu maximul se modifica, si ar trebui sa dea 6/3 adica 2... As vrea doar ideea (fara sa ma folosesc de nu stiu ce functii gen max() ), nu trebuie neaparat in Python. Va multumesc . Edited by Luk1152, 28 October 2016 - 20:35. |
#2
Posted 28 October 2016 - 21:04
Citesti toate valorile, le sortezi, elimini prima si ultima valoare si faci media la ce ramane.
|
#3
Posted 28 October 2016 - 21:04
public int medie(int[] note) { int medie = 0; int notaMinima = note[0]; int notaMaxima = note[0]; for(int i=0;i<note.length;i++){ if(notaMinima < note[i]) { notaMinima = note[i]; } if(notaMaxima > note[i]) { notaMaxima = note[i]; } medie += note[i]; } medie = (medie-notaMaxima-notaMinima) / (note.length - 2); return medie; } ca si exercitiu: - adapteaza programu sa suporte numere cu virgula - pune conditii pentru cazurile in care numarul de note e: 2, 0 - desi iti creste complexitatea, re-implementeaza folosind o sortare inainte, asa cum a sugerat dani Edited by puya4ever, 28 October 2016 - 21:09. |
#5
Posted 28 October 2016 - 22:29
Nope,
nu e nevoie de sortare, Citești toate numerele și faci suma tuturor numerelor introduse, În bucla în care faci citirea determini și maximul și minimul, La final din suma calculată anterior scazi maximul și minimul și împarți la (n-2). Tu în algoritmul anterior nu efectuezi corect suma, nu aduni nici numerele care sunt la un moment dat maxime sau minime. |
#6
Posted 28 October 2016 - 23:05
Nu-i optima sortarea, dar e mai fain sa descopere singur ca se poate face mai bine.
|
#7
Posted 29 October 2016 - 00:21
#8
Posted 29 October 2016 - 02:08
Cred că ar mai trebui luat în calcul cazul în care se găsesc 2 sau mai multe note minime sau 2 sau mai multe note maxime.
|
#9
Posted 29 October 2016 - 18:59
#10
Posted 29 October 2016 - 21:14
|
#11
Posted 31 October 2017 - 20:03
6. Introduceţi aleator 10 numere de la 1 la 2500000. Testaţi că dacă numerele sunt mai mici ca 100000,
atunci să se afişeze 0.1% din număr dar minim 10 şi dacă numerele sunt mai mari ca 2000000 atunci să se afişeze 0.01% din număr dar maxim 4000. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users