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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 15:42   #1
Serezhik
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию Задача в Visual C++ 6.0, работа со строками

Помогите пожалуйста решить задачку:
Ввести строку символов, и если длина строки кратна 3, то из строки удаляются все числа кратные 3.

Код:
#include <math.h>
#include <iostream.h>
#include <string.h>

int main(void)
{
	char s[100];
	int l,i,j;

        cout<<"Vvedite stroky"<<endl;
	cin>>s;

	l=strlen(s);

	cout<<"dlina: "<<l<<endl;

	if(!(l%3))
	{
		for(j=i=0;i<l;i++) 
			if(s[i]%3)         
				    s[j++]=s[i];
			
        s[j]='\0';

        cout<<"novaya stroka:"<<s<<endl;
	}

	return 0;
}
Это мой код, но при выполнении, из строки удаляются не только числа кратные 3, но и символы, номер которых в ASCII кратен 3... что делать? подскажите...
Serezhik вне форума Ответить с цитированием
Старый 30.11.2008, 18:35   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

isdigit() попробуй поюзать!!!
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 19:09   #3
Serezhik
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию

я пробовал...
если так написать то тоже самое получается...
Код:
...
for(j=i=0;i<l;i++) 
	if(isdigit(s[i]),s[i]%3)        
             s[j++]=s[i];
...
хотя мож я просто че не так делаю...)))
Serezhik вне форума Ответить с цитированием
Старый 30.11.2008, 19:41   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Вот такое надо условие:
Код:
			if(!isdigit(s[i]) || s[i]%3!=0)
ну или по твоему:
Код:
			if(!isdigit(s[i]) || s[i]%3)
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 20:15   #5
Serezhik
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию

Спасибо тебе огромное, конечно, а мож подскажешь второй вариант, как-нить используя номер символа в ASCII, я понимаю конечно, что это геморой , но все же... может какая-нить функция есть, которая возвращает номер символа....
т.е. арабские числа находятся в диапазоне от 47 и до 57 (если я не ошибаюсь) так вот чтоб в условии было например:"если номер s[i] принадлежит от 47 до 57, то..." как-нить так....

Последний раз редактировалось Serezhik; 30.11.2008 в 20:18.
Serezhik вне форума Ответить с цитированием
Старый 30.11.2008, 20:24   #6
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Вот так попробуй
Код:
			if(s[i]%3 || !(s[i]>='0' && s[i]<='9'))
StarWorm вне форума Ответить с цитированием
Старый 30.11.2008, 20:31   #7
Serezhik
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию

Ну так тоже отлично... Спасибо за помощь... тему можно закрывать....
Serezhik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. Задача Memfis_nya Общие вопросы C/C++ 4 16.11.2008 18:42
Задача со строками Panda Помощь студентам 8 02.07.2008 09:10
задача на работу с файлами и строками MiH@N Помощь студентам 8 24.06.2008 00:44
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34
Задача со строками Klyan Общие вопросы C/C++ 6 21.09.2007 22:22