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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 12:25   #1
Neurogenus
Заблокирован
 
Регистрация: 05.05.2010
Сообщений: 40
Радость Доработать идеальность подсчета слов...

Добрый день...
Написал код для защиты строки от хитрого препода(любителя вводить много пробелов в любом месте строки)
Код:
/*удаляем пробелы*/
t=0;
for(i=0;i<=strlen(tmp);i++)
{ if ((tmp[i]==' ')&&(tmp[i+1]==' ')) continue;
else { st[t]=tmp[i];t++;}}
printf("obrabotannaya stroka!\n");
printf("%s\n",st);
Помогите пожалуйста доработать код чтоб осуществлялся правильное удаление пробелов. Не удаляет именно в начале строки если первый элемент пробел и иногда в конце строки, например:' ваыва '. Буду очень благодарен за помощь...
Neurogenus вне форума Ответить с цитированием
Старый 13.05.2010, 12:47   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Код:
/*удаляем лишние пробелы*/
while (temp[i]==' ') i++;
for(;i<strlen(temp)-1;i++) 
{
 if ((temp[i]==' ')&&(temp[i+1]==' ')) continue; 
 else
 {st[t]=temp[i]; t++;}
}
if (temp[strlen(temp)-1]!=' ')
   st[t]=temp[i];
Ты темы создаешь быстрее, чем я успеваю отвечать )))
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 13.05.2010, 13:02   #3
Neurogenus
Заблокирован
 
Регистрация: 05.05.2010
Сообщений: 40
Радость

Есть маленькие ошибочки:
Цитата:
for(;i
Вот все подправил, вроде как работает для всех тестов=)
Код:
/*удаляем лишние пробелы*/
while (tmp[i]==' ') i++;
for(i=0;i<strlen(tmp)-1;i++)
{ if ((tmp[i]==' ')&&(tmp[i+1]==' ')) continue;
 else {st[t]=tmp[i]; t++;}}
if (tmp[strlen(tmp)-1]!=' ')st[t]=tmp[i];
Спасибо большое=)
Neurogenus вне форума Ответить с цитированием
Старый 13.05.2010, 13:06   #4
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

В том месте как раз таки нет ошибки, если обнулишь i тогда у тебя в st может на место первого символа встать пробел, поэтому верни как было
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 13.05.2010, 13:20   #5
Neurogenus
Заблокирован
 
Регистрация: 05.05.2010
Сообщений: 40
По умолчанию

Ой да, извините, сейчас испробовал.. да вы правы.. большущее спасибо
Neurogenus вне форума Ответить с цитированием
Старый 13.05.2010, 14:26   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
char *f(char *s){
	int i;
	char *t=new char[255];
	for(i=0;*s;i++){
		t[i]=*s;
		if(*s==' ')
			while(*++s==' '&&*s);
		else
			s++;
	}
	t[i]=0;
	return t;
}
rrrFer вне форума Ответить с цитированием
Старый 13.05.2010, 14:43   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

если именно подстчет слов:
Код:
int f(char *s){
	int n;
	for(n=0;*s;){
		while(*s==' '&&*s) s++;
		n+=!!*s;
		while(*s&&*++s!=' ');
	}
	return n;
}
rrrFer вне форума Ответить с цитированием
Старый 13.05.2010, 15:18   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int f(char *s){
	int n;
	for(n=0;*s;){
		while(*s==' '&&*s) s++;
		n+=!!*s;
		while(*s&&*++s!=' ');
	}
	return n;
}	
char *ff(char *s){
	int i;
	char *t=new char[255];
	for(i=0;*s;i++){
		t[i]=*s;
		if(*s==' ')
			while(*++s==' '&&*s);
		else
			s++;
	}
	t[i]=0;
	return t;
}

int main(){
	char *tmp=new char[255];
	char *tt=new char[255];
	int num;
	strcpy(tmp,"asd asd");
	tt=ff(tmp);
	num=f(tmp);
	cout<<num<<endl;
	cout<<tt<<endl;
	cin.get();
	return 0;
}
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
по вводу слов в массив и подсчёт введённых слов -ushёl- Общие вопросы C/C++ 4 16.11.2009 00:45
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Помогите написть простую прогу подсчета статистики слов, символов в тексте.. amigo90 Паскаль, Turbo Pascal, PascalABC.NET 14 07.11.2008 18:34
Помогите с заданием подсчета! werser Microsoft Office Excel 6 08.12.2007 18:58