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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2012, 20:33   #1
smaiq
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 16
По умолчанию стандартные классы

Здравствуйте форумчанины)
2 дня уже мучаюсь с программой, требующей найти все неповторяющиеся слова в тексте, введеном с клавиатуры и оканчивающимися точкой, как символом - ограничителем.
smaiq вне форума Ответить с цитированием
Старый 24.12.2012, 22:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чего мучаешься? Что не получается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2012, 22:39   #3
smaiq
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 16
По умолчанию

программа выполняет абсолютно противоположную задачу
Код:

#include "iostream"
#include <conio.h>
#include <string>

using namespace std;

int main()
{
string s1, s2;
getline(cin,s1,'.');
int l, j, k;
l = s1.length();
s2 = ' ';
j = 0;
k = 0;
for(int i = 0; i < l; i++)
{
if(s1[i] != ' ')
{
s2[k] = s1[i];
k ++;
s2 = s2 + ' ';
}
else
{
j = s1.find(s1);
for(int c = i; c < l; c++)
if (s1.substr(c, s2.length()) == s2 && j != c && s1[c-1] == ' ')
cout << s2;
s2 = ' ';
k = 0;
}
}
cout << endl;
getch();
return 0;
}
smaiq вне форума Ответить с цитированием
Старый 24.12.2012, 22:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Разбей строку на массив слов: http://www.programmersforum.ru/showthread.php?t=121545
А потом просто в цикле пройдись по массиву и посравнивай текущее слово - сколько раз оно встречается в массиве. Если один раз - выводи на экран.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2012, 22:49   #5
smaiq
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 16
По умолчанию

с алгоритмом уже подсказали, только реализовать не могу)

Вроде готово, можно услышать мнение эксперта?
Код:
#include <iostream.h>
#include "conio.h"
#include "string.h"

void main()
{
int len; 
 char s[81];  
 char *s1,*s2;
    
cout << "Input the first string: "; 
cin.getline(s, 80); 
len = strlen(s);    
s1 = new char[ len + 1]; 
strcpy(s1, s); 
    
cout << "Input the second string: "; 
cin.getline(s, 80);  
len = strlen(s);
s2 = new char[len + 1];  
strcpy(s2, s);
    
    int i=0;
    while (s1[i]!='\0') 

    if (s1[i]==s2[i])    
    {  
       for (int j=i;s1[j]!='\0';j++) 
           s1[j]=s1[j+1];  
    }   
    else i++;  
    cout << endl << s1 << endl;  
}

Последний раз редактировалось Stilet; 24.12.2012 в 23:46.
smaiq вне форума Ответить с цитированием
Старый 24.12.2012, 23:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы всетки на массивы слов разделил. И не просто на массивы, а при расщеплении еще и по уже имеющимся элементам проход делал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стандартные операции reider Общие вопросы Delphi 1 19.07.2012 22:24
Стандартные функции C++ vandrouny Общие вопросы C/C++ 4 09.12.2010 22:37
Стандартные библиотеки Hemul Общие вопросы C/C++ 8 06.12.2010 21:26
Стандартные функции в C++ ArniLand Общие вопросы C/C++ 2 01.04.2010 11:27
Стандартные модули dr.Chas Общие вопросы Delphi 1 07.09.2008 16:54