Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 30.11.2008, 16:42   #1
Serezhik
 
Регистрация: 30.11.2008
Сообщений: 4
Репутация: 10
По умолчанию Задача в 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, 19:35   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Репутация: 62
По умолчанию

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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


04:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.