Newsgroup: it.comp.lang.pascal
Titolo: Calcolare la media

Ciao a tutti,
dovrei creare un programma che dato n numeri mi calcoli il valore
medio. Pero' il numero di numeri che posso inserire e di cui devo
calcolare la media puo' variare di volta in volta. Come posso fare?
Vincenzo Accardi - (Palermo, ITALY)
 
E-Mail: 
vin...@iol.it
E-Mail: 
vin...@puntofuturo.net
ICQ UIN: 20344085
 
-------------------------------------------------
Euro Conversion 2000 - Il miglior software per 
convertire le lire in euro e viceversa. Freeware!
http://volftp.tin.it/italiani/accardi/index.htm
-------------------------------------------------

 calcolare la media puo' variare di volta in volta. Come posso fare?
Prova cosi` (lo sto buttando giu` in tempo reale, quindi chiedo venia in
anticipo per ventuali cappelle);
Write('quanti numeri?');ReadLn(n);
Totale:=0;
i:=1;
While i<=n do begin
  Write('Inserisci il numero',i:3,' >');ReadLn(numero);
  Totale:=Totale + numero;
  inc(i);
end;
Media:=Totale/n;
Ciao (e speriamo di non fare brutte figure...)
  Roberto
-- 
-------------------------------------------------------------------
 Vabbe`  ma  mica posso fare tutto io! Te lo sai a che ora mi sono
 alzato  questa  mattina? Alle sette meno un quarto! La bambina mi
 ha vomitato tutta  l'anguria  nelle scarpe!  Stamattina e` venuto
 l'idraulico e sai  quanto mi ha chiesto? Centocinquantamila lire!
 E dopo mezz'ora  il  rubinetto ha ricominciato a buttare l'acqua!
 Quela poi e` andata al corso di chitarra alle tre del pomeriggio,
 lo sai a che ora e` tornata? alle  quattro del mattino! Con tutto
 il rossetto  spostato  sulla  faccia. Ma che la chitarra la suoni
 con la bocca? Hai capito?
-------------------------------------------------------------------
 Attenzione:  i  dati  nell'header  sono modificati per difendermi
 dagli spammer. L'indirizzo  esatto  e`:  
crs...@xxxfreenet.hut.fi
                                   senza le tre x^^^

calcolare la media puo' variare di volta in volta. Come posso fare?
var m, k : real ;
    n    : word ;
begin
  n := 1 ; m := 0 ;
  writeln('scrivi 999 per finire ... ');
  write('numero : '); readln( k );
  while ( k <> 999 ) do
  begin
    m := (m * (n - 1) + k ) / n ;
    writeln('media corrente : ', m:5:3);
    write( 'numero : ' ); readln( k ); inc( n );
  end;
end.
--
Posted from 
itaca.ulysse.it
 [195.223.254.1]
via Mailgate.ORG Server - 
http://www.mailgate.org


Ciao,
credo che le indicazioni che ti hanno fornito siano sufficienti (a naso mi
sembra che la soluzione proposta da CRSOFT sia errata perche' per come e'
scritto l'algoritmo si deve dividere il totale per n-1 invece che per n).
La tua domanda pero' mi suggerisce che il problema risieda nel fatto di non
conoscere a tempo di compilazione il numero degli elementi da sommare e
contare per farne poi la media.
Una soluzione piu' pulita di quelle proposte (in cui si chiede prima il
numero di elementi da sommare, numero che puo' non essere noto nemmeno al
momento in cui tali numeri vengono inseriti) consiste nel leggere i numeri
in input fino al verificarsi di un EOF (che da tastiera si da' con CTRL+Z).
Il programma risultera' allora simile a questo:
tot=0; n=0;
while not EOF do
begin
    readln(num);
    tot:=tot+num;
    n:=n+1;
end;
media:=tot/num;
---
    Alessandro Caproni
    Astronomical Observatory of Trieste
    via G.B. Tiepolo 11, 34100, trieste, Italy
 
cap...@ts.astro.it

calcolare la media puo' variare di volta in volta. Come posso fare?
Uo dei primi programmi che ho fatto in I liceo scientifico (2 anni
fa).
Se vuoi te lo mando via mail (se lo trovo...).
Ricordo di averlo proposto a mio padre, prof di mate, per calcolare le
medie dei suoi alunni ma m'ha risposto che a mente faceva prima! =)
Ciauz
¨¨°º©o¿,,¿o©º°¨¨°º©  Mr. GiMa ©º°¨¨°º©o¿,,¿o©º°¨
------------------------------------------------------------------------------
             WEB: 
http://come.to/gima
            MAIL: 
gim...@freemail.it
             UIN: 2685398
------------------------------------------------------------------------------
Togliere NOSPAM dal mio indirizzo per rispondere

calcolare la media puo' variare di volta in volta. Come posso fare?
Per cosa ti serve?
Se e' un compito per scuola allora ti serve una soluzione che lasci la
tua prof a bocca aperta:-)
program   media;
procedure LeggiNumero(var n:real; var r:integer);
var       s:string;
          code:integer;
begin
          r:=0; n:=0;
          readln(s);
          if s='' then r:=1
          else begin
             val(s,n,code);
             if code<>0 then
                r:=2
          end
end;
var       i,r:integer;
          n:real;
          tot:real;
begin
          writeln;
          i:=0; tot:=0;
          repeat
             repeat
                 write(i+1,') ');
                 LeggiNumero(n,r);
                 if r=2 then
                    writeln('Tonno. Questo non e` un numero.');
             until (r<>2);
             if r=0 then begin
                tot:=tot+n;
                inc(i)
             end
          until r=1;
          writeln;
          if i>0 then
             writeln('La media e`: ',(tot/i):1:3)
end.
Quando hai terminato di dare i dati e vuoi la media basta che premi
invio senza dare nessun numero.
By   Fabio
--
fabi...@rocketmail.com

Un bel di' CRSOFT scrisse:
C> 
C> Write('quanti numeri?');ReadLn(n);
C> Totale:=0;
C> i:=1;
C> While i<=n do begin
C>   Write('Inserisci il numero',i:3,' >');ReadLn(numero);
C>   Totale:=Totale + numero;
C>   inc(i);
C> end;
C> Media:=Totale/n;
C> 
perche' non un bel FOR?? :-)
-- 
"Un esperto e' una persona che evitando tutti i piccoli errori, punta dritto
alla catastrofe", definizione di Weinberg
-- 
Emanuele Cesena
em...@iol.it
          occhio all'antispam NOSPAM!
http://www.geocities.com/SiliconValley/Grid/8879

Un bel di' Ale scrisse:
A> credo che le indicazioni che ti hanno fornito siano sufficienti (a naso mi
A> sembra che la soluzione proposta da CRSOFT sia errata perche' per come e'
A> scritto l'algoritmo si deve dividere il totale per n-1 invece che per n).
A> 
n mi sembra corretto :-)
A> tot=0; n=0;
A> while not EOF do
A> begin
A>     readln(num);
A>     tot:=tot+num;
A>     n:=n+1;
A> end;
A> media:=tot/num;
A> 
media:=tot/n; 
:-)
-- 
"La distanza del binario di partenza e' inversamente proporzionale al tempo
a disposizione per prendere il treno", prima legge di Kauffman sulle stazioni


Grazie a tutti per la soluzione inviatami. Soprattutto a Fabio M.
