Предмет: Информатика, автор: hiuguiuihikl

Населені пункти
До участі в олімпіаді долучилися учасники з N населених пунктів. Відома кількість учасників від i-ого (1 ≤ i ≤ N) населеного пункту. Для кожного населеного пункту визначте, який від нього відсоток учасників бере участь в олімпіаді по відношенню до загальної кількості учасників олімпіади.

Вхідні дані
У першому рядку знаходиться натуральне число N (1 ≤ N ≤ 1000000) – кількість населених пунктів. У другому рядку знаходиться N чисел – кількість учасників з i-ого населеного пункту (1 ≤ i ≤ N).

Вихідні дані
N чисел, де кожне число означає відсоток учасників від і-ого населеного пункту (1 ≤ i ≤ N). Кожне число виводяться з точністю до другого дробового знаку і завершуються символом «%».

Вхідні дані #2
4
10 4 10 6
Вихідні дані #2
33.33% 13.33% 33.33% 20.00%

Ответы

Автор ответа: lozromanik
0

Відповідь:

#include<iostream>

#include<iomanip>

class Task{

int total_cities;

double sum  = 0;

double *cities;

public:

Task(){

std::cout<<"Enter quantity of cities:"<<std::endl;

std::cin>>total_cities;

cities = new double[total_cities];

}

~Task(){

 delete[] cities;}

void input(){

for( int i= 0;i<total_cities;i++){

 std::cout<<"Enter people for "<<i+1<<" city:"<<std::endl;

 std::cin>>cities[i];

 sum+=cities[i];

 }

}

void output(){

 std::cout.setf(std::ios::fixed);

 std::cout<<std::setprecision(2);

 for( int i = 0;i<total_cities;i++){

  std::cout<<"Percentage for "<<i+1<<" city equals "<<100/(sum/cities[i])<<"%"<<std::endl;}

 }

};

int main()

{

Task task;

task.input();

task.output();

return 0;

}

Пояснення:

Обрана мова програмування - С++.

Я вирішив завдання запхати в клас. Клас має:поле кількості населених пунктів total_cities,змінну-суматор sum,вказівник cities для подальшого виділення динамічної пам'яті з його допомогою, 2 відкритих методи input() та output(), а також конструктор і деструктор. Конструктор Task() займається вводом кількості населених пунктів та створенням динамічного масиву cities для зберігання кількості учасників для кожного міста. Метод input() вводить для кожного населеного пункту значення, а так само додає його до змінної-сумматора sum.

Метод output() виводить значення у відсотках для кожного населеного пункту з 2 значеннями після коми.

Деструктор ~Task() перед знищенням об'єкту вивільняє раніше виділену динамічну пам'ять масиву cities.

У функції main() створюється об'єкт, і для цього об'єкту викликаються методи input() та output().

Похожие вопросы