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

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2007, 20:42   #1
kluwa
 
Регистрация: 04.12.2007
Сообщений: 3
По умолчанию предложения, все слова в которых образованны повторением одного символа, и сформировать из них массив

Как Выбрать из заданного текста предложения, все слова в которых образованны повторением одного символа, и сформировать из них массив?(все слова разделены пробелами, а предложения точками)

Код основной программы:

Код:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#define SIZE 500 //maximalnaya dlina stroki
#define m 15 //maximalnoe koli4estvo elementov massiva strok



class stroka
{
char *p;//stroka
int len;//dlina stroki


public:
int kss;//koli4estvo vhogdeniy

//konstruktor
stroka::stroka()
{
p=new char *[SIZE];
*p='\0';
len=0;
}

//destruktor
stroka::~stroka()
{
free(p);
}

//zadanie zna4eniya stroki
void stroka::set(char *ptr)
{
//proverka sootvetstviya SIZE i dliny prisvaivaemoy stroki
if(strlen(p)>=SIZE)
{
cout << "Stroka slishkom velika\n";
return;
}
strcpy(p,ptr);//sopostavlenie strok i perenos konca stroki
len=strlen(p);//Opredelenie dliny stroki
}

//vyvod stroki na ekran
void stroka::show()
{
cout << p <<":"<<kss<<"\n";
}

//podshet vhogdeniy
int stroka::ksp()
{????????????????????????????????????????????????????????????????????????????????????????????}

};

void main(void)
{
stroka s1,mas[m],rmas[m];
char text[SIZE],*pp;
int j,i,k;
cout<<"vvedite text: ";
gets(text);

j=1;
pp=strtok(text,".!?");
while (pp != NULL)
{
mas[j].set(pp);
j++;
pp = strtok(NULL, ".!?");
}

k=1;
//proverka sovpadeniy
for(i=1;i<j;i++)
{?????????????????????????????????????????????????????????????????????????????????????????????????}

//rezultat proverki
for(i=1;i<k;i++)
{
rmas[i].show();
}

getch();
}
меня интересует именно нахождение слов, образованных повторением одного символа
ЗАРАНЕЕ СПАСИБО

Последний раз редактировалось Carbon; 04.12.2007 в 20:44.
kluwa вне форума Ответить с цитированием
Старый 05.12.2007, 11:51   #2
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию

чем тебя не устраивает std::string? огромный класс с кучей функций для работы со строкой, и слова в строке он тебе тоже найдёт легко и вернёт позицию....зачем тебе заново изобретать велосипед?
lacost вне форума Ответить с цитированием
Старый 07.12.2007, 10:53   #3
Wicing
 
Регистрация: 15.11.2007
Сообщений: 8
По умолчанию

kluwa отступай от начала строки хотябы на 2-3 пробела
твой код будет намноооооого удобней читать
а тот блин вообще капец...
Wicing вне форума Ответить с цитированием
Старый 08.12.2007, 14:08   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

А у тебя что задание сделать класс СТРОКА с перегрузкой основных функций? Если нет, то лучше бы ты последовал совету умных людей и использовал стандартный std::string... просто время сэкономишь.
MaTBeu вне форума Ответить с цитированием
Старый 08.12.2007, 15:17   #5
oto_aki
Пользователь
 
Аватар для oto_aki
 
Регистрация: 07.12.2007
Сообщений: 14
По умолчанию

чето кофе нет, я вот от скуки накотал, вроде отлично работает)) с тя пиво, отправишь мне на мэйл)) , если я задание конечно правельно понял

нахождение слов, образованных повторением одного символа:
Код:
void find_word(char * mes_buff)
{

char * t_buff = mes_buff;

int len = strlen(t_buff);
int ax; 

char m_buff[1024]; // ну типа пусть не более 1024, просто потом не заюудь добавить проверку на переполнение, мне лень


register char t,last;
last = t_buff[0];

m_buff[0] = last;
m_buff[1] = '\0';

	for(ax = 1; ax < len; ax++)
	{
		t = t_buff[ax];

		if(t == last)
		{
			sprintf(m_buff,"%s%c",m_buff,t);
			last = t;
		}
		else
		{
			if(strlen(m_buff) > 1) // есть слово больше 1 символа
				MessageBox(0,m_buff,"word",MB_OK);

			sprintf(m_buff,"%c",t);
			last = t;
		}
	}
}

ну а потом

find_word("asdhasdglaighkgfgwwwwwww wwwaawoooxxxsqrql;");
AMD Athlon X2 5600+, Asus M2N-E nForce570 Ultra, 1Gb x 3 Kingston DDR2 667@800, Asus GeForce 7900 GT 256 Mb @(690,1800 VMod 1.55 + Zalman))),serial ATA Seagate 320Gb, WD 250 Gb, Seagate 500Gb, Pioner 210D (Sata).
OS - Win XP SP2, Ubuntu 8.04

HP 6720s (C2D T7250), OS - Ubuntu 8.04
oto_aki вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать массив только из тех элементов, у которых остаток от деления на М равен L (0<=L<=M-1) Айвенго Microsoft Office Excel 2 12.01.2008 16:28
[Delphi] Замена одного слова на другое... ZhooZhik Помощь студентам 5 09.01.2008 23:31
вытащить часть слова до опред. символа WIC Microsoft Office Excel 5 27.12.2007 12:50
Помогите пожалуйста!!! С использованием функции Random сформировать одномерный массив Vanya_www_333 Помощь студентам 1 17.08.2007 13:38
Вывести на экран те слова, у которых первая буква входит в него 2 раза. GN_ Паскаль, Turbo Pascal, PascalABC.NET 2 31.12.2006 09:14