IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Псевдокалькулятор, Язык C
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


С помощью разбора строки, вводимой с клавиатуры создать калькулятор, вычисляющий простейшие выражения типа: "1 + 7 - 3 * 2 =" результатом такого выражения будет 10 (приоритет операций не учитывается). Использовать только функци strtok. В дальнейшем модифицировать калькулятор так, чтобы он разбирал строки "1+7-3*2=", т.е. знаки операций искать с помощью strpbrk.

Пока я только разбиваю строку на фрагменты:

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

int main()
{
char s[255];
char *p;
int i;

clrscr();

fgets(s,254,stdin);

i=0;
p=strtok(s,"+,-,*,/");
while(p)
{
printf("%d : %s\n",i,p);
i++;
p=strtok(NULL,"+,-,*,/");

}
return 0;
}


Вопрос в том, как получать сами числа в выражении и знаки операций?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Вот так:

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

int main(){
char s[255];
char *p, *temp, sign;
int val;
float result;

// clrscr();
fgets(s,254,stdin);
temp = p = s;

// i = 0;
result = 0; sign = '\0';
while(p && *p != '\n') {
p = strpbrk(temp,"+-*/=");

switch(sign) {
case '\0':
sscanf(temp, "%d", &val);
result = val;
break;
case '+':
sscanf(temp, "%d", &val);
result += val; break;

case '-':
sscanf(temp, "%d", &val);
result -= val; break;

case '*':
sscanf(temp, "%d", &val);
result *= val; break;

case '/':
sscanf(temp, "%d", &val);
result /= val; break;

}
sign = *p++;
temp = p;
}
printf("\nresult = %5.2f\n", result);
return 0;
}

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 11:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name