Jordimario

EserciziJava

Oct 31st, 2021 (edited)
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.93 KB | None | 0 0
  1. //Libraries
  2. import java.io.*;
  3. import java.net.*;
  4. import java.util.*;
  5.  
  6. public class EserciziJava{
  7.  
  8. /*
  9.     * scrivere un metodo, detto frequences, che, dato in input un array a di numeri interi non vuoto, restituisca l'array delle frequenze degli elementi distinti di a, in ordine crescente dei valori degli elementi. Ad esempio, con input il vettore {1,6,5,8,6,6,8,5,3,1,6,8}, il metodo deve restituire l'array {2,1,2,4,3}, in quanto il valore 1 appare due volte, il 3 una volta, il 5 due volte, il 6 quattro volte e l'8 tre volte. L'array in input non deve
  10.     Esempi
  11. Input: {1,6,5,8,6,6,8,5,3,1,6,8}
  12. Output: {2,1,2,4,3}
  13.  
  14. Input: {6,6,6,6}
  15. Output: {4}
  16.  
  17. Input: {3,5,6,2}
  18. Output: {1,1,1,1}
  19.  * */
  20.   public int[] freq(int a[]){
  21.  
  22. //Dichiarazione
  23.  int i=0;
  24.  int m=0;
  25.  int k=0;
  26.  
  27. //Ordinamento BubbleSort
  28. for(i=0;i<a.length-1;i++){   ///il ciclo si ripeterà finche l'array non sarà visualizzato del tutto
  29.     if(a[i]>a[i+1]){///se il numero accanto è maggiore del numero precedente significa che l'array è in ordine crescente per il momento
  30.       //System.out.println(a[i]+">"+a[i+1]);
  31.       //XOR trick, scambio i valori senza dichiare una varibile di supporto
  32.         a[i] ^= a[i+1];
  33.         a[i+1] ^= a[i];
  34.         a[i] ^= a[i+1];
  35.         i=0;                ///riparto da capo
  36.     }
  37. }
  38.  
  39. //Conto i numeri uguali
  40. for(i=0;i<a.length-1;i++){
  41.   k++;
  42.     if(a[i]!=a[i+1]){a[m]=k;m++;k=0;}
  43. }
  44. a[m]=k+1;
  45.  
  46. //Creazione di nuovo array per la soluzione
  47.     int[] b = new int[m+1];
  48. while(m>=0) {
  49.   b[m]=a[m];
  50.   m--;
  51. }
  52.     System.out.println(Arrays.toString(b)); //Stampa il risultato velocemente
  53.     return b;
  54.   }
  55.  
  56.   /****|Unique|****//*
  57.    * scrivere un metodo, chiamato unique, che dato in input un array a di numeri interi positivi (eventualmente vuoto), restituisca l'array (eventualmente vuoto) contenente gli elementi di a che appaiono una sola volta
  58.    * Esempi
  59. Input: {32,23,12,23,15,32}
  60. Output: {12,15}
  61.  
  62. Input: {127,34,45,56,34,127,23,45,12,56,23}
  63. Output: {12}
  64.  
  65. Input: {20,11,15,41,23}
  66. Output: {20,11,15,41,23}
  67.  
  68. Input: {127,34,45,56,34,127,23,45,12,56,23,12}
  69. Output: {}
  70.  
  71. Input: {}
  72. Output: {}
  73.                      * */
  74.   public int[] unique(int a[]){
  75.     int i; //contatore a[]
  76.     int j; //contatore a[]
  77.     int m=0; //lunghezza nuovo array b[]
  78.  
  79.     //Controllo Array
  80. for(j=0;j<a.length;j++){
  81.   if(a[j]!=-1){
  82.     for(i=0;i<a.length;i++){
  83.       if(a[j]==a[i] && i!=j)
  84.         a[j]=a[i]=-1; //levo i due valori uguali      
  85.     }
  86.     if(a[j]!=-1) m++;
  87.     }
  88. }
  89.  
  90. //Creazione di nuovo array per la soluzione
  91.     int[] b = new int[m];
  92.     for(i=a.length-1;i>0;i--){
  93.     if(a[i]!=-1){b[--m]=a[i];}
  94.  
  95.     }
  96.  
  97.     System.out.println(Arrays.toString(b)); //Stampa il risultato velocemente
  98.   return b;
  99. }
  100.  
  101. public int scalarProduct(int[] a, int[] b) {
  102.   int len=a.length ;
  103.   int sum=0;
  104.  
  105.   while(len--!=0) sum+=a[len]*b[len];
  106.   System.out.println("la somma è "+sum);
  107.  
  108.   return sum;
  109. }
  110.  
  111.  
  112.  
  113. }
Add Comment
Please, Sign In to add comment