Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Симизации. С иллюстративной целью допускаются некоторые




варианты синтаксической записи. Предусмотрена возможность

Повторного задания ошибочных строк.

%token число Xi оптим

%%

злп:функционал '\n' система_ограничений

{final();}

| система_ограничений функционал '\n'

{ final();}

функционал: линейная_функция {stf();}

/* По умолчанию - минимизация */

| оптим '(' линейная_функция ')'

{if($1) conv(); stf();}

/* В случае максимизации выполнить conv() */

| линейная_функция '-''>' оптим

{if($4) conv();stf();}

линейная_функция: элем1

| линейная_функция элем;

элем: знак число Xi {stc($1*$2,$3); }

| знак Xi '*' число { stc($1*$4,$2);}

| знак Xi { stc($1,$2);}

/* Формы записи коэффициентов */

элем1: элем

| число Xi { stc($1,$2);}

| Xi '*' число { stc($3,$1);}

- 36 -

| Xi { stc(1,$1); }

знак: '+' {$$=1; }

| '-' {$$= -1;}

система_ограничений: ограничение '\n'

| система_ограничений ограничение '\n'

| система_ограничений error '\n'

{aclear();yyerrok;

printf("повторите последнюю строку\n");}

/* В случае ошибки: стирание инф. о строке,

восстановление и выдача подсказки */

ограничение: линейная_функция '=' число

{ stcb($3);}

| линейная_функция '=' знак число

{ if($3<0) conv(); stcb($4);}

/* Если bi<0, выполнить conv() */

%%

#include "stdio.h"

#define MAXM 100 /* предельное число */

#define MAXN 100 /* ограничений и перем.*/

int c[MAXN],b[MAXM],a[MAXM+1][MAXN],

neqs,nx,x[MAXN];

/* Лексический анализатор возвращает:

* для целых чисел - число,

* yylval равно знач. числа;

* для идент.вида xi, i=1,2,...XI*

* yylval равно его порядк. номеру;

* для max/min - оптим,

* yylval равно соответственно 1 или 0

*/

yylex() {

Char c,i;

while((c=getc(stdin))==' ');

switch(c) {

case'0':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9': yylval=c-'0';

while((c=getc(stdin))<='9'&&c>='0')

yylval=yylval*10+c-'0';






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных