Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- / * Средна вредност */
- ------------------------------------------------------------------------------------------------------------------------------------------
- /* За дадена низа од N (1≤N≤50) природни броеви, да се најде бројот кој е најблиску до нивниот просек. Ако постојат два броја со исто растојание до просекот, да се врати помалиот од нив. На пример за низата 1, 2, 3, 4, 5 просекот е (1 + 2 + 3 + 4 + 5) / 5 = 15 / 5 = 3, што значи дека бројот кој треба да се врати и е најблиску до просекот е 3.
- За низата 1, 2, 3, 4, 5, 6 просекот е 3.5 и двата броја 3 и 4 се на исто растојание од просекот. Точната вредност која треба да се врати е помалиот од нив, а тоа е 3.
- Во низата може да има дупликати.
- Првиот број од влезот е бројот на елементи во низата N, а потоа во секој ред се дадени броевите.
- Име на класата (Java): Array
- **Забелешка:** Да се креира податочна структура низа и истата да се искористи во задачата.
- */
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Array<E> {
- private E niza[];
- private int n;
- public Array(int n) {
- this.niza = (E[]) new Object[n];
- this.n = n;
- }
- public void setElement(int pozicija, E element){
- for(int i = 0;i < n; i++){
- if(pozicija >= 0&&pozicija < n){
- niza[pozicija] = element;
- }
- }
- }
- public E getElement(int pozicija){
- if (pozicija >= 0 && pozicija < n) {
- return niza[pozicija];
- }else {
- System.out.println("Pozicijata vnesena ne e validna");
- return null;
- }
- }
- public int findElement(E element){
- for(int i = 0; i < n; i++){
- if(niza[i].equals(element) == true){
- return i;
- }
- }
- return -1;
- }
- public int getN() {
- return n;
- }
- public static int brojDoProsek(Array<Integer> niza){
- int suma=0,prosek=0;
- for(int i=0;i<niza.getN();i++){
- suma = suma + niza.getElement(i);
- }
- prosek = suma / niza.getN();
- int min = Math.abs(niza.getElement(0) - prosek);
- int index = 0;
- for(int i=1;i<niza.getN();i++){
- if(Math.abs(niza.getElement(i) - prosek) < min){
- min = Math.abs(niza.getElement(i) - prosek);
- index = i;
- }
- if(Math.abs(niza.getElement(i)-prosek) == min)
- {
- if( niza.getElement(i) < niza.getElement(index) )
- {
- min = Math.abs(niza.getElement(i)-prosek);
- index = i;
- }
- }
- }
- if(min == 0){
- return prosek;
- }else{
- return niza.getElement(index);
- }
- }
- public static void main(String[] args) throws IOException{
- BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));
- String s = stdin.readLine();
- int N = Integer.parseInt(s);
- Array<Integer> niza = new Array<Integer>(N);
- for(int i = 0; i < N; i++){
- s = stdin.readLine();
- niza.setElement(i,Integer.parseInt(s));
- }
- System.out.println(brojDoProsek(niza));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement