Моделька экономики
Dec. 21st, 2020 10:27 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
#!/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