Моделька экономики
#!/usr/bin/perl #plan_10.pl $Краткое_описание = ' 10 министерств(переделов) по 9 заводов в каждом заводы на переделе добавляют по 5 единиц стоимости при полных поставках сырья/комплектующих/полуфабрикатов При неполных - определяется по минимальной комплектации и поставляют по 1/10 заводам следующего министерства Министерство 0 - добыча полезных ископаемых министерства 10, 20, 30, 40, 50, 60, 70, 80, 90 - обрабатывающие предприятия ВВП - сумма по всем заводам Налоги изображает НДС' ;
$ЗАВОДОВ_В_МИНИСТЕРСТВЕ = 9 ;
$ПЛАН_ДОБЫЧИ = 10 ; # плановая добавленная стоимость предприятий добывающей отрасли
$ПЛАН_Д_С = 5 ; # плановая добавленная стоимость, создаваемая на каждом перерабатывающем заводе
$СТАВКА_НДС = 20/(100+20) ; # 20 % /
Показать_карту();
Составить_план();
Показать_план();
Производство();
Показать_факт();
exit;
sub Недопоставка{
$ОБЕСПЕЧЕНО_ФОНДАМИ = $ВАЛ[$МИНИСТЕРСТВО_ПОСТАВЩИК] / $ПЛАН[$МИНИСТЕРСТВО_ПОСТАВЩИК] ;
if ($ОБЕСПЕЧЕНО_ФОНДАМИ < 1 ){
$ФОНДЫ *= $ОБЕСПЕЧЕНО_ФОНДАМИ ;
}
}
sub Невыполнение_плана{
if ($ОБЕСПЕЧЕНО_ФОНДАМИ < 1 ){
# $ФОНДЫ *= $ОБЕСПЕЧЕНО_ФОНДАМИ ;
$ДОБ_СТОИМОСТЬ = $ПЛАН_Д_С * $ОБЕСПЕЧЕНО_ФОНДАМИ ;
}
$ДОБ_СТОИМОСТЬ *= 0.90 if $ЗАВОД == 15 ;
}
sub Показать_факт{
print 'Выполнение плана
';
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
printf " М-во %2g", $МИНИСТЕРСТВО ;
}
print "\n---------------------------------------------------------------------------\n" ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
printf "%8.2f", $ВАЛ[$ЗАВОД] ;
}
print "\n" ;
}
print "По министерствам\n" ;
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
printf "%8.2f", $ВАЛ[$МИНИСТЕРСТВО] ;
}
print "\n\n" ;
printf "ВВП = %9.2f \n", $ВВП ;
printf "НДС = %9.2f \n", $НДС ;
}
sub Производство{
# добыча первичного сырья
$МИНИСТЕРСТВО = 0 ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
$ВАЛ[$ЗАВОД] = $ПЛАН_ДОБЫЧИ ;
Невыполнение_плана();
$ДОБ_СТОИМОСТЬ = $ВАЛ[$ЗАВОД] ;
$ВАЛ[$МИНИСТЕРСТВО] += $ВАЛ[$ЗАВОД] ;
$ВВП += $ВАЛ[$ЗАВОД] ;
$НДС += $ДОБ_СТОИМОСТЬ * $СТАВКА_НДС;
}
# обрабатывающие производства
foreach $МИНИСТЕРСТВО(10, 20, 30, 40, 50, 60, 70, 80, 90){
$МИНИСТЕРСТВО_ПОСТАВЩИК = $МИНИСТЕРСТВО - 10 ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
$ФОНДЫ = $ВАЛ[$МИНИСТЕРСТВО_ПОСТАВЩИК] / $ЗАВОДОВ_В_МИНИСТЕРСТВЕ ;
Недопоставка();
$ДОБ_СТОИМОСТЬ = $ПЛАН_Д_С ;
Невыполнение_плана();
$ВАЛ[$ЗАВОД] = $ФОНДЫ + $ДОБ_СТОИМОСТЬ ;
$ВАЛ[$МИНИСТЕРСТВО] += $ВАЛ[$ЗАВОД] ;
$ВВП += $ВАЛ[$ЗАВОД] ;
$НДС += $ДОБ_СТОИМОСТЬ * $СТАВКА_НДС;
}
}
}
sub Показать_план{
print 'Государственный план
';
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
printf " М-во %2g", $МИНИСТЕРСТВО ;
}
print "\n---------------------------------------------------------------------------\n" ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
printf "%8g", $ПЛАН[$ЗАВОД] ;
}
print "\n" ;
}
print "Планы министерств\n" ;
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
printf "%8g", $ПЛАН[$МИНИСТЕРСТВО] ;
}
print "\n\n" ;
printf "ВВП_ПЛАН = %9.2f \n", $ВВП_ПЛАН ;
printf "НДС_ПЛАН = %9.2f \n", $НДС_ПЛАН ;
}
sub Составить_план{
# добыча первичного сырья
$МИНИСТЕРСТВО = 0 ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
$ПЛАН[$ЗАВОД] = $ПЛАН_ДОБЫЧИ ;
$ПЛАН[$МИНИСТЕРСТВО] += $ПЛАН[$ЗАВОД] ;
$ВВП_ПЛАН += $ПЛАН[$ЗАВОД] ;
$НДС_ПЛАН += $ПЛАН[$ЗАВОД] * $СТАВКА_НДС ;
}
# обрабатывающие производства
foreach $МИНИСТЕРСТВО(10, 20, 30, 40, 50, 60, 70, 80, 90){
$МИНИСТЕРСТВО_ПОСТАВЩИК = $МИНИСТЕРСТВО - 10 ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
$ФОНДЫ = $ПЛАН[$МИНИСТЕРСТВО_ПОСТАВЩИК] / $ЗАВОДОВ_В_МИНИСТЕРСТВЕ ;
$ПЛАН[$ЗАВОД] = $ФОНДЫ + $ПЛАН_Д_С ; # никаких недопоставок не планируется ;-)
$ПЛАН[$МИНИСТЕРСТВО] += $ПЛАН[$ЗАВОД] ;
$ВВП_ПЛАН += $ПЛАН[$ЗАВОД] ;
$НДС_ПЛАН += $ПЛАН_Д_С * $СТАВКА_НДС ;
}
}
}
sub Показать_карту{
print 'Карта экономики
';
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
printf " М-во %2g", $МИНИСТЕРСТВО ;
}
print "\n---------------------------------------------------------------------------\n" ;
foreach $НОМЕР(1..$ЗАВОДОВ_В_МИНИСТЕРСТВЕ){
# printf "министерство %2g ", $МИНИСТЕРСТВО ;
foreach $МИНИСТЕРСТВО(0, 10, 20, 30, 40, 50, 60, 70, 80, 90){
$ЗАВОД = $МИНИСТЕРСТВО + $НОМЕР ;
printf "%8g", $ЗАВОД ;
}
print "\n" ;
}
print "\n" ;
}
________________________________________
Эпикриз и обсуждение тут
https://new-rabochy.livejournal.com/736367.html?mode=reply#add_comment
Скачайте здесь
https://yadi.sk/d/AhcdKACg3U1z7A
архив (код программы, рассуждения, препроцессор), распакуйте и запускайте модельку командой
perl rupl2pl.pl plan_10.rupl > tmp.pl ; perl tmp.pl | iconv -f KOI8-R -t UTF-8
Этот пост изначально помещен в http://vlkamov.dreamwidth.org