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.


it:informatica:linguaggio_c:vettori_2 [2024/04/08 22:35] (current) – created - external edit 127.0.0.1
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                                       3
 + i cui elementi sono i rispettivamente in posizione
 + POS :                      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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki
Privacy Policy