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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.07.2010, 14:09   #1
Darknes
Пользователь
 
Аватар для Darknes
 
Регистрация: 28.06.2010
Сообщений: 40
По умолчанию работа со строками

Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами - запятая, за последним словом точка. Напечатать все слова в алфавитном порядке.
Код:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void main() 
{

	vector<string> words;
	bool ff=true;
	string temp;
	while (ff)
	{
		cin>>temp;
		words.push_back(temp);
		if (temp[temp.length()-1]=='.')
			ff=false;
	}
	
	sort(words.begin(),words.end());
	
	for (vector<string>::const_iterator cit=words.begin();cit!=words.end();cit++)
	{
		cout<<*cit<<endl;
	}
}
А мне нужно
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами - запятая, за последним словом точка. Напечатать слова что бы они встречались по 1 разу.
как сделать чтобы они встречались по 1 разу???

Последний раз редактировалось Stilet; 05.07.2010 в 15:04.
Darknes вне форума
Старый 05.07.2010, 14:21   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Хоть способ не очень рациональный, и, может, неправильный, но всё же: выбирать слова между запятыми начиная со второго слова и в цикле сверять с остальными словами(если честно, я в С++ не очень, так что смог изложить только идею)
_-Re@l-_ вне форума
Старый 05.07.2010, 15:33   #3
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Совсем недавно была такая же тема, используйте поиск или просто полистайте темы.

update
Вот оно :
http://programmersforum.ru/showthread.php?t=106240
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума
Старый 05.07.2010, 15:37   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

За кросспост тему закрываю.
На всякий случай прилагаю свой вариант:
Код:
// 3421423r.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>

using namespace std;

string s="hello,my,my,world, ";
string *a;
int ln=0;

int wordcount(string ss){
	int c=0;
	for(int i=0;i<ss.length();i++)  c+=(ss[i]==',')?1:0;
	return ++c;
}

bool isexist(string ss,int n){
	for(int i=0;i<n;i++){
		if (a[i]==ss) 
			return true;
	}
	return false;
}

void wordsplit(string ss){
	int k=0;
	for(int i=0;i<ss.length();i++){
		if(ss[i]==','){
			k+=(!isexist(a[k],k))?1:0;
			a[k]="";
		} else {
			a[k]+=ss[i];
		}
	}
	ln=k;
}


void prin(){
	for(int i=0;i<ln;i++){
		printf("%s\n",a[i]);
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int k=wordcount(s);
	a=new string[k];
	
	wordsplit(s);
	prin();
	getchar();
	return 0;
}
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками ManU Общие вопросы C/C++ 1 18.04.2010 17:09
Работа со строками С++ edmynt Помощь студентам 4 06.12.2009 16:40
работа со строками Андрей.12 Помощь студентам 3 15.11.2009 19:42
Работа со строками NightFire Помощь студентам 4 22.03.2009 20:54