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

Обработать вектор, отобразив элементы по восемь слов на строку, перевести символы элементов в верхний регистр

22.02.2016, 14:47. Показов 2315. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Такая задача:

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


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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
 
int main()
 
{
 
    vector<string> svec;
    string word;
    while (getline(cin,word) && word != "quit")
    {
        svec.push_back(word);
 
    }
 
    
        for (decltype(svec.size())ix = 0; ix != svec.size(); ++ix)
        {
            for (auto &i : svec[ix])
            {
                i = toupper(i);
                
            }
            
        }
 
        for (auto i : svec)
              {
            cout << i << endl;
              }
 
        system("pause");
 
}


- Почему если я ввожу cлова на 1 строке, через пробелы, Anna, Dimon, в выводе они отображаются на одной строке?
А если введу слова на разных строках, то вывод на разных.Не работает мой endl
Я здесь же добавил оператор новой строки:

C++
1
2
3
4
for (auto i : svec)
              {
            cout << i << endl;
              }

- Как изменить код:

C++
1
cout << i << endl;
чтобы выводилось 8 копий? Не могу ничего придумать...:/

Добавлено через 18 часов 30 минут
Тема
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2016, 14:47
Ответы с готовыми решениями:

Перевести все символы строки в верхний регистр
имеется часть кода: string name; getline(cin, name); в введённой пользователем строке нужно...

Все символы строки перевести в верхний регистр
Вводится строка. Все символы этой строки перевести в верхний регистр.

Перевести все символы введенной строки в верхний регистр
Разбирающиеся люди, помогите сделать 3 задания по программированию. Времени разбираться самому нет,...

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

5
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
22.02.2016, 15:33 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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    vector<string> svec;
    string word;
    while( cin>>word && word != "quit" )
        svec.push_back(word);
    for (size_t ix = 0; ix != svec.size(); ++ix)
        transform(svec[ix].begin(),svec[ix].end(),svec[ix].begin(),toupper);
    for (size_t ix = 0; ix != svec.size(); ++ix)
    {
        cout<<svec[ix]<<' ';
        if( (ix+1)%8==0 )
            cout<<endl;
    }
    cout<<endl;
    system("pause");
    return 0; 
}
0
1 / 1 / 1
Регистрация: 13.02.2016
Сообщений: 39
22.02.2016, 15:58  [ТС] 3
zss, не могли бы вы, пояснить это
C++
1
if( (ix+1)%8==0 )?
Я не знаком пока с функцией transform, но мой код работает с преобразованием в верхний регистр. И итераторы следующая тема после индексов
Буду знать!

Такой вопрос, почему вы не использовали функцию getline(). Я помню, что входной поток cin читает одно слово, не учитывая пробелы, знаки разные. A функция getline() учитывает, и отделяет cлова. Так как в cin отделять слова, если он читает все как одно слово ? )
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
22.02.2016, 17:19 4
Цитата Сообщение от Billy_Milligan Посмотреть сообщение
if( (ix+1)%8==0 )?
Проверка того что вывелось очередное кратное 8 слово.

Если прочитать строку через getline, то придется ее самостоятельно разбивать на слова.
Можно будет это сделать похожим образом через stringstream
C++
1
2
3
4
5
string str,word;
getline(cin,str);
istringstream ss(str);
while(ss>>word)
   svec.push_back(word);
1
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 2
05.03.2019, 21:18 5
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
Примерно так должно быть
 
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using namespace std;
 
int main()
{
    string word;
    vector<string> vec;
    int i;
    while (cin >> word) {
        for (i = 0; i < word.length(); ++i)
            word [i] = toupper(word[i]);
        vec.push_back(word);
    }
    i = 0;
    for (auto &w : vec) {
        if (i == 8) {
            cout << endl;
            i = 0;
        }   
        cout << w << " ";
        ++i;
    }
        
    return 0;
}
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 2
06.03.2019, 19:45 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
26
27
28
29
30
31
32
33
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using namespace std;
constexpr int k = 8;
 
int main()
{
    string word;
    vector<string> vec;
    size_t i;
 
    while (cin >> word) 
        vec.push_back(word);
 
    for (auto &word : vec)
        for (i = 0; i < word.length(); ++i)
            word[i] = toupper(word[i]);
 
    i = 0;
 
    for (auto word: vec) {
        if (i == k) {
            cout << endl;
            i = 0;
        }
        cout << word << " ";
        ++i;
    }
    cout << endl;
    return 0;
}
0
06.03.2019, 19:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2019, 19:45
Помогаю со студенческими работами здесь

Перевести первые буквы слов с верхний регистр
Всем привет) Нужна ваша помощь Необходимо перевести первые буквы слов в верхний регистр в @Name...

Работа с файлом. Перевести первые буквы слов в верхний регистр
Есть программа, которая берёт написанный текст и меняет все первые буквы слов на верхний регистр,...

Введите массив символов из 11 элементов. Переведите все строчные буквы-символы в верхний регистр
Введите массив символов из 11 элементов. Переведите все строчные буквы-символы в верхний регистр.

Что значит отобразить преобразованные элементы по восемь слов на строку? Vector
Здравствуйте. Пытаюсь перевести символы вектора(каждого элемента) в верхний регистр(может...


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

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