Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.13 KB | None | 0 0
  1. /*
  2.  
  3. Esercitazione del 30 marzo 2020
  4. Leggere in input una sequenza di numeri reali.
  5. Individuare tutte le sotto-sequenze (prive di intersezione) in cui la somma degli elementi sia
  6. minore della media tra l’elemento massimo e minimo dell’intera sequenza.
  7. Stampare le sotto-sequenze individuate
  8.  
  9. 2  4  6 66 8 3 55    dim=7
  10. min= 2
  11. max= 66
  12. media= 34
  13. sottosequenza=  2 4 6   8 3
  14.  
  15. N.B.
  16. Realizzare pseudocodice e codice in linguaggio C, e inviare tutto via e-mail entro le 17.30.
  17. Ricordatevi le convenzioni per nominare i file e rispettate l’ orario
  18.  
  19. */
  20.  
  21. //Librerie
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24.  
  25. //Costanti
  26. #define D1 50
  27. #define D2 20
  28.  
  29.  
  30.  
  31. //Prototipi
  32. int Scrittura(int vet[] , int dim );
  33. int Minimo(int vet[], int dim);
  34. int Massimo(int vet[], int dim);
  35. int Media( int min , int max );
  36. int IndividuaSottoSequenze( int vet[] , int dim ,int m ,int vett[] );
  37.  
  38.  
  39.  
  40. int main(void) {
  41.  
  42.     //dichiarazioni variabili
  43.  
  44.     int Sequenza[D1];
  45.     int Sotto_Sequenza[D2] = { 0 };
  46.     int dim;
  47.     int i;
  48.     int j;
  49.     int valore_minimo;
  50.     int valore_massimo;
  51.     int media;
  52.     int nullo= 0;
  53.  
  54.  
  55.  
  56.     //Fase di input
  57.  
  58.     printf("\nInserisci la dimensione: ");
  59.     scanf("%d",&dim);
  60.     printf("\n\n");
  61.  
  62.     Sequenza[dim] = Scrittura(Sequenza , dim);
  63.  
  64.     //lettura di verifica
  65.  
  66.     i=0;
  67.     while(i<dim){
  68.  
  69.         printf("%d\t",Sequenza[i]);
  70.         i++;
  71.     }
  72.  
  73.  
  74.  
  75.     //Fase di elaborazione
  76.  
  77.     valore_minimo = Minimo(Sequenza,dim);
  78.     printf("\nvalore minimo: %d\n",valore_minimo);
  79.  
  80.     valore_massimo = Massimo(Sequenza,dim);
  81.     printf("\nvalore massimo: %d\n",valore_massimo);
  82.  
  83.     media= Media( valore_minimo ,valore_massimo );
  84.     printf( "\nmedia: %d\n" , media );
  85.  
  86.  
  87.  
  88.     Sotto_Sequenza[dim] = IndividuaSottoSequenze( Sequenza , dim , media , Sotto_Sequenza );
  89.  
  90.  
  91.  
  92.  
  93.     //Fase di output
  94.  
  95.     //lettura della sottosequenza
  96.  
  97.     printf("\n\n");
  98.  
  99.     printf("Le sottosequenze individuate: \n\n");
  100.  
  101.     j=0;
  102.         while(j<dim-1){
  103.             if(Sotto_Sequenza[j]==nullo){
  104.  
  105.                 printf("\t");
  106.                 j=j+1;
  107.             }
  108.  
  109.  
  110.             printf("%d\t",Sotto_Sequenza[j]);
  111.             j=j+1;
  112.         }
  113.  
  114.  
  115.  
  116.  
  117.     return 0;
  118. }
  119. int Scrittura(int vet[] , int dim ){
  120.     int i;
  121.     i=0;
  122.     while(i<dim){
  123.  
  124.         printf("(%d): ",i);
  125.         scanf("%d",&vet[i]);
  126.  
  127.         i++;
  128.     }
  129.  
  130.     return *vet;
  131.  
  132. }
  133. int Minimo(int vet[], int dim){
  134.  
  135.     int i=0;
  136.  
  137.     int min= vet[i];
  138.  
  139.  
  140.     i=0;
  141.     while(i<dim){
  142.  
  143.         if( vet[i] < min ){
  144.  
  145.             min = vet[i];
  146.  
  147.         }
  148.         i++;
  149.     }
  150.  
  151.  
  152.  
  153.     return min;
  154.  
  155. }
  156. int Massimo(int vet[], int dim){
  157.  
  158.     int i=0;
  159.     int max= vet[i];
  160.  
  161.  
  162.         i=0;
  163.         while(i<dim){
  164.  
  165.             if( vet[i] > max ){
  166.  
  167.                 max = vet[i];
  168.  
  169.             }
  170.             i++;
  171.         }
  172.  
  173.  
  174.  
  175.         return max;
  176.  
  177.  
  178.  
  179.  
  180.  
  181. }
  182. int Media( int min , int max ){
  183.  
  184.     int media_valore;
  185.     media_valore= ( min + max ) / 2;
  186.     return media_valore;
  187. }
  188.  
  189. int IndividuaSottoSequenze( int vet[] , int dim , int m , int vett[] ){
  190.  
  191.     int i= 0;
  192.     int s= 0;
  193. //2  4  6 66 8 3 55    dim=7
  194.  
  195.     do{
  196.  
  197.         s= s+vet[ i ];//somma ricorsiva per controllare i valori da inserire nella  sottosequenza
  198.  
  199.         if(s<m){
  200.  
  201.  
  202.         printf( "%d\t" , vet[ i ] );
  203.         vett[ i ] = vet[ i ];
  204.  
  205.  
  206.         }
  207.  
  208.         if(s >= m ){
  209.  
  210.             printf( "vet[%d] = %d\t" , i , vet[ i ] );
  211.             s= 0;
  212.             vett[i]= s;
  213.  
  214.  
  215.         }
  216.  
  217.         i=i+1;
  218.  
  219.     }while(i<dim);
  220.  
  221.  
  222.     return *vett;
  223.  
  224.  
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement