Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gener.docx
Скачиваний:
1
Добавлен:
20.07.2019
Размер:
176.74 Кб
Скачать

Інтерфейс програми

read k - зчитати k

read T - зчитати T

read n - зчитати n

gen mas - згенерувати масив

lin - виконати лініарізацію

gis - вивести гістограму

out res - вивести результат

gen html - згенерувати HTML файл

open html – відкрити HTML файл

exit - завершити роботу програми

help - видати підказку допомога

На початку програми слід правильно ввести значення k, T, n, після чого ми маємо змогу виконати генерацію масиву, лініарізацію, генерування HTML файлу… У разі введення неправильної команди, програма видасть повідомлення “WRONG COMMAND”, команди слід вводити після появлення на екрані текстової підказки “C:\>” . У разі неможливості виконання певної команди програма видасть повідомлення у якому буде вказана можлива помилка.

Література

  1. Лаптев В.В.(2004). C++ экспресс-курс. Санкт-Петербург: Видавництво БХВ-Петербург.

  2. А.Б. Ставровський, Т.О. Карнаух «Програмування. Перші кроки», Москва, «Диалектика», 2005.

  3. Б. Страуструп «Язык программирования C++», Київ, «Диасофт», 1993.

  4. Дисперсія. http://uk.wikipedia.org/wiki/Дисперсія

  5. Гістограма. http://uk.wikipedia.org/wiki/Гістограма

  6. Метод Ньютона. http://algolist.manual.ru/maths/count_fast/sqrt.php

  7. HTML уроки. http://ab-w.net/HTML/HTML.php

  8. HTML. http://uk.wikipedia.org/wiki/Елементи_HTML

Додатки

Специфікація С++

  1. <P>::={<FILE>}

  2. <FILE>::={<VD>|<FD>|<FVD>|<FFD>}

  3. <PP>::={<PPF>}

  4. <PPF>::={<Text><PPD><Text>}

  5. <PPD>::=<#>(<include>|<define>|<ifndef>)

  6. <include>::=’include’ (<”><file_name><”>|’<’<file_name>’>’)

  7. <define>::=(<MI><Text>|<MI>’(’<MIPL>’)’<Text>)

  8. <ifndef>::=’ifndef’ <I><Text>[<#>’else’<Text>]<#>’endif’

  9. <FVD>::=’extern’<IT>

  10. <FFD>::=<FD>

  11. <VD>::=<IT><IV>{’,’<IV>}’;’

  12. <IV>::=<I>

  13. <IT>::=’int’|’char’

  14. <IF>::=<I>

  15. <FD>::=(<IT>|’void’)<IF> ’(’{<PL>}’)’’{’<SS>’}’

  16. <PL>::=<IT><IV>{’,’ <IT><IV>}

  17. <SS>::=’{’{<VD>}{<S>}’}’

  18. <S>::=<SS>|<S-return>|<S-if>|<S-while>|<S-for>|<Block>

  19. <Block>::=’{’{<S>}’}’

  20. <S-return>::=’return’ ’(’<E>’)’’;’

  21. <S-if>::=’if’ ’(’<E>’)’<S>[’else’ <S>]

  22. <S-while>::=’while’ ’(’ <E> ’)’ <S>

  23. <S-for>::=’for’ ’(’<E1>’;’<E2>’;’<E3>’)’ <S>

  24. <E1>::=<E>

  25. <E2>::=<E>

  26. <E3>::=<E>

  27. <A>::=<IT>’(’[<E>{’,’<E>}]’)’|<Const>|<I>|’(’<E>’)’|<I>’=’<E>| <E>’?’<E>’:’<E>|<LV><=><E>|<LV><--++>|<++--><LV>

  28. <LV>::=<IV>|’*’ ’(’<E>’)’|<IA>’[’<E>’]’

  29. <E>::=<D>{<+ -><D>}

  30. <D>::=<M>{<* / %><M>}

  31. <M>::=<A>[<^><M>]

  32. <I>::=<ch>{<Ts>|<ch>}

  33. <Const>::=’\’’<ch>’\’’|[’-’]<Ts>{<Ts>}|’\”’ {(<ch>|<Ts>)}’\”’| <ch>{(<ch>|<Ts>)}|<D>|<C8>|<C16>

  34. <ch>::=’A’|…|’Z’|’_’

  35. <Ts>::=’0’|…|’9’

  36. <D>::={<Ts>}’.’{<Ts>}[(’E’|’e’)(|’-’)<Ts>{<Ts>}]

  37. <C8>::=’0’<Ts8>{<Ts8>}

  38. <Ts8>::=’0’|…|’7’

  39. <C16>::=(’0x’|’0X’)<Ts16>{<Ts16>}

  40. <Ts16>::=’0’|…|’9’|’A’|…|’F’

Код програми

Fibonachi.c”

  1. unsigned int F1,F2;

  2. void initfib(){F1=34; F2=55;};

  3. unsigned int fib(){

  4. return(F1=(F2+=F1)-F1);

  5. }

  6. unsigned int r(int k){

  7. return (fib()%k);

  8. }

Html.c”

  1. #include <stdio.h>

  2. #define max(X,Y) qmax=(X>Y?X:Y)

  1. void GenHTML(int k, int *A,int T){

  2. int i,j,qmax;

  3. int mas[1000];

  4. qmax=0;

  5. char s[5]="";

  6. for(j=k*k;j--;mas[j]=0);

  7. for(i=T;(i--)>1;mas[l(2,A+T-i-1)]++);

  8. for(i=0;i<k*k;i++) max(qmax,mas[i]);

  9. //for(i=0;i<k*k;i++) max(qmax,(100*mas[i])/(T-1));

  10. FILE *fp;

  11. fp=fopen("index.html","w");

  12. fprintf(fp,"<HTML>\n");

  13. fprintf(fp,"<body>\n");

  14. fprintf(fp,"<table width=""\"100%%""\" height=""\"100%%""\" border=""\"0""\" cellspacing=""\"1""\" cellpadding=""\"4""\">\n");

  15. for(i=0;i<k;i++){

  16. fprintf(fp,"<tr>\n");

  17. for(j=0;j<k;j++){

  18. fprintf(fp," <td align=""\"middle""\" bgcolor=#00%s00> %d%</td>\n",color(mas[i*k+j],qmax,s),mas[i*k+j]);

  19. }

  20. fprintf(fp,"</tr>\n");

  21. }

  22. fprintf(fp,"</table>\n");

  23. fprintf(fp,"</body>\n");

  24. fprintf(fp,"</HTML>\n");

  25. fclose(fp);

  26. return;

  27. }

Func.c”

  1. extern const int L;

  2. extern int k;

  3. extern int T;

  4. char* color(int a,int imax,char *s)

  5. {

  6. int q;

  7. q=(a*255)/imax;

  8. //q=255*((100*a)/imax)/100;

  9. s[0]=(q/16>=10)?('A'+q/16-10):('0'+q/16);

  10. s[1]=(q%16>=10)?('A'+q%16-10):('0'+q%16);

  11. return s;

  12. }

  13. int l(int n,int *x){

  14. int *xi;

  15. int xl;

  16. for(xl=0,xi=x;n--;xl=xl*k+*(xi++));

  17. return (xl);

  18. }

  19. int isqrt(int n){

  20. int x;

  21. x=n;

  22. if (n!=0)while((x=x)-(x=((x+n/x)/2))>1);

  23. else return (0);

  24. return(x);

  25. }

  26. int ipow(int k, int n){

  27. int z=1,i;

  28. for(i=0;(i++)<n;z*=k);

  29. return(z);

  30. }

  31. void Fillchar(int *a){

  32. int i;

  33. for(i=L;i--;*(a+i)=0);

  34. return;

  35. }

  36. void GenMas(int *a){

  37. initfib(34,55);

  38. int i;

  39. for(i=T;i--;*(a+T-i-1)=r(k));

  40. return;

  41. }

  42. int liniarizatsia(int *a,int *b,int n,int T){

  43. int i,max;

  44. for(i=T;(i--)>(n-1);b[l(n,a+T-i-1)]++);

  45. for(max=L;b[max]==0;--max);++max;

  46. return (max);

  47. }

  48. void outGis(int *B,int k,int n){

  49. int i,j;

  50. for (i=0;i<ipow(k,n);i++){

  51. printf(" | (");for(j=n;(j--)-1;printf("%2d,",(i/ipow(k,j))%k));printf("%2d",i%k); printf(") |%3d| ",*(B+i));

  52. for(j=*(B+i);j>0;--j)printf("*");

  53. printf("\n");

  54. }

  55. return;

  56. }

  57. void res(int *B,int k,int n, int max,int T){

  58. int i,j,S,Mb;

  59. S=T/ipow(k,n);

  60. Mb=0;

  61. for (i=0;i<ipow(k,n);i++){

  62. if (Mb<abs(*(B+i)-S)) Mb=abs(*(B+i)-S);

  63. }

  64. int suma;

  65. i=0;suma=0;

  66. while(i<max){

  67. suma+=(*(B+i)-S)*(*(B+i)-S);

  68. ++i;

  69. }

  70. printf(" Result: %d%%\n",(Mb!=0 && k!=1)?((100*Mb*k)/suma):0);

  71. return;

  72. }

  73. int in()

  74. {

  75. int x=0;

  76. scanf("%d",&x);

  77. return(x!=0?x:1);

  78. }

  79. void pid()

  80. {

  81. printf("C:\\> ");

  82. }

Main.c”

  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #define ngets(n,s) fgets(s,n,stdin)

  4. const int L=100000;

  5. int k,T;

  6. int eq(char* S1, char* S2){

  7. int i;

  8. i=0;

  9. while(S1[i]!='\n' || S2[i]!=' '){

  10. if(S1[i]!=S2[i]) return 0;

  11. i++;

  12. }

  13. return 1;

  14. }

  15. int main(){

  16. int A[L],B[L];

  17. Fillchar(A); Fillchar(B);

  18. unsigned S,i,j,n,Mb,max;

  19. int rk,rT,rn,gm,ln;

  20. rk=0;//read k

  21. rT=0;//read T

  22. rn=0;//read n

  23. gm=0;//generate array

  24. ln=0;//liniarizatsia

  25. char M[50]={};

  26. while(!eq(M,"exit ")){

  27. pid();ngets(50,M);

  28. if (eq(M,"read k ")){

  29. pid();printf("%s","k= ");k=in();

  30. ngets(50,M);

  31. if (k>50) {

  32. k=50;

  33. printf(" Maybe you want to have k=50.\n");

  34. }

  35. else printf(" Operation was done sucessfully.\n");

  36. rk=1;

  37. }

  38. else

  39. if (eq(M,"read T ")){

  40. pid();printf("%s","T= ");T=in();

  41. ngets(50,M);

  42. if (T>10000) {

  43. T=10000;

  44. printf(" Maybe you want to have T=10000.\n");

  45. }

  46. else printf(" Operation was done sucessfully.\n");

  47. rT=1;

  48. }

  49. else

  50. if (eq(M,"read n ")){

  51. pid();printf("%s","n= ");n=in();

  52. ngets(50,M);

  53. if (n>10) {

  54. n=10;

  55. printf(" Maybe you want to have n=10.\n");

  56. }

  57. else printf(" Operation was done sucessfully.\n");

  58. rn=1;

  59. }

  60. else

  61. if (eq(M,"gen mas ")){

  62. if(rT==0) printf("%s\n"," You don't read T");

  63. else

  64. if(rk==0) printf("%s\n"," You don't read k");

  65. else {

  66. GenMas(A);

  67. printf("%s\n"," Array was generated successfully");

  68. gm=1;

  69. }

  70. }

  71. else

  72. if (eq(M,"lin ")){

  73. if(gm==0) printf("%s\n"," You don't generate array");

  74. else

  75. if (rn==0) printf("%s\n"," You don't read n");

  76. else{

  77. max=liniarizatsia(A,B,n,T);

  78. printf("%s\n"," Liniarizatsia was generated successfully");

  79. ln=1;

  80. }

  81. }

  82. else

  83. if (eq(M,"gis ")){

  84. if(ln==0) printf("%s\n"," You don't perform liniarizatsia");

  85. else outGis(B,k,n);

  86. }

  87. else

  88. if (eq(M,"out res ")){

  89. if(ln==0) printf("%s\n"," You don't perform liniarizatsia");

  90. else res(B,k,n,max,T);

  91. }

  92. else

  93. if (eq(M,"gen html ")){

  94. if(ln==0) printf("%s\n"," You don't perform liniarizatsia");

  95. else {GenHTML(k,A,T); printf(" Operation was done sucessfully.\n");}

  96. }

  97. else

  98. if (eq(M,"open html ")){system("index.html");}

  99. else

  100. if (eq(M,"help ")){

  101. printf(" read k - vvedenia k\n");

  102. printf(" read T - vvedenia T\n");

  103. printf(" read n - vvedenia n\n");

  104. printf(" gen mas - zgenetuvatu masiv\n");

  105. printf(" lin - vukonatu liniarizatsiu\n");

  106. printf(" gis - vuvestu gistigramu\n");

  107. printf(" out res - vuvestu resultat\n");

  108. printf(" gen html - zgeneruvatu HTML file\n");

  109. printf(" open html - open html\n");

  110. printf(" exit - zavershenia robotu\n");

  111. printf(" all - compiller all\n");

  112. }

  113. else

  114. if (eq(M,"all ")){

  115. k=3;

  116. T=500;

  117. n=3;

  118. GenMas(A);

  119. max=liniarizatsia(A,B,n,T);

  120. outGis(B,k,n);

  121. res(B,k,n,max,T);

  122. GenHTML(k,A,T);

  123. rk=1;rT=1;rn=1;gm=1;ln=1;

  124. }

  125. else

  126. if(!eq(M,"exit ")) printf(" Wrong command!!!\n");

  127. }

  128. system("PAUSE");

  129. return 0;

  130. }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]