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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
#1

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

14.12.2010, 17:33. Просмотров 556. Ответов 6
Метки нет (Все метки)

Приветсвую всех!
Такая задача имеется массив:
char str[60] - который содержит в себе следующие строки:

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

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

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

Добавлено через 4 часа 11 минут
или просто напишите кто как это понимает!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 17:33     Убрать ненужные слова в массиве!
Посмотрите здесь:

Убрать ненужные символы со строки(стринг, чар) - C++
Доброго времени суток, господа форумчане. Появилась проблема с решением одной задачи. Признаюсь, не знаю как правильно задать условие, а...

Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два. - C++
Мое задание: убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два. Вот программа...

В заданном символьном массиве найти слова, в которых первая буква слова встречается в нём ещё 1 раз - C++
Дан символьный массив. Вывести на печать те слова, в которых первая буква слова встречается в нём ещё 1 раз. гуглил, искал, нету подобной...

Убрать повторяющиеся буквы из слова - C++
Задание: убрать повторяющиеся буквы из слова оставив первые вхождения #include "iostream" using namespace std; int main()...

Убрать каждую вторую букву слова - C++
Ввести слово.убрать каждую вторую букву к.вывести результат на экран.

Убрать из введенного слова все гласные - C++
#include <iostream> #include <vector> #include <iterator> using namespace std; int main() { vector <char> word(100); ...

В строке убрать точки из определенного слова - C++
Допустим есть строка char="hel.l.o wo.rld an.d all pe.ople" надо убрать из одного из слов (номер его вводит пользователь) точки, допустим...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
380 / 272 / 21
Регистрация: 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
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
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
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
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++
Пользователь вводит с клавиатуры 2 строки. Из первой строчки убрать слова, которые встречаются во второй. Например: ...

Как можно убрать последнее значение в динамическом массиве - C++
Подскажите как можно убрать последнее значение в дин массиве (смотрите на скрине), показывает не верное значение (после предпоследнего...

Убрать из слова каждую вторую гласную букву в диапазоне от 8 до 13 буквы - C++
тема: текстовые файлы. убрать из слова каждую вторую гласную букву в диапазоне от 8 до 13 буквы.

Подскажите как убрать из массива элементы которые есть в другом массиве? - C++
Подскажите как убрать из массива элементы которые есть в другом массиве? Если ищу повторяющиеся элементы, то все работает for (int i...

Убрать в массиве все цепочки отрицательных элементов, расположенные между положительными - C++
В массиве убрать все цепочки отрицательных элементов, расположенные между положительными.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru