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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2010, 16:20   #1
Vigo1603
Новичок
Джуниор
 
Регистрация: 26.09.2010
Сообщений: 2
По умолчанию Удаление цифр в символьной строке

Всем привет Такая задача: необходимо на языке C составить программу, которая удаляла бы из символьной строки ТОЛЬКО цифры, в описании строка должна быть как массив символов. Помогите плиз!
Vigo1603 вне форума Ответить с цитированием
Старый 26.09.2010, 17:32   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
char a[1024];
cin.getline(a, 1024, '\n');
int len = strlen(a);
for(int i=0; i<len; i++)
      if(a[i] >= '0' && a[i] <= '9')
      { // delete the i element ... }
cout << a;
Удалять можно так:
Код:
{
      for(int j=i; j<len; j++)
      {
            a[j] = a[j+1];
            len--;
      }
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 26.09.2010 в 20:36.
Syuf вне форума Ответить с цитированием
Старый 26.09.2010, 17:49   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Syuf
некошерно же
+ в твоем варианте тебе len нужно уменьшать при удалении символа из массива, тыж сдвигаешь хвост к голове

2Vigo1603
Код:

char *strWithoutNum(const char *str)
{
	int i;
	int len = 0;
	char *ret = (char *) malloc(strlen(str) + 1);

	for (i = 0; i < strlen(str); i++)
		if (!isdigit(str[i]))
			ret[len++] = str[i];
	
        if (len != strlen(str))
	        ret = (char *) realloc(ret, len + 1);
	
        ret[len] = '\0';
	return ret;
}

int main()
{
	char str[] = "1M4ed2ve4d5234";
	char *s = strWithoutNum(str);
	printf("%s\n", s);
	free(s);
	return 0;
}
а дальше делай что угодно с исходной строкой.

пс. чота я ппц, стока раз налажал в такой простой проге. но терь все норм. valgrind рулит)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 26.09.2010 в 18:13.
pproger вне форума Ответить с цитированием
Старый 26.09.2010, 20:39   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
в твоем варианте тебе len нужно уменьшать при удалении символа из массива, тыж сдвигаешь хвост к голове
Действительно, чето я не заметил, исправил.
Цитата:
некошерно же
Ну а зачем начинающему в такой проге все эти alloc-и и деление на функции?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 27.09.2010, 12:45   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Syuf
Цитата:
Действительно, чето я не заметил, исправил.
мда, исправил шило на мыло. len уменьшать нужно во внешнем цикле, а не во внутреннем. на первом же удалении оно у тебя сойдет на нет

Цитата:
Ну а зачем начинающему в такой проге все эти alloc-и
когда то их надо изучать

Цитата:
и деление на функции?
ну это уже моя привычка. привык к многократному использованию кода
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++. Сума цифр в строке. Поправте код werser Помощь студентам 1 04.05.2010 11:18
(Паскаль)Найти произведение цифр, встречающихся в строке Doublefaced Помощь студентам 24 24.06.2009 18:25
сложение цифр в строке от 1 до 5 buba3230 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 04.06.2009 23:53
Поиск последовательности цифр в строке mmx310 Microsoft Office Excel 14 05.02.2009 11:19
Удаление цифр Айвенго Microsoft Office Access 1 26.04.2008 13:17