Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 09.05.2013, 20:00   #1 (permalink)
ana27
Новичок
 
Регистрация: 09.05.2013
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, очень срочно, программа на C

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

#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;
}
ana27 вне форума   Ответить с цитированием

Старый 09.05.2013, 20:00
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Так же полезную информацию вы можете найти тут

Помогите срочно пожалуйста.
Помогите с задачей на С++ очень срочно нужно...пожалуйста
Помогите, очень срочно надо собрать компьютер
Помогите решить задачу по Паскалю. Срочно, пожалуйста.
Помогите пожалуйста срочно решить задачу, подробно
Помогите пожалуйста, очень нужно!!

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.