Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ендрю
0 / 0 / 1
Регистрация: 09.02.2013
Сообщений: 17
#1

Поиск повторяющихся слов - C++

11.09.2014, 23:53. Просмотров 827. Ответов 3
Метки нет (Все метки)

Напишите программу, в которую сначала вводится набор пар, состоящих из имени и значения, например Joe 17 и Barbara 22. Для каждой пары занесите имя в вектор names, а число — в вектор scores (в соответствующие позиции, так что если names [7] =="Joe", то scores [7] ==17). Прекратите ввод, введя строку No more (т.е. следующая попытка ввести целое число завершится ошибкой). Убедитесь, что каждое имя уникально, и выведите сообщение об ошибке, если имя введено дважды. Выведите на печать все пары (имя, баллы) по одной в строке.

Добавлено через 2 минуты
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
#include<iostream>
#include<string>
#include<vector>
#include<algorithm> 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    vector<int>marks;
    vector<string>names; 
    int mark;
    string name;
    cout<<"Введите имя и оценку студента:\n";
 
    while(cin>>name>>mark)
    {
        if(name=="no more") 
        {}
        else
            {
              names.push_back(name);
              marks.push_back(mark);
            }
    }
              sort(names.begin(),names.end()); 
               for(int k=0; k< names.size(); ++k)
              if (k==0 ||  names[k-1]!= names[k])
              {
              cout<<names[k]<<" "<<marks[k]<<" \n";
              }
              else
                  cout<<"Ошибка\n";
    
}
Добавлено через 2 минуты
После сортировки имя и оценка не совпадают. Как по другому определить повторяющиеся имена?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2014, 23:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск повторяющихся слов (C++):

Поиск повторяющихся слов через вектор
Здравствуйте. При вводе текста в переменную string current должно только что...

Поиск повторяющихся слов в текстовом файле
подскажите есть вот такая задача В файле записаны различные слова через...

Поиск повторяющихся слов в тексте (доработка кода)
Дан текст, содержащий n строк. Для каждого слова указать, сколько раз оно...

Запись всех повторяющихся слов в новый массив слов
компилируется без ошибок, запускаю консоль после 13 строчки, а именно ввода...

Количество повторяющихся слов
Всем доброго времени суток! Дано задание подсчитать количество слов в тексте и...

Выявление повторяющихся слов!
// 3.5.1.cpp : Defines the entry point for the console application. // ...

3
S_el
2133 / 1661 / 354
Регистрация: 15.12.2013
Сообщений: 6,597
12.09.2014, 00:28 #2
Цитата Сообщение от ендрю Посмотреть сообщение
После сортировки имя и оценка не совпадают.
Так,а что вы хотели?
Можете использовать другие контейнеры,так будет проще.
0
ендрю
0 / 0 / 1
Регистрация: 09.02.2013
Сообщений: 17
12.09.2014, 00:38  [ТС] #3
Цитата Сообщение от S_el Посмотреть сообщение
Можете использовать другие контейнеры,так будет проще.
Чесно говоря, я не понял.
Есть какой -то способ определить повторяющиеся слова без сортировки? Или с сортировкой, но чтобы имена соответствовали оценкам?
0
S_el
2133 / 1661 / 354
Регистрация: 15.12.2013
Сообщений: 6,597
12.09.2014, 01:10 #4
ендрю, Способов много.
Проверяйте такой вариант:

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<vector>
#include<algorithm> 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    vector<int>marks;
    vector<string>names; 
    int mark;
    string name;
    
    cout<<"Введите имя и оценку студента:\n";
 
    while(cin>>name>>mark)
    {
        if(name=="no more") 
        {break;}
        else
            {
              names.push_back(name);
              marks.push_back(mark);
            }
    }
    cout<<endl;
    size_t sizenames = names.size();
    
    names.resize(std::unique(names.begin(), names.end()) - names.begin());
    
    vector<int>::const_iterator z=marks.begin();
    if(sizenames==names.size())
        for(vector<string>::const_iterator t=names.begin();t!=names.end();++t,++z)
            cout<<*t<<" "<<*z<<" \n";
    else cout<<"Ошибка\n";
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2014, 01:10
Привет! Вот еще темы с решениями:

Удаление повторяющихся слов - deque
Привет всем!У меня программа,которая удаляет повторяющиеся слова. Например...

Удаление повторяющихся слов из стоки на C
Здравствуйте. Помогите пожалуйста реализовать задачу: Дана строка. Группа...

Программа для поиска не повторяющихся слов
Всем привет. Помогите написать функцию которая бы записывала из 1го массива во...

Как реализовать удаление повторяющихся слов?
Задачей является написание программы, которая: 1) Считывает вводимый в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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