Документ взят из кэша поисковой машины. Адрес оригинального документа : http://al.cs.msu.ru/static/seminars/catfl/materials/task2.pdf
Дата изменения: Sun Sep 24 21:37:58 2006
Дата индексирования: Mon Oct 1 20:05:41 2012
Кодировка:
task2
1. . , (ctrl-D ), x. x x. ( ): x0 = 1, xi+1 = 1 x xi + , i = 0, 1, 2, . . . 2 xi

, |xi -xi+1 | . xi+1 . . printf() double. . 2. : x, an , an-1 , . . . , a0 . -- . a0 , . . . , an x (a0 -- , an -- xn ). . : , x 0 x. 3. i- : F0 = 0, F1 = 1, Fi = F
i-2

+F

i-1

, i = 0, 1, 2, 3, . . .

, . i, i-e , -- , . 4. double str2double( char str[] ); double. (. . " "), L (.. long double). . , , , ( . ), str2double() double , %.10g. . %s scanf. 5. " " . , malloc() 1


calloc(). , , ( ), . . , ( ). , . , , -- . 6. " " . , , , : +<. > -<. > ?<. > -- , , . , ; , (.) ( ). , Yes No , . 7. -, , '0'-'9', , . , . . , : <>::= <> + <> <>::= <> * <> <>::= 0|1|2|3|4|5|6|7|8|9| (<>) ( '-', , ), ( '/', , ), ( ^, , .. 2^1^2=2, 4, , -- ). -- , .
/* * * * */ , '0'-'9', '+', '*' '(', ')'. ( , '9'-'0'==9 , , ASCII

#include #include jmp_buf begin; /* */

2


char curlex;

/* */

void getlex(void); /* */ int expr(void); /* */ int add(void); /* */ int mult(void); /* */ void error(); /* main ( begin) */

main() { int result; setjmp(begin); printf("==>"); getlex(); result=expr(); if (curlex != '\n') error(); printf("\n%d\n",result); return 0; } void getlex() { while ( (curlex=getchar()) == ' '); } void error(void) { printf("\n!\n"); while(getchar()!='\n'); longjmp(begin,1); } int expr() { int e=add(); while (curlex == '+') { getlex(); e+=add();} return e; } int add() { int a=mult(); while (curlex == '*') { getlex(); a*=mult();} return a; } int mult() { int m; switch(curlex){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': m=curlex-'0'; break; case '(': getlex(); m=expr();

3


if (curlex == ')') break; /* - */ default : error(); } getlex(); return m; } /* * * * * * * ( ( getlex) ( err ( ) ) error() getlex() : - void) , ( , or). - ", " */



4