23:59

Life is a life... We are the humans...
время 23-57... завтра в школу... часов в 9 вспомнил, что задали 7 номеров по инфе... причём вспомнил не сам, а позвонил один товарищ и попросил списать... хм...

через полчаса, сделав инфу, с чистой совестью пошёл за комп играть... и тут похвонили ещё 2-е... хм... чё-то всем нужна информатика... приём именно я должен её сделать... ладно, я не жадный, пусть берут кому надо...



З.Ы. Кого интерисует, могу выложить задания...

Комментарии
01.02.2004 в 15:51

А ты паскаль знаешь?
01.02.2004 в 17:28

Life is a life... We are the humans...
Chloe Lou

я дельфи немного знаю... а дельфи это паскаль... если чё не сложное, то могу помчь в принципе...
01.02.2004 в 18:05

Mr.Hacker Несложное я тоже могу, спасибо...

01.02.2004 в 18:07

Life is a life... We are the humans...
Chloe Lou

а ты скажи, что надо, может помогу?
01.02.2004 в 18:11

(*type pvir=^vir;

vir=record

type:byte; {0 is a variable, 1 is a number}

next:pvir;

case byte of

0: (vn:char);

1: (val:integer);

end; *)

type pvar=^vvar;

vvar=record

vn:char;

val:integer;

next:pvar;

end;

var

vl,cur,vt:pvar; {variable list}

i,j,k:integer;

sign:byte; {0 < 1 = 2 > 3 <= 4 <> 5 >= }

s:string;

state:byte;

begin

assign(input,'hpp.in');

reset(input);

assign(output,'hpp.out');

rewrite(output);

state:=0;

vl:=nil;

while not eof(input) do begin

readln(s);

for j:=1 to length(s) do begin

if s[j]=' ' then continue;

if (s[j]=';') or (s[j]='.') then begin

case state of

255:; {invalid state, cleared}

4:

{completed an assignment operator}

cur^.val:=i+k;

$46:

case sign of

0: writeln(i<k);

1: writeln(i=k);

2: writeln(i>k);

3: writeln(i<=k);

4: writeln(i<>k);

5: writeln(i>=k);

end;

$82:writeln(i+k);

$81:writeln(i); {if there was no final number, write sum of vars}

end;

if s[j]='.' then break;

state:=0;

continue;

end;

case state of

0: begin {waiting for variable, ? or !}

case s[j] of

'?':begin

state:=$41; {waiting 1st var in condition}

i:=0;

sign:=0;

continue;

end;

'!': begin

state:=$80; {waiting expression}

i:=0;

end;

'A'..'Z',

'a'..'z': begin

state:=1;

cur:=vl;

while (cur<>nil) and (cur^.vn<>s[j]) do cur:=cur^.next;

if cur=nil then

if vl=nil then begin

new(vl);

vl^.vn:=s[j];

vl^.next:=nil;

vl^.val:=0;

cur:=vl

end else begin

vt:=vl;

while vt^.next<>nil do vt:=vt^.next;

new(cur);

cur^.vn:=s[j];

cur^.val:=0;

cur^.next:=nil;

vt^.next:=cur;

end; {generated new var}

i:=0; {holding sum of vars}

end; end; end;

1: begin {waiting '='}

if s[j]<>'=' then begin

writeln('Incorrect assigning operator!');

state:=255;

end else state:=2;

end;

2:

{waiting for var or number}

case s[j] of

'0'..'9': begin

sign:=0; {positive number}

state:=4;{reading rest of number}

k:=ord(s[j])-48;

end;

'-':begin

sign:=1;

state:=4;

k:=0;

end;

'a'..'z','A'..'Z':begin

state:=3; {waiting plus sign}

vt:=vl;

while (vt<>nil) and (vt^.vn<>s[j]) do

vt:=vt^.next;

if vt=nil then

writeln('Undefined varable ',s[j], 'assuming zero')

else i:=i+vt^.val;

end;

end;

3: if s[j]<>'+' then begin

writeln('Incorrect expression syntax!');

state:=255

end else state:=2;

4: if s[j] in ['0'..'9'] then

if sign>0 then k:=10*k-(ord(s[j])-48) else k:=10*k+ord(s[j])-48

else

writeln('Incorrect number format, ignored');

$41: if s[j] in ['A'..'Z','a'..'z'] then begin

cur:=vl;

while (cur<>nil) and(cur^.vn<>s[j]) do cur:=cur^.next;

if cur=nil then begin

writeln('Undefined variable in condition (',s[j],'), operator ignored');

state:=255;

end else begin

