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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 21:22   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию строки С++

Подскажите пожалуйста
нужно найти одинаковые строки в списке слов и вывести их количество, я решила не использовать массив из строк а взяла массив из char, можно ли так сделать? и как именно идет поиск одинаковых строк, а сравниваю предыдущий элемент с последующим, но не получается, подскажите как правильно записать условие?
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 08.02.2011, 23:11   #2
dxdy
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 78
По умолчанию

вы же пишите на С++, то попробуйте использовать vector и string. У вас получится vector< string > list; А в string есть функция сравнения ==. Ивините, если неправильно понял условие задачи.
Я не волшебник, я еще только учусь ٩(๏̯͡๏)۶
dxdy вне форума Ответить с цитированием
Старый 08.02.2011, 23:17   #3
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

я в векторах не очень разбираюсь, можете примерно описать алгоритм?
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 09.02.2011, 09:25   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

не, не стоит вектор, пусть сначала так
итак, у вас массив символов
char text[200];
идете по строке, если есть пробелы или символы конца строки - значит это конец слова, надо проверять 2 символа сразу, чтобы не попасть на 2 пробела подряд, к примеру
Код:
int kolSlov=0;//переменная, пусть будет для количества слов
for (int i=0;i<strlen(text);i++){
    if ((text[i]!=' ')&&((text[i+1]==' ')||(text[i+]=='\0')))//если данный символ не равен пробелу и следующий за ним символ равен пробелу или концу строки 
        kolSlov++;//увеличиваем количество слов на 1
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 09.02.2011, 19:11   #5
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

тут мы считаем количество слов?то есть разбивая одну строку на слова? а как можно будет обращаться к этим словам потом?
пример
Код:
Input	              Output
8                          4
fishing
gardening
swimming
fishing
hunting
fishing
fishing
biting
я хотела так
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
		int n, k,res=0;
		cin>>n;
			char items[n][16];

			for (int i = 0; i < n; i++)	
		cin >> items[i];
			
			for(int i=0; i<n; i++)  {
			for(int j=i+1; j<n; j++) {
			
			  k=strcmp(items[i],items[j]);
			  if(k==0)
			  		res++;
			}
			  
			}
			 cout<<res;		   
		   
return 0;   
}
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 09.02.2011, 20:11   #6
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

пример через stringstream и vector
придумал за 3 минуты
Код:
#include "stdafx.h"
#include <iostream>//cin cout
#include <sstream>//stringstream
#include <vector>

using namespace std;

int main(){
	stringstream ss;
	string text;
	
	getline(cin,text,'\n');//считываем до '\n'

//	vector <string> a;

	string a;
	
	vector <string> slova;

	ss.str(text);//указываем на текст как на ввод
	while(!ss.eof()){
		ss>>a;//вытаскиваем а
		slova.push_back(a);//кладем в вектор
	}

	for (int i=0;i<slova.size();i++)
		cout<<slova[i]<<endl;

	system("pause");
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 09.02.2011, 20:20   #7
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

o_O)спасибо, тогда как в этом случае найти кол-во одинаковых слов? и у меня библиотека stdafx.h не найдена
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 09.02.2011, 21:45   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

stdafx можете удалить, это заголовок, он опционален

чтобы найти количество повторяющихся символов где? в строке или в каком-то конкретном слове? если в строке - то все очень просто, вон в кода
Код:
getline(cin,text,'\n');
Код:
for (int i=0;i<text.length();i++)
и идете дальше по строке, сравнивая буквы
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 10.02.2011, 00:12   #9
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

ок, спасибо большое за помощь)
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Дбавление новой строки, после строки с подходящими параметрами RailOS Microsoft Office Excel 5 18.08.2010 10:12
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10