Aleks11

[]() parsing

Nov 19th, 2011
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. freopen("tmp.txt","r",stdin);
  2. //freopen("durak.out","w",stdout);
  3. char str[256]={0},str1[256]={0};
  4. int len=0, len1=0;
  5. int never=0, never1=0;
  6. int strict=0, strict1=0;
  7. float numb1=0.0f, numb2=0.0f;
  8. scanf("%s %s",str,str1);
  9. while (str[++len]){}
  10. str[len-1]=0;
  11. if (str[0] == '[') strict = 1;
  12. for (int i=0;i<len;i++)
  13. str[i] = str[i+1];
  14. len--;
  15. if (str[0] == '-') {
  16. never = 1;
  17. for (int i=0;i<len;i++)
  18. str[i] = str[i+1];
  19. len--;
  20. }
  21. //printf("%s - str\n",str);
  22. int findD=-1;
  23. for (int i=0;i<len;i++)
  24. if (str[i] == '/') {
  25. findD = i;
  26. break;
  27. }
  28. if (findD != -1) {
  29. int f1=0,f2=0;
  30. for (int i=0;i<findD;i++)
  31. f1 += (str[i]-48)*(int)pow(10.0f,(float)(findD-i-1));
  32. for (int i=findD+1;i<len;i++)
  33. f2 += (str[i]-48)*(int)pow(10.0f,(float)(len-i-2));
  34. //printf("%d/%d - drob' \n",f1,f2);
  35. numb1 = (never)?(-((float)f1/(float)f2)):((float)f1/(float)f2);
  36. } else {
  37. int f1=0;
  38. for (int i=0;i<len;i++)
  39. f1+=(str[i]-48)*(int)pow(10.0f,(float)(len-i-2));
  40. //printf("%d - chislo\n",f1);
  41. numb1 = (never)?(-(float)f1):(float)f1;
  42. }
  43. while (str1[++len1]){}
  44. if (str1[len1-1] == ']') strict1 = 1;
  45. if (str1[0] == '-') {
  46. never1 = 1;
  47. for (int i=0;i<len1;i++)
  48. str1[i] = str1[i+1];
  49. len1--;
  50. }
  51. //printf("\n%s - str\n",str1);
  52. findD = -1;
  53. for (int i=0;i<len1;i++)
  54. if (str1[i] == '/') {
  55. findD = i;
  56. break;
  57. }
  58. if (findD != -1) {
  59. int f1=0,f2=0;
  60. for (int i=0;i<findD;i++)
  61. f1 += (str1[i]-48)*(int)pow(10.0f,(float)(findD-i-1));
  62. for (int i=findD+1;i<len1;i++) {
  63. //printf("%d %d\n",(int)pow(10.0f,(float)(len1-i-1)),len1-i-1);
  64. f2 += (str1[i]-48)*(int)pow(10.0f,(float)(len1-i-2));
  65. numb2 = (never1)?(-((float)f1/(float)f2)):((float)f1/(float)f2);
  66. }
  67. //printf("%d/%d - drob' \n",f1,f2);
  68. } else {
  69. int f1=0;
  70. for (int i=0;i<len1;i++)
  71. f1+=(str1[i]-48)*(int)pow(10.0f,(float)(len1-i-2));
  72. //printf("%d - chislo\n",f1);
  73. numb2 = (never1)?(-(float)f1):(float)f1;
  74. }
  75. //printf("From %0.1f to %0.1f\n",numb1,numb2);
  76. int num=0;
  77. if (!strict) numb1 = ceil(numb1 + 0.1f);
  78. if (!strict1) numb2 = floor(numb2-0.1f);
  79. for (int i=(int)ceil(numb1);i<=(int)floor(numb2);i++)
  80. num++;
  81. printf("%d %d %d",num,(int)numb1,(int)numb2);
Advertisement
Add Comment
Please, Sign In to add comment