Advertisement
Stamenco

АПС - Средна вредност

Oct 31st, 2020 (edited)
2,680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.83 KB | None | 0 0
  1. / * Средна вредност */
  2. ------------------------------------------------------------------------------------------------------------------------------------------
  3. /* За дадена низа од N (1≤N≤50) природни броеви, да се најде бројот кој е најблиску до нивниот просек. Ако постојат два броја со исто растојание до просекот, да се врати помалиот од нив. На пример за низата 1, 2, 3, 4, 5 просекот е (1 + 2 + 3 + 4 + 5) / 5 = 15 / 5 = 3, што значи дека бројот кој треба да се врати и е најблиску до просекот е 3.
  4.  
  5. За низата 1, 2, 3, 4, 5, 6 просекот е 3.5 и двата броја 3 и 4 се на исто растојание од просекот. Точната вредност која треба да се врати е помалиот од нив, а тоа е 3.
  6.  
  7. Во низата може да има дупликати.
  8.  
  9. Првиот број од влезот е бројот на елементи во низата N, а потоа во секој ред се дадени броевите.
  10.  
  11. Име на класата (Java): Array
  12. **Забелешка:** Да се креира податочна структура низа и истата да се искористи во задачата.
  13. */
  14.  
  15. import java.io.BufferedReader;
  16. import java.io.IOException;
  17. import java.io.InputStreamReader;
  18.  
  19. public class Array<E> {
  20.  
  21.     private E niza[];
  22.     private int n;
  23.  
  24.     public Array(int n) {
  25.         this.niza = (E[]) new Object[n];
  26.         this.n = n;
  27.     }
  28.  
  29.     public void setElement(int pozicija, E element){
  30.         for(int i = 0;i < n; i++){
  31.             if(pozicija >= 0&&pozicija < n){
  32.                 niza[pozicija] = element;
  33.             }
  34.         }
  35.     }
  36.  
  37.     public E getElement(int pozicija){
  38.         if (pozicija >= 0 && pozicija < n) {
  39.                 return niza[pozicija];
  40.             }else {
  41.             System.out.println("Pozicijata vnesena ne e validna");
  42.             return null;
  43.         }
  44.     }
  45.  
  46.     public int findElement(E element){
  47.         for(int i = 0; i < n; i++){
  48.             if(niza[i].equals(element) == true){
  49.                 return i;
  50.             }
  51.         }
  52.         return -1;
  53.     }
  54.  
  55.     public int getN() {
  56.         return n;
  57.     }
  58.  
  59.     public static int brojDoProsek(Array<Integer> niza){
  60.         int suma=0,prosek=0;
  61.  
  62.         for(int i=0;i<niza.getN();i++){
  63.             suma = suma + niza.getElement(i);
  64.         }
  65.         prosek = suma / niza.getN();
  66.  
  67.         int min = Math.abs(niza.getElement(0) - prosek);
  68.         int index = 0;
  69.  
  70.         for(int i=1;i<niza.getN();i++){
  71.             if(Math.abs(niza.getElement(i) - prosek) < min){
  72.                 min = Math.abs(niza.getElement(i) - prosek);
  73.                 index = i;
  74.             }
  75.             if(Math.abs(niza.getElement(i)-prosek) == min)
  76.             {
  77.                 if( niza.getElement(i) < niza.getElement(index) )
  78.                 {
  79.                     min = Math.abs(niza.getElement(i)-prosek);
  80.                     index = i;
  81.                 }
  82.             }
  83.         }
  84.         if(min == 0){
  85.             return prosek;
  86.         }else{
  87.             return niza.getElement(index);
  88.         }
  89.     }
  90.  
  91.     public static void main(String[] args) throws IOException{
  92.         BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));
  93.         String s = stdin.readLine();
  94.         int N = Integer.parseInt(s);
  95.  
  96.         Array<Integer> niza = new Array<Integer>(N);
  97.         for(int i = 0; i < N; i++){
  98.             s = stdin.readLine();
  99.             niza.setElement(i,Integer.parseInt(s));
  100.         }
  101.  
  102.  
  103.         System.out.println(brojDoProsek(niza));
  104.     }
  105.  
  106.  
  107.  
  108. }
  109.  
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement