[C]Analisi Codice C

  • Autore discussione Autore discussione computer7
  • Data d'inizio Data d'inizio
Pubblicità
C

computer7

Ospite
Mi è stato chiesto di analizzare questo codice...

Codice:
#include <stdio.h>#include <conio.h>


#define SIZE 40
#define DIM 11


int main (void){
/*---------------------------------------------------------
SEZIONE DELLE DICHIARAZIONI E DELL'INIZIALIZZAZIONE
---------------------------------------------------------*/
   int responses[SIZE] = {1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10};
   int frequency[DIM] = {0,0,0,0,0,0,0,0,0,0,0};
   int i;
   
/*-----------------------------
SEZIONE DELL'ELABORAZIONE
-----------------------------*/
   for (i=0; i<40; i++){
      frequency[responses[i]] = frequency[responses[i]] + 1;
   }//Fine for
   
   printf ("Voto       Frequenza\n");
   
   for (i=1; i<=10; i++){
   printf ("%d \t\t %d\n", i,frequency[i]);
   }//Fine for
   
   getch ();
   return 0;
}//Fine main

Non capisco l' assegnamento nel primo for, il +1 cosa potrebbe indicare?
 
Ok,questo è ovvio ma il problema iniziale(quello da cui ho ricavato il codice) dice che frequency è l'array che conta quante volte compare uno stesso numero{1....10} io non capisco perchè usa come indice responses, quando per esempio poteva fare un controllo su frequency con uno switch....:boh:
 
è il metodo più veloce che c'è per contare quanti elementi uguali ci sono in un array, se response[2]=6 per esempio, frequency[response[2]] sarebbe frequency[6] e quindi aumenta il suo valore di 1

alla fine del ciclo hai nella posizione N di frequency il numero di volte che compare il numero N
 
Una piccola aggiunta ciò che dice campo23, che è ovviamente corretto. Bisogna fare molta attenzione ad un codice del genere, qua si fanno assunzioni sui dati che sono memorizzati nell'array responses. Non contando i possibili errori di overbound sugli interi, qui si tine conto che:
min{responses[]}=1
max{responses[]}=10

se per caso il max elemento o min contenuto nel vettore fosse 200 tale codice sarebbe instabile e causerebbe un bel crash del programma dovuto all'accesso ad un indirizzo non locale frequency[200] che non esiste.
Va bene è un esercizio, ma attenzione a comprendere bene ciò che si scrive.
smile.gif
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top