Corso IN110 Algoritmi e Strutture Dati

Gli esercizi

Testi e soluzioni di alcuni esercizi

Prodotto di quaterne

Generare in modo casuale un array di numeri interi minori di 200. Stampare in output le quaterne consecutive il cui prodotto sia minore della media di tutti gli elementi del vettore.

/*
**  quaterne.c
**
**  Generare in modo casuale un array di numeri interi minori
**  di 200. Stampare in output le quaterne consecutive il cui
**  prodotto sia minore della media di tutti gli elementi del
**  vettore.
**
**  Marco Liverani (liverani@mat.uniroma3.it) - Marzo 2001
*/

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define MAX 100

/*
 *  generazione casuale di un array
 */

int genera_array(int x[]) {
  int n, i;

  printf("Numero di elementi: ");
  scanf("%d", &n);
  srand((unsigned)time(NULL));
  for (i=0; i<n; i++) {
    x[i] = rand()%200;
  }
  return(n);
}


/*
 * restituisce la media aritmetica dei valori del vettore
 */

float media_array(int x[], int n) {
  int i;
  float m = 0.0;

  for (i=0; i<n; i++) {
    m = m + x[i];
  }
  m = m/(float)n;
  return(m);
}


/*
 *  funzione per la stampa di p elementi del vettore
 *  partendo da quello con indice k.
 */

void stampa(int x[], int k, int p) {
  int i;

  for (i=k; i<k+p; i++)
    printf("%d ", x[i]);
  printf("\n");
  return;
}


/*
 *  funzione principale (main)
 */

int main(void) {
  int i, n, v[MAX];
  float m;

  n = genera_array(v);
  stampa(v, 0, n);
  m = media_array(v, n);
  for (i=0; i<=n-4; i++) {
    if (v[i]*v[i+1]*v[i+2]*v[i+3] < m)
      stampa(v, i, 4);
  }
  return(0);
}

Università degli Studi Roma Tre - Dipartimento di Matematica e Fisica - Corso di laurea in Matematica - Corso di Informatica 1 (IN110)

Author: Marco Liverani - Last modified: Saturday July 13, 2019 - URI: http://www.mat.uniroma3.it/users/liverani/IN1/20010328c.shtml