memcpy() — копіювання символів з одного буфера у другий, поки не буде скопійований заданий символ або не буде скопійовано визначену кількість символів
memcmp() — порівнює вказану кількість символів з двох буферів
У файлі ctype.h описано прототипи функцій, що призначені для перевірки літер. Ці функції повертають ненульове значення (істина), коли її аргумент задовольняє заданій умові або належить вказаному класу літер, та нуль в іншому випадку. Наприклад:
int islower(int с) — символ с є малою літерою;
int isupper(int c) — символ с є великою літерою;
int isalnum(int c) — символ с є буквою або цифрою;
int isalpha(int c) — символ с є буквою;
int tolower(int c) — перетворення літери у нижній регістр;
int strtol(int c) — перетворення стрингу у довге ціле число;
Обчислити вираз з дужками, десятковими цифрами та знаками +, -, *, /.
#include <ctype.h>
#include <math.h>
isdig(char c) {return ((isdigit(c)) || 'с'=='.');}
double val(char **);
double getdig(char ** s)
{
double res;
if(**s=='(') res=val(++*s);
else {res=atof(*s); while(isdig(*++*s));};
return res;
}
double multi(char** s)
{
double res=getdig(s);
while((**s=='*') || (**s=='/'))
if(**s=='*') res*=getdig(++*s);
else res/=getdig(++*s);
}
double val(char** s)
{
double res=multi(s);
while((**s!=')') && (**s!='\0'))
if(**s=='+') res+=multi(++*s);
else res-=*(++*s);
if(**s==')') ++*s;
return res;
}
double getsvalue(char* s) {char** l; *l=s;
return val(l);}
main()
{
char* s="2-4/2+25/(2+3)/5+(-1)*(2*4/8-2)*(-1)+5";
cout << getsvalue(s);
}
Проаналізувати умову задачі.
Розробити алгоритм та створити програму розв’язання задачі згідно з номером варіанту.
Результати роботи оформити протоколом