196040

NVD 1 kolokvium oop

Nov 25th, 2021
425
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /*
  3. Потребно е да се креира Tourist Guide онлајн алатка, која ќе овозможи на еден турист да ги пронајде најблиските и најдобрите хотели. Дадена ни е основната класа Object во која се информациите за:
  4.  
  5.     id-то (со хеширање на името)
  6.  
  7.     Име на објект (name)
  8.  
  9.     Бројот на години од кога е изграден објектот (years)
  10.  
  11.     Градот каде се наоѓа објектот (city)
  12.  
  13. Класата Hotel ги наследува карактеристиките на Object класата и воедно ги содржи и дополнителните информации:
  14.  
  15.      Колку ѕвезди има хотелот (stars)
  16.  
  17.     Рејтинг од клиентите на booking (rating)
  18.  
  19.  
  20. Функцијата get_rаting() →  Печати колкав е рејтингот на хотелот според:
  21.  
  22.     Ако има помалку или еднакво  2 ѕвезди, рејтинг од клиентите помал од 7 и постои помалку или еднакво 2 години → low rаting
  23.  
  24.     Ако има помалку или еднакво 2 ѕвезди, рејтинг од клиентите поголем или еднаков на 7 и постои повеќе од 2 години → average rаting
  25.  
  26.     Ако има 3 или 4 ѕвезди, рејтинг од клиентите помал од 7 и постои повеќе од 2 години → low rаting
  27.  
  28.      Ако има 3 ѕвезди, рејтинг од клиентите поголем или еднаков на 7 → average rаting
  29.  
  30.     Ако има 4 или 5 ѕвезди и рејтинг од клиентите поголем или еднаков на 7 → high rating
  31.  
  32.     Ако има 5 ѕвезди и рејтинг од клиентите помал од 7 → average rating
  33.  
  34.  
  35. Класата TouristGuide се состои од листа од хотели, каде е потребно да ги имплементирате следните функционалности:
  36.  
  37.     додади нов хотел (add_hotel): додавање хотел во листата
  38.  
  39.     проверка на рејтинг на хотелите (get_rating(city)): се проверуваат сите хотели кои се наоѓаат во градот даден како аргумент на функцијата. Излезот на оваа функција е печатење на имињата на хотелите со додаден рејтинг според функцијата (get_rаting()) со празно место. (секој хотел е даден во нов ред)
  40.  
  41.     проверка дали градот е туристичко место или не според бројот на хотели (tourist_place): се печати процентот на хотели во градот според формулата:
  42.  
  43.         број на хотели во градот/вкупен број хотели *100 (заокружено на две децимали)
  44.  
  45.     печати (print()): се печати секој хотел од листата
  46.     */
  47. class TouristGuide {
  48.   constructor() {
  49.     this.lista = [];
  50.   }
  51.   add_hotel(a) {
  52.     this.lista.push(a);
  53.   }
  54.   get_rating(city) {
  55.     var hotelgrad = 0;
  56.     var vkupnohoteli = 0;
  57.     for(var i=0; i<this.lista.length; i++) {
  58.       vkupnohoteli++;
  59.       if(this.lista[i].city == city) {
  60.         hotelgrad++;
  61.         console.log(this.lista[i].get_rating());
  62.       }
  63.     }
  64.   }
  65.   tourist_place(grad) {
  66.     var hotelgrad = 0;
  67.     var vkupnohoteli = 0;
  68.     for(var i=0; i<this.lista.length; i++) {
  69.       vkupnohoteli++;
  70.       if(this.lista[i].city == grad) {
  71.         hotelgrad++;
  72.       }
  73.     }
  74.     var help = hotelgrad / vkupnohoteli * 100;
  75.     console.log(grad + " is " + help.toFixed(2) + "% tourist place");
  76.     //    број на хотели во градот/вкупен број хотели *100 (заокружено на две децимали)
  77.   }
  78.   print() {
  79.     for(var i=0; i<this.lista.length;i++) {
  80.       var h = this.lista[i];
  81.       console.log("Hotel {")
  82.       for(var j in h) {
  83.         if(j=="name" || j == "city") {
  84.           console.log(j + ": " + "'" + h[j] + "',");
  85.           continue;
  86.         }
  87.         if(j == "rating") {
  88.           console.log(j + ": " + h[j] + " }");
  89.         }
  90.         else {
  91.         console.log(j + ": " + h[j] + ",");
  92.         }
  93.       }
  94.     }
  95.  
  96.   }
  97.   }
  98.   class Object {
  99.     constructor(name, years, city) {
  100.       this.name = name;
  101.       this.id=hashCode(name);
  102.       this.years = years;
  103.       this.city = city;
  104.     }
  105.   }
  106.   class Hotel extends Object {
  107.     constructor(name, years, city, stars, rating) {
  108.       super(name, years, city);
  109.       this.stars = stars;
  110.       this.rating = rating;
  111.     }
  112.     get_rating() {
  113.       if(this.stars <= 2 && this.rating <7 && years<=2) return "The hotel  " + this.name + " has low rating + oti ima <=2 stars i <7 raatoing i <=2 yrs";
  114.       if(this.stars <=2 && this.rating >= 7 && this.years >2) return "The hotel  "+ this.name + " has average rating";
  115.       if((this.stars==3 || this.stars==4) && this.rating < 7 && this.years > 2) return "The hotel  " + this.name + " has low rating";
  116.       if(this.stars ==3 && this.rating >=7) return "The hotel  " + this.name + " has average rating";
  117.       if(this.stars == 4 || this.stars == 5 && this.rating >=7) return "The hotel  " + this.name + " has high rating";
  118.       if(this.stars == 5 && this.rating < 7) return "The hotel  " + this.name + " has average rating"
  119.     }
  120.   }
  121.   var hashCode = function(s){
  122.     return  String(s).split("").reduce(function(a,b){a=((a<<3)-a)+b.charCodeAt(0);return a&a},0);
  123.   }
RAW Paste Data