Guest User

Untitled

a guest
Jan 8th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1.  
  2. bool parantezareValida()
  3. {
  4. int top = -1, i = 0;
  5. char stiva[NMAX];
  6. while (i<lungimeSirInit && top >-2)
  7. {
  8. if (sir[i] == '(')
  9. if (sir[i + 1] == ')')
  10. return 0;
  11. else
  12. {
  13. top++;
  14. stiva[top] = '(';
  15. }
  16. else if ((sir[i] == ')'))
  17. {
  18. top--;
  19. }
  20. i++;
  21. }
  22. if (top != -1)
  23. return 0;
  24. return 1;
  25. }
  26.  
  27.  
  28. int nrDinString(char s[])
  29. {
  30. /// presupunem ca s e numar
  31. int nr = 0, p = 1, i;
  32. for (i = strlen(s) - 1; i >= 0; i--)
  33. {
  34. nr += (p * (s[i] - 48));
  35. p *= 10;
  36. }
  37. return nr;
  38. }
  39.  
  40. bool esteFunctie(char s[])
  41. {
  42. for(int j = 0 ; j < 7 ; j++)
  43. if(strcmp(s,functii[j])==0)
  44. return 1;
  45. return 0;
  46. }
  47.  
  48. bool sirValid(char s[])
  49. {
  50. int i = 0, nrCifre = 0, nrCaractere = 0;
  51. char aux[NRCHAR];
  52. if (!parantezareValida())
  53. {
  54. cout << "parantezare gresita";
  55. return 0;
  56. }
  57. while (i < lungimeSirInit)
  58. {
  59. ///if(!((s[i]>='a'&&s[i]<='z')||(s[i]>='0'&&s[i]<='9')||(strchr(operatori, s[i])!=NULL)||(s[i]==')')||s[i]=='('))
  60. if (s[i] == ')' || s[i] == '(' || strchr(operatori, s[i]))
  61. {
  62. if (nrCaractere >= NRCHAR)
  63. {
  64. cout << "prea multe litere";
  65. return 0;
  66. }
  67. if (nrCifre >= NRCHAR)
  68. {
  69. cout << "numar prea mare";
  70. return 0;
  71. }
  72. nrCaractere = nrCifre = 0;
  73. }
  74. else if (s[i] >= '0' && s[i] <= '9')
  75. {
  76. nrCifre++;
  77. if (s[i + 1] >= 'a' && s[i + 1] <= 'z')
  78. {
  79. cout << "expresie incorecta";///exemplu: 2x
  80. return 0;
  81. }
  82. if (nrCaractere >= NRCHAR)
  83. {
  84. cout << "prea multe litere";
  85. return 0;
  86. }
  87. nrCaractere = 0;
  88. }
  89. else if (s[i] >= 'a' && s[i] <= 'z')
  90. {
  91. if (nrCifre >= NRCHAR)///numar prea mare de cifre
  92. {
  93. cout << "numar prea mare";
  94. return 0;
  95. }
  96. nrCifre = 0;
  97. aux[nrCaractere] = s[i];
  98. nrCaractere++;
  99. if (!((s[i + 1] >= 'a' && s[i + 1] <= 'z') || (s[i + 1] >= 'A' && s[i + 1] <= 'Z')))
  100. {
  101. aux[nrCaractere] = '\0';
  102. if (!esteFunctie(aux) && strcmp(aux, "x") != 0 && strcmp(aux, "e") != 0 && strcmp(aux, "pi") != 0)
  103. {
  104. cout << "functie nerecunoscuta:" << aux;
  105. return 0;
  106. }
  107. }
  108. }
  109. else
  110. {
  111. cout << "caracter nepermis:" << s[i];
  112. return 0;
  113. }
  114. i++;
  115. }
  116. return 1;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment