Форум программистов, компьютерный форум CyberForum.ru

Убрать ненужные слова в массиве! - C++

Восстановить пароль Регистрация
 
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
14.12.2010, 17:33     Убрать ненужные слова в массиве! #1
Приветсвую всех!
Такая задача имеется массив:
char str[60] - который содержит в себе следующие строки:

На входе:
qwerty asdfg zxcvn qwerty asdfg

необходимо убрать из массива повторяющиеся слова, т.е на выходе:
qwerty asdfg zxcvn.

как это сделать помогите пожалуйста!
strcmp помогает но я не могу вывести первое слово которое в дальнейшем повториться.
Заранее благодарю!

Добавлено через 4 часа 11 минут
или просто напишите кто как это понимает!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
14.12.2010, 21:33     Убрать ненужные слова в массиве! #2

п.1 Создаем новый массив
п.2 Берем слово
п.3 Добавляем его в созданый нами массив
п.4 Берем следующее слово
п.5 Проверям, есть ли оно в созданном нами массиве
ДА ---> п.4
НЕТ ---> п.3
п.6 Выводим на экран созданный нами массив
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
15.12.2010, 04:35  [ТС]     Убрать ненужные слова в массиве! #3
так работать не будет!

Добавлено через 3 минуты
дело в том что он выводит одинаковый элемент
ввожу строку 1 2 3 1
получаю 1 2 3 1, а нужно 1 2 3
(это то мне и надо решить)
вот как делаю я:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
void main()
{
clrscr();
int i,j,k;
int c=0;
const  n=4;
char s[20];
char s1[20];
char str[n+1][10];
char rez[100];
 
for(i=0;i<n;i++)
 {
  cout<<"Vvedite word: ";
  cin.getline(s,19);
  strcpy(str[i],s);
 }
 
for(j=0; j<n;j++)
{
cout<<endl<<str[j];
}
for (i=0;i<sizeof(s);i++) {s[i] = '\0';}
for (i=0;i<sizeof(s1);i++) {s1[i] = '\0';}
for (i=0;i<sizeof(rez);i++) {rez[i] = '\0';}
 
 
 
for(i = 0; i < n; i++)
{
 for(j = 1;j < n; j++)
 {
 strcpy(s,str[i]);
 strcpy(s1,str[j]);
 if(strcmp(s, s1) == 0)
  {
  for (k = 0; k < sizeof(s); k++) {s[k] = '\0'; }
  }
  else
  {
   if(c==i)
   {
    strcat(rez, s);
    strcat(rez," ");
    cout<<endl<<"Loop: "<<i;
    c++;
  }
  }
}
}
cout<<endl<<"Rez: "<<rez;
getch();
 }
Добавлено через 19 минут
Цитата Сообщение от Mayonez Посмотреть сообщение


п.5 Проверям, есть ли оно в созданном нами массиве
ДА ---> п.4
НЕТ ---> п.3
если возможно п.5 поподробнее!

Добавлено через 6 часов 3 минуты
народ помогите найти ошибку.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.12.2010, 14:34     Убрать ненужные слова в массиве! #4
Kenwood2010,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::string str;
    std::cout << "Input string: ";
    getline(std::cin, str);
    std::istringstream ist(str);
    std::vector<std::string> vec;
 
    bool key;
    while(ist >> str)
    {
         if(!vec.empty())
         {
            key = true;
            for(int i = 0; i < vec.size(); ++i)
            {
                if(vec[i] == str)
                {
                    key = false;
                }
            }
        }
        if(key)
        {
                vec.push_back(str);
        }
    }
 
    std::cout << "\nOutput string: ";
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, " "));
 
    return 0;
}
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
15.12.2010, 14:36  [ТС]     Убрать ненужные слова в массиве! #5
спасибо большое!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.12.2010, 15:09     Убрать ненужные слова в массиве! #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <algorithm>
#include <iterator>
 
int main(){
    std::string buf;
    
    std::cout << "String: ";
    std::getline(std::cin, buf);
    
    std::list<std::string> list;
    std::istringstream ist(buf);
    while ( ist >> buf )
        if ( std::find(list.begin(), list.end(), buf) == list.end() )
            list.push_back(buf);
    
    std::cout << "Unique words: ";
    std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(std::cout, " "));
    std::cout << std::endl;
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2010, 16:55     Убрать ненужные слова в массиве!
Еще ссылки по теме:

Из первой строчки убрать слова, которые встречаются во второй C++
Убрать из введенного слова все гласные C++
Убрать каждую вторую букву слова C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
15.12.2010, 16:55  [ТС]     Убрать ненужные слова в массиве! #7
спасибо всем вы мне реально помогли!
Yandex
Объявления
15.12.2010, 16:55     Убрать ненужные слова в массиве!
Ответ Создать тему
Опции темы

Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru