it:informatica:linguaggio_c:vettori_2
Return to Home page
If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it
You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/it/informatica/linguaggio_c/vettori_2
Vettori (Esempio 2)
Concetti:
Algoritmi basati sull'utilizzo di vettori (array)
Testo:
Realizzare un programma che:
- dato un vettore di interi di dimensione
DIM_VETT
pari a 20. - individui i valori uguali ed adiacenti ripetuti piu' di una volta nel vettore, indicandone la posizione del primo elemento della ripetizione e di quanti elementi e' composta la ripetizione.
A titolo esemplificativo, dato il seguente vettore:
int v[DIM_VETT] = {2, 2, 3, 3, 3, 4, 2, 2, 4, 3, 3, 3, 3, 5, 5, 6, 1, 2, 3, 3};
il programma dovrà fornire il seguente output:
Valore 2 ripetuto 2 volte a partire da 0 Valore 3 ripetuto 3 volte a partire da 2 Valore 2 ripetuto 2 volte a partire da 6 Valore 3 ripetuto 4 volte a partire da 9 Valore 5 ripetuto 2 volte a partire da 13 Valore 3 ripetuto 2 volte a partire da 18
Soluzione:
- vettori_2.c
/******************************************* Dato un vettore, ad esempio: v: 2 2 3 3 3 4 2 2 4 3 3 3 3 5 5 6 1 2 3 3 i cui elementi sono i rispettivamente in posizione POS : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 individuare i valori adiacenti ripetuti piu' di una volta nel vettore, indicandone la posizione del primo elemento della ripetizione e di quanti elementi e' composta la ripetizione. Nel caso del vettore qui riportato, l'output del programma dovra' essere: Valore 2 ripetuto 2 volte a partire da 0 Valore 3 ripetuto 3 volte a partire da 2 Valore 2 ripetuto 2 volte a partire da 6 Valore 3 ripetuto 4 volte a partire da 9 Valore 5 ripetuto 2 volte a partire da 13 Valore 3 ripetuto 2 volte a partire da 18 *******************************************/ #include <stdio.h> #define DIM_VETT 20 int main(){ int v[DIM_VETT] = {2, 2, 3, 3, 3, 4, 2, 2, 4, 3, 3, 3, 3, 5, 5, 6, 1, 2, 3, 3}; int i, j, n_rip, pos; /* Stampa vettore */ printf("VETT: "); for(i=0; i<DIM_VETT; i++) printf("%3d ", v[i]); printf("\n"); /* Stampa posizione elementi in vettore */ printf("POS : "); for(i=0; i<DIM_VETT; i++) printf("%3d ", i); printf("\n"); /* Prima soluzione */ printf("\nSOLUZIONE 1\n"); i = 0; pos = 0; n_rip = 1; for(i=0; i<DIM_VETT-1; i++){ if(v[i]==v[i+1]){ n_rip++; }else{ if(n_rip>1){ printf("Valore %d ripetuto %d volte a partire da %d\n", v[i], n_rip, pos); } n_rip = 1; pos = i+1; } } if(n_rip>1){ printf("Valore %d ripetuto %d volte a partire da %d\n", v[i], n_rip, pos); } /* Seconda soluzione */ printf("\nSOLUZIONE 2\n"); i=0; while(i<DIM_VETT-1){ pos = i; n_rip = 1; j = i+1; while(v[i]==v[j] && j < DIM_VETT){ n_rip++; j++; } if(n_rip>1){ printf("Valore %d ripetuto %d volte a partire da %d\n", v[i], n_rip, pos); i = j; }else{ i++; } } }
If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it
You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/it/informatica/linguaggio_c/vettori_2
/web/htdocs/www.skenz.it/home/data/pages/it/informatica/linguaggio_c/vettori_2.txt · Last modified: 2024/04/08 22:35 by 127.0.0.1