Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
casa verde 2024

Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata
 Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...
 teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN
 Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.
 

Problema la informatica

- - - - -
  • Please log in to reply
10 replies to this topic

#1
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 28.10.2016
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 Posted Image. 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 Posted Image.

Edited by Luk1152, 28 October 2016 - 20:35.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Citesti toate valorile, le sortezi, elimini prima si ultima valoare si faci media la ce ramane.

#3
puya4ever

puya4ever

    Active Member

  • Grup: Members
  • Posts: 1,987
  • Înscris: 21.12.2006
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.


#4
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 28.10.2016
Ok, va multumesc mult! :D

#5
Koal

Koal

    Senior Member

  • Grup: Senior Members
  • Posts: 2,969
  • Înscris: 21.08.2008
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Nu-i optima sortarea, dar e mai fain sa descopere singur ca se poate face mai bine.

#7
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014

View PostKoal, on 28 octombrie 2016 - 22:29, said:

Citești toate numerele și faci suma tuturor numerelor introduse,
În bucla în care faci citirea determini și maximul și minimul,



minimul il initializezi cu 11 sa zicem si maximul cu -1 , daca sunt note dela 1 la 10

Edited by VladBtz, 29 October 2016 - 00:21.


#8
pcezar

pcezar

    Member

  • Grup: Members
  • Posts: 818
  • Înscris: 21.08.2005
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
ccdsah

ccdsah

    Senior Member

  • Grup: Senior Members
  • Posts: 2,581
  • Înscris: 16.03.2013

View Postdani.user, on 28 octombrie 2016 - 21:04, said:

Citesti toate valorile, le sortezi, elimini prima si ultima valoare si faci media la ce ramane.

Serios de ce sa le sortezi si sa pierzi timpul.
Parcurgi o singura data sirul determinand maximu, minim si suma.
Apoi media=(suma-min-max)/(n-2)

#10
puya4ever

puya4ever

    Active Member

  • Grup: Members
  • Posts: 1,987
  • Înscris: 21.12.2006

View Postccdsah, on 29 octombrie 2016 - 18:59, said:

Serios de ce sa le sortezi si sa pierzi timpul.
Parcurgi o singura data sirul determinand maximu, minim si suma.
Apoi media=(suma-min-max)/(n-2)
l-a pus sa sorteze la modul didactic. e benefic pentru el.

#11
Icoco

Icoco

    Junior Member

  • Grup: Members
  • Posts: 82
  • Înscris: 21.02.2017
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate