Форум программистов, компьютерный форум CyberForum.ru

Переделать Стек из однозначных чисел в многозначные - C++

Восстановить пароль Регистрация
 
Глашатай
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 5
22.04.2011, 09:52     Переделать Стек из однозначных чисел в многозначные #1
Помогите пожалуйста переделать СТЕК из однозначных чисел в многозначные.

#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct lifo
{
char el;
struct lifo *next;
} Stack;

Stack* Head=NULL;

void Push(char element)
{
Stack *p;
p=(Stack*)malloc(sizeof(Stack));
if(p!=NULL)
{
p->el=element;
p->next=Head;
Head=p;
}

else
{
puts("Error! Not free memory!");
}
}

char Pop()
{
char a=Head->el;
Stack* p=Head;
Head=Head->next;
free(p);
return a;
}

int IsOperation(char ch)
{
if(ch=='+' || ch=='-' || ch=='*' || ch=='/')
return 1;
return 0;
}

int Prior(char oper)
{
if(oper=='+' ||oper=='-' )
return 1;
if(oper=='*' ||oper=='/')
return 2;
return 0;
}

int calculate(char postfix[])
{
int a=0,b=0,ind=0,rez=0;
for(;postfix[ind]!=NULL;ind++)
{
switch(postfix[ind])
{
case '+':b=Pop();a=Pop();
rez=a+b; Push(rez);break;
case '-':b=Pop();a=Pop();
rez=a-b; Push(rez);break;
case '*':b=Pop();a=Pop();
rez=a*b; Push(rez);break;
case '/':b=Pop();a=Pop();
rez=a/b; Push(rez);break;
default: Push(postfix[ind]-'0');break;
}
}
return rez;
}


void main()
{
char infix[100],postfix[100],q;
int i=0,j=0,len;
int rezult;

clrscr();
printf("STACK\n\n");
printf("Vvedite stroky\n");
gets(infix);
Push('(');
len=strlen(infix);
infix[len]=')';
infix[len+1]='\0';
while(Head!=NULL)
{
for(;infix[i]!= '\0';i++)
{
if(infix[i]=='(')
Push('(');
else
if(infix[i]==')')
{

for(;(q=Pop())!= '(';j++)
postfix[j]=q;
}
else if(IsOperation(infix[i]))
{
do{
q=Pop();
if(Prior(q)>=Prior(infix[i]))
{
postfix[j]=q;
j++;
}
else{
Push(q);
break;
}
}while(1);

Push(infix[i]);
}
else
{
postfix[j]=infix[i];
j++;
}
}
}
postfix[j]='\0';
puts(postfix);
rezult=calculate(postfix);
printf("rezult = %d",rezult);
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2011, 09:52     Переделать Стек из однозначных чисел в многозначные
Посмотрите здесь:

Многозначные числа C++
Стек чисел C++
стек чисел C++
C++ Программа которая выводит пример на умножение двух однозначных чисел
Создать стек целых чисел на основе статического массива. C++
Пример на умножение двух однозначных чисел, запрос и проверка ответа пользователя (C++ Builder) C++
C++ Распечатать корни всех чисел от 1 до N, не имеющих однозначных делителей (не равных числу)
Стек для хранения целых чисел (int) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru