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 >
Wrap
C/C++ Source or Header
|
1997-05-15
|
1KB
|
75 lines
#include <stdio.h>
#define N 4
#define M 3
/* Operazioni su vettori di lunghezza fissata ad M */
void readvector(int vect[])
/* leggo M interi e li inserisco in vect */
{
int i;
printf("Vector?\n");
for (i=0;i<M;i++)
scanf("%d",&vect[i]);
}
void printvector(int dim,int vect[])
/* stampo vect */
{
int i;
printf("Vector:\n");
for (i=0;i<dim;i++)
printf(" %d",vect[i]);
}
int prodvector(int v1[],int v2[])
/* calcolo il prodotto tra due vettori della stessa lunghezza (M) */
{
int i,aux;
aux=0;
for (i=0;i<M;i++) aux=(v1[i]*v2[i])+aux;
return(aux);
}
/* Operazioni su matrici di dimensione N*M */
void readmatrix(int m[][M])
/* Attenzione: solo la prima dimensione puo' essere libera nei parametri */
/* leggo una matrice riga per riga */
{
int i,j;
for (i=0;i<N;i++)
readvector(m[i]);
}
int prodmv(int m[][M],int v[],int r[])
/* Attenzione: solo la prima dimensione puo' essere libera nei parametri */
/* calcolo il prodotto tra una matrice e NxM e un vettore di M posizioni ottengo un vettore
* r di N posizioni.
*/
{
int i;
for (i=0;i<N;i++) r[i]=prodvector(m[i],v);
}
main()
{
/* Esempi di chiamate: MxN NX1 */
int m[N][M];
int v[M];
int r[N];
printf("Leggi matrice\n");
readmatrix(m);
printf("Leggi vettore\n");
readvector(v);
prodmv(m,v,r);
printvector(N,r);
}