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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу учета сдачи зачетов при помощи битовых полей (исправить код) http://www.cyberforum.ru/cpp-beginners/thread281210.html
Вобщем задача была изначально такова: Написать программу учета сдачи зачетов при помощи битовых полей. Структура содержит поля: фамилия, группа, зачеты (битовое поле). Предусмотреть вывод списков сдавших все зачеты и должников по группам и в алфавитном порядке. Сделал поиск студентов с незачетами и сортировку их же по алфавиту методом пузырька, но при выводе 1- раз показывает лишнее поле, 2 раз...
C++ Алгоритм Поиска в Строковом Массиве Нужен самый простой как дуб, алгоритм чтобы находить нужную строку в массиве. Помогите если кто сталкивался с этим делом. :scratch: Да, забыл добавить, нужно для отсортированного масива. http://www.cyberforum.ru/cpp-beginners/thread281176.html
C++ function
Даны действительные числа a1,...1n, b1,...bm. В последовательности a1,...an и в последовательности b1,...bm все члены следующие за членом с наибольшим значением (за первым по порядку, если их несколько), заменить на 0.5
C++ Найти: А) количество кубиков каждого из перечисленных цветов и их суммарный объем
Дан файл f, содержащий сведения о кубиках: размер каждого кубика (длина ребра в сантиметрах), его цвет (красный, желтый, зелены или синий) и материал (деревянный, металлический, картонный). Найти: А) количество кубиков каждого из перечисленных цветов и их суммарный объем. Б) количество деревянных кубиков с ребром 3 см и количество металлических кубиков с ребром, большим 5 см. помогите...
C++ Вывести фамилии студентов, не аттестованных по тем предметам http://www.cyberforum.ru/cpp-beginners/thread281159.html
1. Даны сведения о результатах аттестации, что и в предидущей задаче. вывести фамилии студентов не аттестованных по тем предметам. 2. даны сведения о студентах группы :ФИО студент, дата рождения, место рождения студента. вывести список группы по убыванию года рождения.
C++ как перевести массив в шестнадцатеричную систему стандартной командой как перевести массив в шестнадцатеричную систему стандартной командой имею код программы, нужно результат получить в HEX, пробовал с sprintf(buf, "%x", sum_po_str); не получается вот код: // вычисление суммы по строкам cout<<endl<<"Suma po strokam"<<"\n\n"; for (int i=0;i<str;i++) { for (int j=0;j<stolb;j++) подробнее

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

#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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru