Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 16:17   #1
Программер Михаил
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 16
По умолчанию Работа со строками

Помогите пожалуйста!!
Надо написать программу на с++. Тема "работа со строками".

Необходимо преобразовать строку таким образом, чтобы сначала в ней были напечатаны только буквы, а потом только цифры, не меняя порядок следования символов.
Вот я тут пробовал написать, но взникает проблема в выводе. Подскажите, пожалуйста, что не верно в моем коде и как это исправить.

Код:
#include <cstdlib>
#include <cstdio>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
    char a[1000], b[1000],c[1000];
    int i,j;
    cout << "Vvedite stroky ";
    gets(a);
    cout << endl;
    puts(a);
    for(i=0;i<=strlen(a);i++)
    { 
           if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||(a[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
           c[i]=a[i];
           else
           b[i]=a[i];
    }
    cout << endl;
    for (i=0;i<=strlen(b);i++)
    cout <<b[i];
    system ("pause");
    return 0;
}

Последний раз редактировалось Stilet; 07.12.2010 в 16:46.
Программер Михаил вне форума Ответить с цитированием
Старый 07.12.2010, 16:29   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Поскольку у вас один счетчик на обе итоговые строки, то получается примерно вот такое:
Код:
a == "12ab34cd56ef7g8hi90jkl";
b == "??ab??cd??ef??g?hi90jkl";
c == "12??34??56??7?8??90???";
где ? я обозначил неизвестные науке значения, которые на самом деле являются мусором, валявшимся в этой области памяти. Сделайте, например, так:
Код:
int len = strlen(a);
for (int i =0, j = 0, k = 0; k < len; k++)
 {
 if (isdigit(a[k]))
  c[i++] = a[k];
 else
  b[j++] = a[k];
 }
b[j] = '\0';
c[i] = '\0';
cout << b << endl << c << endl;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.12.2010, 16:36   #3
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Код:
for(i=0;i<=strlen(a);i++)
заменить на
Код:
for(i=0;i<strlen(a);i++)
потом
Код:
for(i=0;i<=strlen(b);i++)
заменить на
Код:
for(i=0;i<strlen(b);i++)
и сразу после
Код:
for(i=0;i<strlen(b);i++)
написать
Код:
for (i=0;i<strlen(с);i++)
cout << с[i];
Ах да. Еще
Код:
if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||(a[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
c[i]=a[i];
else
b[i]=a[i];
}
Заменить на
Код:
if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||(a[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
{
c[i]=a[i];
i++;
}
else
{
b[j]=a[j];
j++;
}
}
Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)

Последний раз редактировалось Stilet; 07.12.2010 в 16:49.
Ru_DoLF вне форума Ответить с цитированием
Старый 07.12.2010, 19:02   #4
Программер Михаил
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 16
По умолчанию

Огромное спасибо, все работает)
Программер Михаил вне форума Ответить с цитированием
Старый 07.12.2010, 20:00   #5
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Код:
if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||(a[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
заменить на
Код:
if(isdigit(a[i]))
coinkrsk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками nasti.ya Помощь студентам 1 30.11.2010 03:24
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками NightFire Помощь студентам 4 22.03.2009 20:54
Работа со строками eR- Помощь студентам 2 23.02.2009 15:11
Работа со строками Nividimka Помощь студентам 11 03.03.2007 15:58