• Объявить класс РАЙОН ГОРОДА, имеющий название, площадь, численность населения и позволяющий переименовывать район, а также изменять численность его населения и вычислять плотность населения.
    Объявить класс ГОРОД, представляющий собой набор районов и позволяющий вычислить среднюю площадь и среднюю численность населения районов города, а также самый плотно населенный район. Продемонстрировать работу всех методов.*/

Ответы 3

  • При необходимости присваивание легко заменяется вводом. Количество районов - произвольное.
    • Автор:

      sadiekim
    • 5 лет назад
    • 0
  • В общем, код получился довольно-таки объемным, поэтому сюда выкладывать его не буду, а приложу в файле.

    Язык программирования: C++

    Входные значения:

    Введите имя района: Новоильинский

    Введите площадь(в кв. км): 56

    Введите численность населения: 200000

    Введите имя района: Запсиб

    Введите площадь(в кв. км): 643  

    Введите численность населения: 454545  

    Введите имя района: Куйбышевский

    Введите площадь(в кв. км): 45

    Введите численность населения: 655433

    Введите имя района: Заводской

    Введите площадь(в кв. км): 7785

    Введите численность населения: 6776    

    Введите имя района: Центральный

    Введите площадь(в кв. км): 864

    Введите численность населения: 88546

    Средняя площадь районов = 1878.6

    Самый плотнонаселенный район: Куйбышевский

    Название 2-го района = Куйбышевский

    Работа методов класса District хорошо просматривается в вызове методов класса City, ибо они там же и выполняются.

    Количество районов - динамическое. Вы можете ввести с клавиатуры количество районов, а потом инициализировать их посредством метода init().

    Оценивайте. А от продвинутых жду критику.

    answer img
  • // PascalABC.NET 3.4.2, сборка 1790 от 15.09.2018

    // Внимание! Если программа не работает, обновите версию!

    type

     РайонГорода = class

     

     private

       Naim: string;

       S: real;

       Kol: integer;

       

       procedure SetNaim(NewName: string);

       begin

         if NewName.Length > 0 then Naim := NewName

       end;

       

       procedure SetKol(NewKol: integer);

       begin

         if NewKol > 0 then Kol := NewKol

       end;

     

     public

       property Название: string read Naim write SetNaim;

       property Площадь: real read S;

       property ЧисленностьНаселения: integer read Kol write SetKol;

       

       constructor(НаимРайона: string; Площадь: real; Население: integer);

       begin

         Naim := НаимРайона;

         S := Площадь;

         Kol := Население

       end;

       

       function ПлотностьНаселения := Round(Kol / S, 2);

       

       procedure ЗадатьИмя(НаимРайона: string);

       begin

         SetNaim(НаимРайона)

       end;

       

       procedure ЗадатьЧисленность(Население: integer);

       begin

         SetKol(Население)

       end;

     

     end;

     

     Город = class

     

     private

       City: string;

       Districts: List<РайонГорода>;

     

     public

       

       constructor(Город: string);

       begin

         Districts := new List<РайонГорода>;

         City := Город

       end;

       

       property НаселенныйПункт: string read City;

       

       procedure ДобавитьРайон(Район: string; Площадь: real; Проживает: integer);

       begin

         var R := new РайонГорода(Район, Площадь, Проживает);

         Districts.Add(R)

       end;

       

       function СредняяПлощадь := Districts.Select(d -> d.Площадь).Average;

       

       function СредняяЧисленность :=

       Districts.Select(d -> d.ЧисленностьНаселения).Average;

       

       function ГустонаселенныйРайон :=

       Districts.Select(d -> (d.Название, d.ПлотностьНаселения)).MaxBy(r -> r[1]);

       

       procedure ИзменитьНаименованиеРайона(s1, s2: string);

       begin

         var i := Districts.FindIndex(d -> d.Название = s1);

         if i >= 0 then Districts[i].ЗадатьИмя(s2)

       end;

       

       procedure ИзменитьЧисленностьРайона(s: string; n: integer);

       begin

         var i := Districts.FindIndex(d -> d.Название = s);

         if i >= 0 then Districts[i].ЗадатьЧисленность(n)

       end;

       

       procedure Вывод;

       begin

         Println('Сведения по городу', City);

         foreach var d in Districts do

           Println(d.Название, d.Площадь, d.ЧисленностьНаселения);

         Println('-' * 60)

       end;

     

     end;

    begin

     var GG := new Город('Просто город');

     GG.ДобавитьРайон('Ворошиловский', 30, 218439);

     GG.ДобавитьРайон('Железнодорошный', 69, 104339);

     GG.ДобавитьРайон('Кировский', 18.6, 63499);

     GG.ДобавитьРайон('Ленинский', 13, 821730);

     GG.Вывод;

     GG.ИзменитьНаименованиеРайона('Железнодорошный', 'Железнодорожный');

     GG.ИзменитьЧисленностьРайона('Ленинский', 82173);

     GG.Вывод;

     Println('Средняя площадь', GG.СредняяПлощадь);

     Println('СредняяЧисленность', GG.СредняяЧисленность);

     var (Район, Плотность) := GG.ГустонаселенныйРайон;

     Println('Наиболее густонаселен', Район, Плотность)

    end.

    answer img
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years