state:=$42;

i:=cur^.val;

end

end else begin

writeln('Variable expected');

state:=255;

end;

$42:

case s[j] of

'<':state:=$43; {<> or < or <=}

'=':begin

sign:=1; {=}

state:=$45;{waiting second var}

end;

'>':state:=$44;

else begin

state:=255;

writeln('Incorrect comparison sign');

end;

end;

$43:

case s[j] of

'>':begin {<>}

sign:=4;

state:=$45;

end;

'=':begin

sign:=3; {<=}

state:=$45;

end;

else begin

dec(j);

state:=$45;{re-parsing symbol}

sign:=0; {<}

continue;

end;

end;

$44:

if s[j]<>'=' then begin

dec(j);

sign:=2; {>}

state:=$45;

continue;

end else begin

sign:=5; {>=}

state:=$45;

end;

$45: if s[j] in ['A'..'Z','a'..'z'] then begin

cur:=vl;

while (cur<>nil) and(cur^.vn<>s[j]) do cur:=cur^.next;

if cur=nil then begin

writeln('Undefined variable in condition (',s[j],'), operator ignored');

state:=255;

end else begin

state:=$46;{completely parsed comparison}

k:=cur^.val;

end

end else begin

writeln('Variable expected');

state:=255;

end;

$80:

case s[j] of

'0'..'9': begin

sign:=0; {positive number}

state:=$82;{reading rest of number}

k:=ord(s[j])-48;

end;

'-':begin

sign:=1;

state:=$82;

k:=0;

end;

'A'..'Z','a'..'z':begin

vt:=vl;

while (vt<>nil) and (vt^.vn<>s[j]) do vt:=vt^.next;

if vt=nil then

writeln('Undefined varable ',s[j], 'assuming zero')

else i:=i+vt^.val;

state:=$81;{waiting plus sign}

end;

else begin

writeln('Variable expected');

state:=255;

end;

end;

$81:

if s[j]<>'+' then begin

writeln('Plus sign expected in expression written');

state:=255;

end else state:=$80;

$82: if s[j] in ['0'..'9'] then

if sign>0 then k:=10*k-(ord(s[j])-48) else k:=10*k+ord(s[j])-48

else begin

writeln('Incorrect number format, ignored');

state:=255;

end;

end; {case state}

end; {for}

end;

end.









Вот с этим разобраться...
01.02.2004 в 18:13

условие:

Интерпретатор языка Н++



Входной файл: hpp.in

Выходной файл: hpp.out

Время на один тест: 2 секунды

Компания "PascalMustDie" изобрела новый язык программирования — Н++. Данный

язык пока включает в себя только 3 операции:

1) Операция присваивания

Операция присваивания имеет следующий вид:

<имя переменной> = <выражение>

Выражение имеет вид:

<выражение> = <переменная> /<число> / <переменная> + <выражение>

2) Операция сравнения

Операция сравнения в языке Н++ может сравнивать только 2 переменные (не выражения).

Общий вид:

? <переменная_1> <знак сравнения> <переменная_2>, где

<знак сравнения> может быть ">", "<". "==", ">=", "<=", "<>"

Операция сравнения выводит на экран одно из слов — TRUE или FALSE.

3) Операция вывода на экран выражения

Общий вид: ! <выражение>

данная операция выводит на экран значение <выражения>

Любая переменная в языке программирования Н++ имеет свое имя, состоящее из

одной латинской буквы. Никакие две переменные не могут иметь одинаковое имя.

Однако, язык Н++ чувствителен к регистру. Так. например, переменныс А' и а' являются разными переменными. Все переменные языка Н++ являются переменными типа Integer.

Операции в языке Н++ отделяются друг от друга символом ";". При этом символ

« » (пробел) и символ переноса строки интерпретаторами Н++ игнорируются. Программа. написанная на языке Н++ заканчивается символом «.» (точка).

Ваша задача состоит в том, чтобы написать программу. которая по заданному

набору операций языка Н++ определит. что они выводят на экран.

Входной файл: Входным файлом является программа, написанная на языке Н++

Выходной файл: Ваша программа должна вывести в выходной файл результат

работы программы, написанной на языке Н++



01.02.2004 в 23:30

Life is a life... We are the humans...
Chloe Lou

лана, посмотрим...

тока я не понял, в чём проблема? этот код не рабтает? или надо понять механизм работы?
03.02.2004 в 12:37

Mr.Hacker Механизм...
03.02.2004 в 18:25

Life is a life... We are the humans...
Chloe Lou

ясна... лана, посмотрим... может помогу чем-нить...