Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Obiecte vechi și inutile car...

Mentenanta Acoperis

Cheder deteriorat , zgariat, cum ...

Laptop HP 15-AF001NQ, AMD E1-6015...
 Blat de bucatarie lungime 4,60 m

Termostat incalzire si racire

Configurare retea cu modem Vodafo...

Curtea Penala Internationala soli...
 Sunt obligate bancile sa opteze p...

Pensie anticipata partiala cu cer...

Ce abonamente aveți?

Cat ar costa acest poster, se poa...
 Cum sa scapam de sobolani?

Alser Forest SA a dat teapa de 1,...

COD Eroare ABS ( Ford Mondeo MK5 )

Implanturi dentare clinici Consta...
 

Problema la informatica

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
10 răspunsuri în acest subiect

#1
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Mesaje: 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.

Editat de Luk1152, 28 octombrie 2016 - 20:35.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Mesaje: 30.268
  • Î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
  • Mesaje: 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

Editat de puya4ever, 28 octombrie 2016 - 21:09.


#4
Luk1152

Luk1152

    New Member

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

#5
Koal

Koal

    Senior Member

  • Grup: Senior Members
  • Mesaje: 2.994
  • Î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
  • Mesaje: 30.268
  • Î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
  • Mesaje: 1.702
  • Înscris: 24.09.2014

 Koal, 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

Editat de VladBtz, 29 octombrie 2016 - 00:21.


#8
pcezar

pcezar

    Member

  • Grup: Members
  • Mesaje: 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
  • Mesaje: 2.581
  • Înscris: 16.03.2013

 dani.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
  • Mesaje: 1.987
  • Înscris: 21.12.2006

 ccdsah, 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
  • Mesaje: 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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

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