/***** Programa  que faz uso de funcao *****/
/*** Veja como o programa principal fica bem limpo ***/
/*** Compare com a solucao da aula anterior ***/


/*
 * arquivo: mz_x_vetor.c
 * ---------------------
 * Este programa determina o produto de uma matriz M(mxn)
 * por um vetor x(n).
 */
#include <stdio.h>
#define MMAX 100
#define NMAX 100

/**********************************************************************/
/*
 * leia_vetor():
 * =============
 * Recebe um vetor de double v[] e um inteiro n.
 * Le n reais e os coloca em em v[], isto 'e, em
 * v[0],...,v[n-1].
 */

void leia_vetor(double v[], int n);

/*
 * imprima_vetor():
 * ================
 * Recebe um vetor de n doubles v[] e o inteiro n
 * e imprime v[], isto 'e, imprime v[0],...,v[n-1].
 */

void imprima_vetor(double v[], int n);

/*
 * leia_matriz():
 * =============
 * Recebe uma matriz de doubles a[][NMAX] e inteiros m e n.
 * Le m x n reais e os coloca em em a.
 */

void leia_matriz(double a[][NMAX], int m, int n);

/*
 * multiplique():
 * ==============
 * Recebe uma matriz real m x n em a[][NMAX] um vetor v[] com n reais,
 * e inteiros m e n.  Devolve o produto de a por v em w[].
 *
 */

void multiplique(double a[][NMAX], double v[], double w[], int m, int n);

/**********************************************************************/

int main()
{
  int m, n;
  double M[MMAX][NMAX], x[NMAX], y[MMAX];

  printf("Forneca o valor de m e n: ");
  scanf("%d %d", &m, &n);

  leia_matriz(M, m, n);
  leia_vetor(x, n);

  multiplique(M, x, y, m, n);

  printf("O produto 'e o vetor coluna com entradas\n");
  imprima_vetor(y, m);

  return 0;
}

/**********************************************************************/

void leia_vetor(double v[], int n)
{
  int i;

  printf("Forneca o vetor (%d doubles): ", n);
  for (i=0; i