Задача на языке Turbo C

  • Автор темы gfz
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

gfz

Гость
#1
Помогите пожалуйста!
Задание:Дано скобочное выражение длиной до 50 символов, оканчивающееся пробелом. Напечатать попарно порядковые номера соответствующих открывающих и закрывающих скобок в выражении.Пример: ((a+<_<*(a+c)+(c+d))
2 6
8 11
13 17
1 18

Задача должна быть решена при помощи стэков.
P.S. Очень важно... Жду... Заранее спасибо... аська для связи 2633616 (там можно обсудить вознаграждение)
срок до 3.06.05, то есть до пятницы...
 
M

_maxim

Гость
#3
может уже поздно, но все же...

#include <iostream>
#include <typeinfo>
#define size 2

using namespace std;

const char Z[size]={'(',')'};

class stack
{
public:
stack() {p=prev=NULL;}
void Push(char, int);
template<class type> void Pop(type&);
bool Prov() {return (p==NULL) ? true: false;}
private:
stack* p;
stack* prev;
char s;
int v;
};

template<class type> void stack::Pop(type& c)
{
if (p!=NULL)
{
stack* temp=p;
p=p->prev;
if (typeid&copy;==typeid(char)) c=temp->s;
else c=temp->v;
delete temp;
}
}

void stack::Push(char t, int c)
{
stack* temp=new stack;
temp->s=t;
temp->v=c;
temp->prev=p;
p=temp;
}

void Output(char*);
int Length(char*);

void main()
{
int n;
char* s,p;
cout<<"n=";
cin>>n;
s=new char [n];
cout<<"s=";
cin>>s;
Output(s);
cin>>p;
delete []s;
}

int Length(char* t)
{
int i=0;
while (*t!='\0') t++, i++;
return i;
}

void Output(char* t)
{
int i,j,k=Length(t);
stack w;
for (i=0; i<=k-1; i++)
{
if (t==Z[0]) w.Push(t,i+1);
else if (t==Z[1])
{
w.Pop(j);
cout<<j<<" "<<i+1<<endl;
}
}
}
 
B

Barmutik

Гость
#4
Слегка решение на Турбо С не похоже <_<

Особенно использование классов и темлэйтов...
 

Гость
#5
Люди добрые! Получил задание для курсача: написать программу, сохраняющую в выходном файле список содержимого текущей директории. На турбо С. Видимо опыта мало - помогите с написанием!!!!!!!!!!!!!!!!!!! времени очень мало, а сессию пропускать из-за этого не хочется.
 
Статус
Закрыто для дальнейших ответов.