Задача:
Среднегодовая производительность труда
За первый год производительность труда на предприятии возросла на [latex]p[/latex]1[latex]%[/latex], за второй и третий — соответственно на [latex]p[/latex]2[latex]%[/latex] и [latex]p[/latex]3[latex]%.[/latex] Найти среднегодовой прирост производительности (в процентах).
P1(%) | P2(%) | P3(%) | Р (среднегодовой прирост производительности) (%) |
50 | 68 | 34 | 50.03 |
0 | 25 | 75 | 29.81 |
-25 | 25 | 78 | 18.61 |
0 | -25 | 0 | -9.14 |
1.4 | 43 | 0.7 | 13.45 |
Код программы на С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <math.h> using namespace std; int main() { double p1, p2, p3, p, a; printf("Plese, write percentages of productivity: \n "); scanf("%lf %lf %lf", &p1, &p2, &p3); a=(p1/100+1)*(p2/100+1)*(p3/100+1); a=pow(a,1.0/3); p=100*(a-1); printf("Productivity: %.2lf%%", p); return 0; } |
Код программы на Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.*; import java.lang.*; import java.io.*; import java.lang.Math; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); double p1, p2, p3, p, a; p1=in.nextDouble(); p2=in.nextDouble(); p3=in.nextDouble(); a=(p1/100+1)*(p2/100+1)*(p3/100+1); a=Math.pow(a,1.0/3); p=100*(a-1); System.out.printf("Productivity: %8.2f", p); } } |
Алгоритм задачи предельно прост.
Пользователь задает нам три показателя прироста производительности на предприятии, за каждый год соответственно.
Предположим, что производительность труда в году, предшествующему увеличению, это [latex]a[/latex], тогда в следующем году прирост будет вычисляться по формуле [latex]a\cdot \left( \frac { { p }_{ n } }{ 100 } +1 \right)[/latex], где [latex]{ p }_{ n }[/latex] это показатель прироста производительности за соответствующий год.
Учитывая, что для каждого следующего года показатель [latex]a[/latex] это производительность за предыдущий год, мы получим формулу:
[latex]p=\left( \sqrt [ 3 ]{ (\frac { { p }_{ 1 } }{ 100 } +1)\cdot (\frac { { p }_{ 2 } }{ 100 } +1)\cdot (\frac { { p }_{ 3 } }{ 100 } +1) } -1 \right) \cdot 100[/latex].Подставляя в формулу соответствующие значения мы с легкостью получим результат.
В первом абзаце p1, p2, p3 -цифры должны быть индексами.
мы получим через форумулу :
во-первых, форумулу ??? (это не единственная опечатка в тексте, см. внимательнее).
во-вторых сама формула совсем некорректно отображается.
Лучше использовать double, а не float, т.к. double точнее.
Ну и самое главное, похоже Вы получили не среднегодовой, а общий процент производительности. Про среднегодовой процент прироста производительности см. напр. здесь .
Исправил. Спасибо большое.
Не пишите * в LaTeX формуле! Умножение обозначается маленькой точкой.
0.33333333? А не лучше ли 1.0/3 ?
Как Вы вывели формулу для p? Откуда она следует? Нужно кратко расписать.
Могу показаться нудным, но все же, в последней формуле у Вас встречается p1, p2, p3, причем цифры не являются индексами, хотя должны.
Зачёл, но…
Устал писать про расстановку пробелов и знаков препинания. Просто расставил их сам. Для образца.
А Вы посмотрите этот текст и используйте в дальнейшем.
Экспресс-проверка, 5 баллов.