home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / CataniaB / teach-act / esempi / Vettori_Matrici / array.c next >
C/C++ Source or Header  |  1997-05-15  |  1KB  |  75 lines

  1. #include <stdio.h>
  2. #define N 4
  3. #define M 3
  4.  
  5. /* Operazioni su vettori di lunghezza fissata ad M */
  6.  
  7. void readvector(int vect[])
  8.   /* leggo M interi e li inserisco in vect */
  9.  
  10. {
  11.  int i;
  12.  printf("Vector?\n");
  13.  for (i=0;i<M;i++) 
  14.     scanf("%d",&vect[i]);   
  15. }
  16.  
  17. void printvector(int dim,int vect[])
  18.  /* stampo vect */
  19. {
  20.  int i;
  21.  printf("Vector:\n");
  22.  for (i=0;i<dim;i++) 
  23.     printf(" %d",vect[i]);   
  24. }
  25.  
  26.  
  27. int prodvector(int v1[],int v2[])
  28.  /* calcolo il prodotto tra due vettori della stessa lunghezza (M) */
  29. {
  30.  int i,aux;
  31.  aux=0;
  32.  
  33.  for (i=0;i<M;i++) aux=(v1[i]*v2[i])+aux;
  34.  return(aux);   
  35. }
  36.  
  37. /* Operazioni su matrici di dimensione N*M */ 
  38.  
  39. void readmatrix(int m[][M])
  40. /* Attenzione: solo la prima dimensione puo' essere libera nei parametri */ 
  41. /* leggo una matrice riga per riga */
  42. {
  43.  
  44.  int i,j;
  45.  
  46.  for (i=0;i<N;i++) 
  47.    readvector(m[i]);
  48. }
  49.  
  50. int prodmv(int m[][M],int v[],int r[])
  51. /* Attenzione: solo la prima dimensione puo' essere libera nei parametri */ 
  52. /* calcolo il prodotto tra una matrice e NxM e un vettore di M posizioni ottengo un vettore 
  53.  * r di N posizioni.  
  54. */
  55. {
  56.  int i;
  57.  
  58.  for (i=0;i<N;i++) r[i]=prodvector(m[i],v);  
  59. }
  60.  
  61. main()
  62. {
  63. /* Esempi di chiamate: MxN NX1 */
  64.   int m[N][M];
  65.   int v[M];
  66.   int r[N]; 
  67.   printf("Leggi matrice\n");
  68.   readmatrix(m);
  69.   printf("Leggi vettore\n");
  70.   readvector(v);
  71.   prodmv(m,v,r);
  72.   printvector(N,r);
  73. }
  74.  
  75.