Mọi người chỉ giúp mình code của mình sai chỗ nào với
Mình xây dựng 1 queue<char> gồm cả số và kí tự. Bây giờ mình muốn tách ra số (dưới dạng int) riêng và kí tự riêng. Mình nghĩ là sai ở void TachQueue nhưng ko tìm được lỗi. Mọi người giúp mình với. Cảm ơn mọi người [IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/biggrin.png[/IMG]

#include<iostream>
#include<iomanip>
#include<queue>
#include<cstdlib>
using namespace std;
void NhapQueue(queue<char> );
void TachQueue(queue<char>, queue<int>, queue<char>);
void In1(queue<int>);
void In2(queue<char>);
int main()
{
queue<char> Q;
NhapQueue(Q);
queue<int> P1;
queue<char> P2;
TachQueue(Q,P1,P2);
In1(P1);
In2(P2);
return 1;

}
void NhapQueue(queue<char> Q)
{
do{
char c;
cin.get(c);
if(c=='k') break; else Q.push(c);
}while(1);
}
void TachQueue(queue<char> Q, queue<int> P1, queue<char> P2)
{
char *c;
c=new char;
int i=0;
int a;
char x;
do{
x=Q.front();
if(!isalnum(x)) {a=atoi(c);P1.push(a);P2.push(x);c=NULL;} else
{
*(c+i)=x;
}
Q.pop();
cout<<"1"<<endl;
}while(!Q.empty());
}
void In1(queue<int> P1)
{
while(!P1.empty()) {
int c;
c=P1.front();
cout<<c<<endl;
P1.pop();
}
}
void In2(queue<char> P2)
{
while(!P2.empty()) {
char c;
c=P2.front();
cout<<c<<endl;
P2.pop();
}
}