Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите со строками


Автор: Telepyz 18.11.2008, 22:54
Имеется строка, содержащая буквы и цифры. Преобразовать эту строку так, чтобы сначала в ней шли все цифры, а затем – все буквы исходной строки.

не получается, выводит только последнюю букву и последнюю цифру...(((

помогите пожалуйста

Код

#include "stdafx.h"
#include <iostream>
#include "string.h"
#include <ctype.h>
#include <stdio.h>

using namespace std;

void main()
{
int len = 254;
     int l;
     char* ch = new char [len];
     gets(ch);
     l = strlen(ch);
     char* temp = new char [l+1];
     cout<<l<<'\n';
     char s;
     for (int i=0; i<l; i++)
     {
          s = ch[i];
          if ((isalnum(s))&(isalpha(s))) 
                 sprintf(temp, "%c" , s);
     }
           cout<<temp<<'\n';
     for (int i=0; i<l; i++)
     {
          s= ch[i];
          if (isalnum(s) && !isalpha(s)) 
                 sprintf(temp, "%c" , s);
     }
     cout<<temp<<'\n';
}

Автор: destrd 18.11.2008, 23:09
Цитата(Telepyz @  18.11.2008,  22:54 Найти цитируемый пост)
выводит только последнюю букву и последнюю цифру

Вы записываете всё время в начало строки, вот и получается последний символ всегда. они перезаписываются, остаётся последний.
Надо как-то так делать
Код
tmp = new char[l + 1];
char *pTmp = tmp;
.
.
.
if ()
{
  sprintf(pTmp, "%c", s);
  pTmp++;
}
std::cout<<tmp<<std::endl;


Тогда получится строка.

Автор: Telepyz 18.11.2008, 23:34
Благодарю)))

Автор: Rififi 19.11.2008, 02:32
Цитата(Telepyz @  18.11.2008,  23:54 Найти цитируемый пост)
Имеется строка, содержащая буквы и цифры. Преобразовать эту строку так, чтобы сначала в ней шли все цифры, а затем – все буквы исходной строки.


Код

std::string shift(const std::string& s)
{
    std::string res = s;
    std::stable_partition(res.begin(), res.end(), &isdigit);
    return (res);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)