/* File: structvet.c */
/* Time-stamp: "2002-05-09 00:09:33 calvanes" */
/* Scopo: parametri di tipo vettore racchiusi in una struttura */

#include <stdio.h>

#define DIM 5

struct strvett { int elementi[DIM]; };


void stampaVettori(struct strvett sv, int v[DIM])
{
  int i;

  printf("struttura vettore\n");
  for (i = 0; i < DIM; i++)
    printf("%9d %7d\n", sv.elementi[i], v[i]);
}


void modificaVettori(struct strvett sv, int v[DIM])
{
  int i;

  for (i = 0; i < DIM; i++) {
    sv.elementi[i] *= 2;
    v[i] *= 2;
  }
}


struct strvett inizializzaVettori(int n, int v[DIM])
{
  int i;
  struct strvett sv;

  for (i= 0; i < DIM; i++) {
    sv.elementi[i] = n * i;
    v[i] = n * i;
  }

  return sv;
}


int main(void)
{
  struct strvett svett = {1, 2, 3, 4, 5};
  int vett[DIM] = {1, 2, 3, 4, 5};
  int a;

  printf("Vettori prima:\n");
  stampaVettori(svett, vett);

  putchar('\n');
  modificaVettori(svett, vett);
  printf("Vettori dopo:\n");
  stampaVettori(svett, vett);

  putchar('\n');
  printf("Immetti un intero: ");
  scanf("%d", &a);
  svett = inizializzaVettori(a, vett);
  printf("Vettori restituiti:\n");
  stampaVettori(svett, vett);
}


/* Esempio di esecuzione:

Vettori prima:
struttura vettore
        1       1
        2       2
        3       3
        4       4
        5       5

Vettori dopo:
struttura vettore
        1       2
        2       4
        3       6
        4       8
        5      10

Immetti un intero: 8
Vettori restituiti:
struttura vettore
        0       0
        8       8
       16      16
       24      24
       32      32
*/