Взываю о помощи экспертов ПГ  
Автор Сообщение

0
Сообщение Взываю о помощи экспертов ПГ

Уважаемые эксперты ПГ, доброго времени суток. Взываю о вашей помощи, т.к. сама ничего понять немогу.

Нам дали задание (скрин ниже). 
К сожалению, ввод только строкой. На данном этапе написала максимум ввод строки с клавиатуры в определенную переменную типа char. А вот дальше я не имею представления как считать информацию со строки. Нужно, видимо, как-то проходить по строке и в отдельные переменные выписывать и цифры и знаки, чтобы в дальнейшем производить действия. А выбор действия(+,-,*), я полагаю, осуществить через switch case. Но, к сожалению, до этого пока что дойти не могу. 
Пыталась искать в интернете (примерно уже две недели), но нахожу пока что все не то. Или быть может как-то можно упростить задачу, не прибегая к разбиению строки? Помогите кто чем может, если несложно. P/S язык Си

 



16 окт 2016, 13:22
Профиль






Сервер: Черный Шрам
Рейтинг поля боя: 1717
2х2: 1100
3х3: 1748
0
Сообщение Взываю о помощи экспертов ПГ

А эксперты смогут решить мне пару контрольных по термеху и высшему матану?  



16 окт 2016, 13:27
Профиль






Сервер: Свежеватель Душ
0
Сообщение Взываю о помощи экспертов ПГ

сестра на акке сидит типа, да?



16 окт 2016, 13:47
Профиль



<Бехолдэрс>


Сервер: Черный Шрам
Рейтинг поля боя: 1145
2х2: 1665
3х3: 2143
5х5: 1670
0
Сообщение Взываю о помощи экспертов ПГ

Логичнее просить ответ на киберфорум, не?



16 окт 2016, 14:24
Профиль



<КРОВАВЫЙ ПЫЛЕСОС>


Сервер: Страж Смерти
0
Сообщение Взываю о помощи экспертов ПГ

Там где есть задание, обычно водится и методичка для его выполнения, либо другая литература, на крайняк можно обратиться за помощью к выдавшему задание.

Ну и первая ссылка в интернетах http://www.cyberforum.ru/cpp-beginners/thread312783.html



16 окт 2016, 15:58
Профиль Skype

0
Сообщение Взываю о помощи экспертов ПГ

Не благодари, неуч. 

Сюда вставишь чтобы проверить

Код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct exp {
char op;
char *term;
struct exp *left;
struct exp *right;
} Exp;

Exp *make_exp2(char *str){
if(!str || !*str) return NULL;//*str == '\0' is format error.
char *mul = strrchr(str, '*');
char *div = strrchr(str, '/');
Exp *node = malloc(sizeof(*node));
if(mul == NULL && div == NULL){
node->op = '\0';
node->term = str;
node->left = node->right = NULL;
return node;
}
char *op;
op = mul < div ? div : mul;
node->op = *op;
*op = '\0';
node->left = make_exp2(str );
node->right = make_exp2(op+1);
return node;
}

Exp *make_exp(char *str){
if(!str || !*str) return NULL;//*str == '\0' is format error.
char *minus = strrchr(str, '-');
char *plus = strrchr(str, '+');
if(minus == NULL && plus == NULL)
return make_exp2(str);
char *op;
Exp *node = malloc(sizeof(*node));
op = minus < plus ? plus : minus;
node->op = *op;
*op = '\0';
node->left = make_exp(str );
node->right = make_exp(op+1);
return node;
}


float print(Exp *exp, int level){
int i;
float val = 0;
if(exp->op){

for(i=0;i<level;++i)
printf(" ");

printf("%c\n", exp->op);

for(i=0;i<level;++i)
printf(" ");

if (exp->op == '+'){
val += print(exp->right, level+1);
} else
if (exp->op == '-'){
val -= print(exp->right, level+1);
} else
if (exp->op == '*'){
val = 1;
val *= print(exp->right, level+1);
}

printf("\n");

for(i=0;i<level;++i)
printf(" ");

if (exp->op == '+' || exp->op == '-'){
val += print(exp->left, level+1);
} else
if (exp->op == '*'){
val *= print(exp->left, level+1);
}

printf("\n");
} else {
for(i=0;i<level;++i)
printf(" ");

val = atof(exp->term);
printf("%s\n", exp->term);
}
return val;
}


int main(void) {
char str[100];

printf("Enter a value :");
gets(str);

Exp *exp = make_exp(str);

printf("%f", print(exp, 0));

return 0;
}



16 окт 2016, 16:20
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru