Другие языки программирования и технологии

С++ обработка строк при помощи указателей

#include <iostream>
using namespace std;
int main()
{
char tmp [80];
char* ptr;
int res;
const char S ('*');
int z ;
while (1)
{
cout <<"Enter tmp-> ";
cin.getline (tmp,80);
z = strlen(tmp);
if (!ispunct (tmp [z-1]))
break;
ptr=new char [z+1];
strcpy_s (ptr, z+1, tmp);

delete [] ptr;
}
return 0;
}

помогите плиз надо чтобы в строке все знаки пунктуации переносились в начало а цифры в конец строки.
Ваня Исаев
Ваня Исаев
102
#include <iostream>

using namespace std;

int main() {
    char tmp[80];
    cout << "temp? ";
    cin.getline(tmp, 80);
    char *s = new char[cin.gcount() + 1];
    char *e = s;
    for (char *pt = tmp; *e++ = *pt++;);
    cout << "copy: " << s << endl;
    char *pp = s, *pd = e - 2;
    for (char *p = s; p < e; ++p) {
        if ( ispunct(*p) ) {
            if (pp != p) {
                char t = *p;
                for (char *pc = p; pc != pp; --pc) *pc = *(pc - 1);
                *pp++ = t;
            } else {
                ++pp;
            }
        }
        if ( isdigit(*p) ) {
            if (pd >= p) {
                char t = *p;
                for (char *pc = p; pc != e - 1; ++pc) *pc = *(pc + 1);
                *(e - 2) = t;
                --pd;
                --p;
            }
        }
    }
    cout << "result: " << s << endl;
    delete[] s;
    return 0;
}
Андрей Рогов (Игнатьев)
Андрей Рогов (Игнатьев)
56 079
Лучший ответ