Gli esercizi
Testi e soluzioni di alcuni esercizi
Compressione RLE
/*
** rle.c
**
** Legge in input una sequenza di n numeri interi e la memorizza
** in un array. Stampa in output la sequenza compressa con
** l'algoritmo RLE (Run Length Encoding).
**
** Marco Liverani (liverani@mat.uniroma3.it) - Aprile 2001
*/
#include <stdlib.h>
#include <stdio.h>
#define MAX 100
/*
* Legge in input un array di numeri interi. Restituisce
* il numero di elementi letti.
*/
int leggi_array(int V[]) {
int i, n;
printf("Numero di elementi: ");
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d", &V[i]);
return(n);
}
/*
* Funzione principale.
*/
int main(void) {
int n, i, a[MAX], x, cont;
n = leggi_array(a);
cont = 1;
i = 1;
x = a[0];
while (i<n) {
while (i<n && a[i] == x) {
i = i+1;
cont = cont+1;
}
printf("%d %d ", x, cont);
x = a[i];
cont = 1;
i = i+1;
}
return(0);
}