Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool parantezareValida()
- {
- int top = -1, i = 0;
- char stiva[NMAX];
- while (i<lungimeSirInit && top >-2)
- {
- if (sir[i] == '(')
- if (sir[i + 1] == ')')
- return 0;
- else
- {
- top++;
- stiva[top] = '(';
- }
- else if ((sir[i] == ')'))
- {
- top--;
- }
- i++;
- }
- if (top != -1)
- return 0;
- return 1;
- }
- int nrDinString(char s[])
- {
- /// presupunem ca s e numar
- int nr = 0, p = 1, i;
- for (i = strlen(s) - 1; i >= 0; i--)
- {
- nr += (p * (s[i] - 48));
- p *= 10;
- }
- return nr;
- }
- bool esteFunctie(char s[])
- {
- for(int j = 0 ; j < 7 ; j++)
- if(strcmp(s,functii[j])==0)
- return 1;
- return 0;
- }
- bool sirValid(char s[])
- {
- int i = 0, nrCifre = 0, nrCaractere = 0;
- char aux[NRCHAR];
- if (!parantezareValida())
- {
- cout << "parantezare gresita";
- return 0;
- }
- while (i < lungimeSirInit)
- {
- ///if(!((s[i]>='a'&&s[i]<='z')||(s[i]>='0'&&s[i]<='9')||(strchr(operatori, s[i])!=NULL)||(s[i]==')')||s[i]=='('))
- if (s[i] == ')' || s[i] == '(' || strchr(operatori, s[i]))
- {
- if (nrCaractere >= NRCHAR)
- {
- cout << "prea multe litere";
- return 0;
- }
- if (nrCifre >= NRCHAR)
- {
- cout << "numar prea mare";
- return 0;
- }
- nrCaractere = nrCifre = 0;
- }
- else if (s[i] >= '0' && s[i] <= '9')
- {
- nrCifre++;
- if (s[i + 1] >= 'a' && s[i + 1] <= 'z')
- {
- cout << "expresie incorecta";///exemplu: 2x
- return 0;
- }
- if (nrCaractere >= NRCHAR)
- {
- cout << "prea multe litere";
- return 0;
- }
- nrCaractere = 0;
- }
- else if (s[i] >= 'a' && s[i] <= 'z')
- {
- if (nrCifre >= NRCHAR)///numar prea mare de cifre
- {
- cout << "numar prea mare";
- return 0;
- }
- nrCifre = 0;
- aux[nrCaractere] = s[i];
- nrCaractere++;
- if (!((s[i + 1] >= 'a' && s[i + 1] <= 'z') || (s[i + 1] >= 'A' && s[i + 1] <= 'Z')))
- {
- aux[nrCaractere] = '\0';
- if (!esteFunctie(aux) && strcmp(aux, "x") != 0 && strcmp(aux, "e") != 0 && strcmp(aux, "pi") != 0)
- {
- cout << "functie nerecunoscuta:" << aux;
- return 0;
- }
- }
- }
- else
- {
- cout << "caracter nepermis:" << s[i];
- return 0;
- }
- i++;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment