Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2013, 22:16   #1
anna27
Новичок
Джуниор
 
Регистрация: 09.05.2013
Сообщений: 3
По умолчанию Стековый калькулятор, чистый Си, реализовать его со связным списком

Есть программный код стекового калькулятора.
Помогите реализовать его со связным списком:

Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

int sp = 0;
int stack[1000];
int pop(void) {
if (sp > 0) {
return stack[--sp];
} else {
fprintf(stderr, "Pusto\n");
return 0;
}
};
void push(int a) {
stack[sp++] = a;
};
int empty() {
return (sp == 0);
}

int main(int argc, char* argv[]) {
FILE *stream=NULL;
if (argc == 2)
stream=fopen(argv[1],"w");
while (!feof(stdin)) {
int c = getchar();
if(stream != NULL){
fprintf(stream,"%c", c);
};
int x;
switch (c) {
case '\n':
case ' ' : break;
case '.' :
x=pop();
if(stream != NULL){
fprintf(stream,"Result = %d\n", x);
};
printf("Result = %d\n", x);
break;

case '+':
stack[sp-2] = stack[sp-2] + stack[sp-1];
sp--;
break;
case '-':
stack[sp-2] = stack[sp-2] - stack[sp-1];
sp--;
break;
case '*':
c = getchar();
if(c != '*'){
ungetc(c,stdin);
stack[sp-2] = stack[sp-1] * stack[sp-2];
}
else{
if(stream != NULL)
fprintf(stream,"%c", c);
stack[sp-2] = pow(stack[sp-2], stack[sp-1]);
};
sp--;
break;
case '/':
stack[sp-2] = stack[sp-2] / stack[sp-1];
sp--;
break;
default:
ungetc(c, stdin);
if (scanf("%d", &x) != 1) {
fprintf(stderr, "Can't read integer\n");
return -1;
} else {
push(x);
}
break;
}
}
fclose(stream);
return 0;
}

Последний раз редактировалось Stilet; 10.05.2013 в 09:56.
anna27 вне форума Ответить с цитированием
Старый 09.05.2013, 22:34   #2
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

1) код в соответствующие тэги заключать нужно
2) malloc.h - сто лет в обед как deprecated, используйте stdlib.h
3) сколько платите ?
tools вне форума Ответить с цитированием
Старый 09.05.2013, 22:47   #3
anna27
Новичок
Джуниор
 
Регистрация: 09.05.2013
Сообщений: 3
По умолчанию

вопрос цены очень интересует?
anna27 вне форума Ответить с цитированием
Старый 09.05.2013, 22:55   #4
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Код:
вопрос цены очень интересует?
он самый животрепещущий
tools вне форума Ответить с цитированием
Старый 09.05.2013, 23:31   #5
anna27
Новичок
Джуниор
 
Регистрация: 09.05.2013
Сообщений: 3
По умолчанию

помогите кто-нибудь еще? какие-нибудь варианты есть?
anna27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
стековый калькулятор Leva_89 C# (си шарп) 0 25.03.2011 22:23
Калькулятор на С++ с двусвязным списком Anastassija Общие вопросы C/C++ 4 24.06.2010 11:20
Постфиксный (стековый) калькулятор (РЕКУРСИЯ) killer007 Фриланс 4 03.06.2010 09:25
проблемы со связным списком с++ (Borland) adwaer Помощь студентам 0 15.04.2009 16:23
проблемы со связным списком с++ (Borland) adwaer Помощь студентам 0 15.04.2009 16:22