/******* Programa que nao faz uso de funcao ********/
/***** compare com outra solucao que faz uso de funcao ****/

/*
 * arquivo: matriz_vetor.c
 * ---------------------
 * Este programa determina o produto de uma matriz M(mxn) 
 * por um vetor x(n) --- ambos reais.
 */
#include <stdio.h>

#define MMAX 100
#define NMAX 100

int main()
{
  int i, j,  m, n;
  double s, M[MMAX][NMAX], x[NMAX], 
         y[MMAX]; /* vetor que armazenará o produto de M por x */ 

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

 /* leitura da matriz M (mxn) */

  printf("Forneca as entradas da matriz %d x %d:\n", m, n);
  for (i = 0; i < m; i++)
    for (j = 0; j < n; j++)
      scanf("%lf", &M[i][j]);

  /* leitura do vetor x(com n elementos) */

  printf("Forneca o vetor (%d doubles): ", n);
  for (i = 0; i < n; i++) 
    scanf("%lf", &x[i]);
 
  /* Impressao dos dados: */ 

  printf("Dados:  m = %d  e  n = %d \n");
  
  /* impressao da matriz M (mxn) */
  printf("Matriz dada:\n");

  for (i = 0; i < m; i++) {
     for (j = 0; j < n; j++) 
        printf("%lf", M[i][j]);
     printf("\n") /* pula linha */
  
  /* impressao do vetor x(com n elementos) */
  printf("Vetor dado:\n");

  for (i=0; i < n; i++) 
     printf("%g ", x[i]);
  printf("\n");

  /* Calculo do produto da matriz M pelo vetor x,
     guardando o resultado no vetor y.  */
 
  for (i = 0; i < m; i++) {
    s = 0;
    for (j = 0; j < n; j++)
      s = s + M[i][j] * x[j];
    y[i]=s;
  }

  printf("O produto é o vetor coluna com entradas: \n");
 
  for (i = 0; i < n; i++) 
     printf("%g ", y[i]);
  printf("\n");

  return 0;
}

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