Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
1

Удаление слов из массива

21.07.2015, 12:48. Показов 745. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Возник вопрос, есть считывание из файла в массив, нужно в текущей сессии не показывать уже показанные слова, то есть если слово "Магазин" выводилось, то больше его не выводить.
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
    srand(time(0));
    Speech.open("Speech.txt");
    Answers.open("Answers.txt");
    SpeechCode.open("SpeechCode.txt");
    while (!Speech.eof())
    {
        getline(Speech, strSpeech, ' ');
        SpeechArr.push_back(strSpeech);
    }
    while (!Answers.eof())
    {
        getline(Answers, strAnswers, ' ');
        AnswersArr.push_back(strAnswers);
    }
    while (!SpeechCode.eof())
    {
        getline(SpeechCode, strSpeechCode, ' ');
        SpeechCodeArr.push_back(strSpeechCode);
    }
    Speech.close();
    Answers.close();
    SpeechCode.close();
    numA = rand() % AnswersArr.size();
    RandAnswers = AnswersArr[numA];
    answerCode = (EventKeyboard::KeyCode)(SpeechArr[numA][0] + 27);
    messagee.append(RandAnswers);
    label->setString(messagee);
    this->scheduleUpdate();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2015, 12:48
Ответы с готовыми решениями:

Поиск слов по маске в строке, их удаление, сортировка оставшихся слов
Доброго времени суток. Помогите, пожалуйста, реализовать задачу. нужно из текстового файла считать...

Формирование массива слов и удаление из текста слов, которые встречаются заданное число раз
Доброго времени суток. Помогите, пожалуйста! Задача заключается в том, что нужно из введенного...

Строки. Удаление слов из массива
Дан массив слов. Из массива слов удалить слова, в которых нет повторяющихся букв. Напишите...

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

7
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
22.07.2015, 06:54 2
Используйте вместо vector SpeechArr;
C++
1
set SpeechArr;
И вопрос решится автоматически
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
22.07.2015, 11:52  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
Используйте вместо vector SpeechArr;
но тогда ошибки какие-то.
Удаление слов из массива
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
22.07.2015, 12:15 4
Чуть внимательнее ознакомьтесь с контейнером set.
В нем нет понятий "Всавить в хвост" или "Вставить в начало", а есть просто "Вставить" (insert).
ПРиведите полный код, который Вы компилируете. Попробую исправить.
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
22.07.2015, 12:28  [ТС] 5
Цитата Сообщение от zss Посмотреть сообщение
Чуть внимательнее ознакомьтесь с контейнером set.
В нем нет понятий "Всавить в хвост" или "Вставить в начало", а есть просто "Вставить" (insert).
ПРиведите полный код, который Вы компилируете. Попробую исправить.
C++
1
2
3
std::set<std::string> SpeechArr;
std::set<std::string> AnswersArr;
std::set<std::string> SpeechCodeArr;
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
    srand(time(0));
    Speech.open("Speech.txt");
    Answers.open("Answers.txt");
    SpeechCode.open("SpeechCode.txt");
    while (!Speech.eof())
    {
        getline(Speech, strSpeech, ' ');
        SpeechArr.push_back(strSpeech);
    }
    while (!Answers.eof())
    {
        getline(Answers, strAnswers, ' ');
        AnswersArr.push_back(strAnswers);
    }
    while (!SpeechCode.eof())
    {
        getline(SpeechCode, strSpeechCode, ' ');
        SpeechCodeArr.push_back(strSpeechCode);
    }
    Speech.close();
    Answers.close();
    SpeechCode.close();
    numA = rand() % AnswersArr.size();
    RandAnswers = AnswersArr[numA];
    answerCode = (EventKeyboard::KeyCode)(SpeechArr[numA][0] + 27);
    messagee.append(RandAnswers);
    label->setString(messagee);
0
47 / 47 / 23
Регистрация: 14.04.2013
Сообщений: 188
22.07.2015, 13:07 6
C++
1
SpeechArr.push_back(strSpeech);
замените на
C++
1
SpeechArr.insert(strSpeech);
у std::set<> нету опретаора [], т.е. нельзя обратиться к элементу по индексу.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
22.07.2015, 13:20 7
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
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <ctime>
using namespace std;
 
 
void main()
{
    set<string> SpeechArr;
    set<string> AnswersArr;
    set<string> SpeechCodeArr;  
    srand((unsigned int)time(0));
    ifstream Speech,Answers,SpeechCode;
    Speech.open("Speech.txt");
    Answers.open("Answers.txt");
    SpeechCode.open("SpeechCode.txt");
    string strSpeech,strAnswers,strSpeechCode;
    while (!Speech.eof())
    {
        getline(Speech, strSpeech, ' ');
        SpeechArr.insert(strSpeech);
    }
    while (!Answers.eof())
    {
        getline(Answers, strAnswers, ' ');
        AnswersArr.insert(strAnswers);
    }
    while (!SpeechCode.eof())
    {
        getline(SpeechCode, strSpeechCode, ' ');
        SpeechCodeArr.insert(strSpeechCode);
    }
    Speech.close();
    Answers.close();
    SpeechCode.close();
    int numA = rand() % AnswersArr.size();
    set<string>::iterator index=AnswersArr.begin();
    for(int i=0;i<numA;i++)
           index++; // находим адрес numA элемента в контейнере  AnswersArr
    string RandAnswers = *index;
    index=SpeechArr.begin();
    for(int i=0;i<numA;i++)
           index++;// находим адрес numA элемента в контейнере  SpeechArr
// далее разберитесь самостоятельно т.к. это не относится к консольному приложению
    int answerCode = /*(EventKeyboard::KeyCode)*/ (*index)[0] + 27; 
    //messagee.append(RandAnswers);
    //label->setString(messagee);
    system("Pause");
}
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
22.07.2015, 13:31  [ТС] 8
zss, а что за
C++
1
set<string>::iterator index=AnswersArr.begin();
у меня он не хочет определяться (index).

Добавлено через 5 минут
А, нет, всё нормально.
0
22.07.2015, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2015, 13:31
Помогаю со студенческими работами здесь

Изменить процедуру обработки массива двойных слов на обработку слов
У меня не получается переделать массив размерностью 4 байта на 2 байта, и проблема с командой...

Процедура распечатки массива девяти слов и этих же слов с заглавной буквы по столбцам
Написать процедуру распечатки на рабочем листе массива девяти слов, вводимых с клавиатуры, и этих...

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». ...

Удаление элементов массива кратных своим порядковым номерам и удаление их путем сдвига вперед
Ребята, всем привет. Дистанционная практика (связи с короновирусом) дает о себе знать. Ответ на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru