Advertisement
Tankado95

Untitled

Apr 25th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //Funzioni da implementare
  5. int *leggiInput(int *dim){
  6. int n=0,i;
  7.     scanf("%d",&n);
  8. int *a=malloc(n*sizeof(int));
  9.         for(i=0;i<n;i++)
  10.             scanf("%d",&a[i]);
  11. *dim=n;
  12.  
  13.  
  14. return a;
  15. }
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. int *eliminaDup(int *vect, int dim, int *dim_nodup){
  24. int i=0,k,trovato=0, dimen=0,x=-1;
  25. int *a=malloc(dim*sizeof(int));
  26.     for(k=0;k<dim;k++){
  27.         i=k-1;
  28.         trovato=0;
  29.             while(trovato==0 && i>=0){{
  30.                 if(vect[k]==vect[i])
  31.                     trovato=1;
  32.                 }
  33.                 i--;
  34.                 }
  35.         if (trovato==0){
  36.             x++;
  37.             a[x]=vect[k];
  38.             dimen++;}
  39.     }
  40. *dim_nodup=dimen;
  41. return a;
  42. }
  43.  
  44. int ugualeASomma(int *vect,int dim){
  45. int i=0,j=0, somma=0, uguale=0;
  46.     while(i<dim && uguale!=1){
  47.        
  48.         while(j<dim && i<dim)
  49.             {
  50.             if (j!=i)
  51.                 somma=somma+vect[j];
  52.             j++;
  53.             }
  54. //printf("%d\n", somma);
  55.  
  56.         if (somma==vect[i])
  57.             uguale=1;
  58.         else uguale=0;
  59.         somma=0;
  60.         j=0;
  61.         i++;
  62.         }
  63. return uguale;
  64. }
  65.  
  66. int *maggioreDeiSuccessivi(int *vect, int dim){
  67. int *a=malloc(dim*sizeof(int));
  68. int i=0, j=0,mag=1;
  69.    
  70.     for (i=0;i<dim;i++){
  71.         mag=1;
  72.         j=i+1;
  73.         while(j<dim && mag==1){
  74.             if (vect[i]>vect[j])
  75.                 j++;
  76.             else mag=0;
  77.         }
  78.     if (mag==1)
  79.         a[i]=1;
  80.     else a[i]=0;
  81.     }
  82.  
  83. return a;
  84. }
  85.  
  86.  
  87. int main()
  88. {
  89.     int *input, *nodup, *results;
  90.     int dim, dim_nodup, i;
  91.  
  92.     //Legge l'input
  93.     input=leggiInput(&dim);
  94.     printf("Stampa dei valori in input: (%d valori)\n", dim);
  95.     for (i=0; i<dim; i++)
  96.         printf("%d\n",input[i]);
  97.  
  98.     //Elimina i duplicati
  99.     nodup=eliminaDup(input,dim,&dim_nodup);
  100.     printf("Stampa dei valori senza duplicati: (%d valori)\n", dim_nodup);
  101.     for (i=0; i<dim_nodup; i++)
  102.         printf("%d\n",nodup[i]);
  103.  
  104.     //Esegue ugualeASomma
  105.     printf("Risultato di ugualeASomma: %d\n", ugualeASomma(nodup,dim_nodup));
  106.  
  107.     //Esegue maggioreDeiSuccessivi
  108.     results=maggioreDeiSuccessivi(nodup,dim_nodup);
  109.     printf("Risultato maggioreDeiSuccessivi:\n");
  110.     for(i=0; i<dim_nodup; i++)
  111.         printf("%d\n",results[i]);
  112.  
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement