User Tools

Site Tools


it:informatica:linguaggio_c:vettori_2
Return to Home page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

it:informatica:linguaggio_c:vettori_2 [2019/02/26 14:35] (current)
Line 1: Line 1:
 +====== 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:
 +<code C>
 +int v[DIM_VETT] = {2, 2, 3, 3, 3, 4, 2, 2, 4, 3, 3, 3, 3, 5, 5, 6, 1, 2, 3, 3};
 +</​code>​
 +il programma dovr√† fornire il seguente output:
 +<​code>​
 +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
 +</​code>​
 +
 +**Soluzione:​**\\
 +<file C 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++;
 +    }
 +  }
 +}
 +</​file>​

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?rev=1551188125&do=diff
/web/htdocs/www.skenz.it/home/data/pages/it/informatica/linguaggio_c/vettori_2.txt · Last modified: 2019/02/26 14:35 (external edit)

Privacy Policy