Aiuto a capire un frammento di programma

tenebrikko
un altro programmino a cui non riesco a venirne a capo! il problema è che mi perdo a seguirlo! aiutatemi a trovare un nesso logico!
(MAXMEDIA e MAXESITI sono costanti numeriche definite nel sorgente; RAND_MAX è una costante numerica di libreria; la funzione rand() restituisce un numero casuale compreso tra 0 e RAND_MAX)

int i, j, numeri[MAXMEDIA], imax = 100, media, somma;
for (i=0; i<(MAXMEDIA-1); i++)
numeri=rand()*imax/RAND_MAX;

for (i=0; i<(MAXESITI-MAXMEDIA); i++)
{
numeri[MAXMEDIA-1]=rand()*imax/RAND_MAX;
somma = 0;

for (j=0;j somma = somma + numeri[j];
media = somma / MAXMEDIA;
printf ("media n.%3d: %7.2lf\n", i, media);

for (j=0;j<(MAXMEDIA-1);j++)
numeri[j]=numeri[j+1];
}

grazie mille! mi serve trovare il filo logico, o meglio ciò che fa passo passo!

Risposte
Omega1
Cosa deve fare il programma?

L' errore potrebbe essere nel primo ciclo for: controlla l' indice di "numeri" e le parentesi graffe.

tenebrikko
ottima domanda.. è quello che sto cercando di capire! è un'esercizio dato in un vecchio esame e tento di risolverlo... il testo è giusto ho fatto copia e incolla!se vuoi ho la soluzione però non mi dice molto!

Bonham1
Ci sono errori comunque, oltre all'assenza di indentazione.

int i, j, numeri[MAXMEDIA], imax = 100, media, somma;
/* max puo' essere modificata in ogni momento
 * se e' pensata come costante, allora deve essere const int */

for (i=0; i<(MAXMEDIA-1); i++) numeri[i]=rand()*imax/RAND_MAX;
// questo riempie il vettore numeri

for (i=0; i<(MAXESITI-MAXMEDIA); i++)
{
   numeri[MAXMEDIA-1]=rand()*imax/RAND_MAX;
   /* ad ogni passo del ciclo, l'ultima casella del vettore numeri viene sostituita con un nuovo valore */
   somma = 0; // inizializzazione della variabile somma

   for (j=0;j<MAXMEDIA;j++)
   {
      somma = somma + numeri[j];
      /* ad ogni ciclo, somma, inizialmente 0, viene incrementato del valore j-esimo del vettore
       * numeri, e alla fine sarà appunto la somma di tutti i suoi elementi */
      media = somma / MAXMEDIA;
      /* questa media viene calcolata ad ogni ciclo */
      printf ("media n.%3d: %7.2lf\n", i, media);
      /* stampo della media di ogni ciclo, es "media n.1: 430"
       * i simboli dopo il % specificano la precisione del numero */
   }

   for (j=0;j<(MAXMEDIA-1);j++) numeri[j]=numeri[j+1];
   /* vi e' uno "scalo" dei numeri nel vettore, ad es. v=1,2,3 --> v=2,3,? */
}


Quando si fornisce del codice, di solito si spiega anche a che serve!

Trovo davvero strano che tu non lo sappia.

tenebrikko
ti ringrazio moltissimo! ho semplicemente preso il testo dell'esercizio da cui non ci uscivo! grazie ancora!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.