Населені пункти
До участі в олімпіаді долучилися учасники з 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%
Ответы
Відповідь:
#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().