vlkamov: Рембрандт. Автопортрет с широко открытыми глазами. (Default)
[personal profile] vlkamov
#!/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



Profile

vlkamov: Рембрандт. Автопортрет с широко открытыми глазами. (Default)
vlkamov

June 2025

S M T W T F S
1 2 3 4 5 67
8 9 10 11 1213 14
15 161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 05:59 pm
Powered by Dreamwidth Studios