Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 08.01.2020
Сообщений: 18

Функция возвращающая строку состоящую из первых символов слов

08.01.2020, 11:25. Показов 4563. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста с задачей
Написать функцию, которая получает строку и возвращает строку, состоящую из первых символов слов строки. Написать пример обращения к функции.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2020, 11:25
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Recrut_rf
388 / 333 / 65
Регистрация: 14.10.2014
Сообщений: 1,426
08.01.2020, 14:03
Лучший ответ Сообщение было отмечено Rinalinao как решение

Решение

Rinalinao,

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
58
59
#include <iostream>
 
using namespace std;
 
 
char*  func(char *strSource, char * strDest, int n)
{
    int spaceCount = 0;
    int index = 0;
 
    for (int i = 0; i < n - 1; ++i)
    {
        if (strSource[i] == ' ')
            ++spaceCount;
 
        if (i == 0 && strSource[i] != ' ')
            strDest[index++] = strSource[i];
 
        if (i == 0 && spaceCount > 0)
        {
            strDest[index++] = strSource[i + 1];
            spaceCount = 0;
        }
 
        if (i > 0 && spaceCount > 0) 
        {
            strDest[index++] = strSource[i + 1];
            spaceCount = 0;
        }       
    }
 
    strDest[index] = 0;
    return strDest;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char str[] = " Hello World! hello world 1 12 3";
    int size = strlen(str) + 1;
 
    char *dest = new char[size];
 
    for (int i = 0; i < size; ++i)
        dest[i] = 0;
 
    dest = func(str, dest, size);
 
    int i = 0;
    for (; dest[i] != '\0'; i++)
        cout << dest[i] << ' ';
 
    cout << endl;
 
    delete[] dest;
 
    return 0;
}
Если что-то непонятно - пишите, объясню
1
1 / 1 / 0
Регистрация: 08.01.2020
Сообщений: 18
08.01.2020, 21:21  [ТС]
Recrut_rf, Огромное спасибо! Очень помогли
Можно еще спросить про эту же задачу, если строка будет не из первых символов слов состоять, а из последних
То есть часть условия такая, а то тоже не совсем получается
if (i > 0 && strSource[i+1] == ' ')
{
strDest[index++] = strSource[i];
}
if (i == size)
{
strDest[index++] = strSource[i];
}
0
 Аватар для Recrut_rf
388 / 333 / 65
Регистрация: 14.10.2014
Сообщений: 1,426
09.01.2020, 00:21
Лучший ответ Сообщение было отмечено Rinalinao как решение

Решение

Rinalinao, если надо вывести последние символы слов строки, то

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>
 
using namespace std;
 
 
char*  func(char *strSource, char * strDest, int n)
{
    int spaceCount = 0;    // 
    int index = 0;
 
    for (int i = 0; i < n/* - 1*/; ++i)       // здесь было n - 1 но нам нужно сейчас n 
    {                                     // (потому как strSource[i - 1] а было strSource[i + 1])
        if (strSource[i] != ' ')        // если i-ый элемент не равен пробелу
            ++spaceCount;               // увеличиваем счётчик (то есть это начало слова)
        
 
        if (strSource[i] == ' ' && spaceCount > 0)  // если i-ый элемент равен пробелу, а счётчик spaceCount больше 0
        {                                           // значит мы нашли конец слова (он будет на предыдущем элементе (i - 1))
            strDest[index++] = strSource[i - 1];    // кладём элемент i-1 в массив, содержащий символы конца слов 
            spaceCount = 0;                        // и обнуляем счётчик
        }
 
        if (strSource[i] == '\0' && spaceCount > 0)  // это случай, когда слово состоит из одного символа и находится в конце строки
        {
            strDest[index++] = strSource[i - 1];
            spaceCount = 0;
        }
    }
 
    strDest[index] = 0;                      // обязательно в возвращаемую строку кладем нулевой символ 
    return strDest;                          // потому как не забываем - в плюсах строки заканчиваются нулевым символом 0 или '\0'
}
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char str[] = " Hello World! hello world 1 12 3";  // тестовая строка
    int size = strlen(str) + 1;                       // находим её размер и прибавляем 1 (strlen - возвращает кол-во символов без нулевого символа)    
 
    char *dest = new char[size];                     // создаём массив из кучи под размер тестовой строки (можно и меньше но так проще всего)
 
    for (int i = 0; i < size; ++i)                   // инициализируем его нулем, чтоб там мусор всякий не валялся
        dest[i] = 0;
 
    dest = func(str, dest, size);
 
    int i = 0;
    for (; dest[i] != '\0'; i++)                    // выводим строку с нужными символами
        cout << dest[i] << ' ';
 
    cout << endl;
 
    delete[] dest;
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 08.01.2020
Сообщений: 18
09.01.2020, 15:39  [ТС]
Recrut_rf, очень вам благодарна, спасибо еще раз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2020, 15:39
Помогаю со студенческими работами здесь

Сформулируйте литерную величину А, состоящую из первых букв слов входящих в строку В
2)дана строка слов В. Сформулируйте литерную величину А, состоящию из первых букв слов входящих в строку В.

Сформировать строку, состоящую из первых двух символов каждого слова исходной строки
Помогите пожалуйста решить 2 задачи на строки: 1) Сформировать строку, состоящую из первых двух символов каждого слова исходной...

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

Вывести строку, состоящую из первых двух и последних двух символов заданной строки
Дана строка. Вернуть и вывести строку, состоящую из первых двух и последних двух символов заданной строки. Если исходная строка меньше двух...

Сформировать строку, состоящую из всех слов исходной строки, длина которых меньше восьми символов
Сформировать строку, состоящую из всех слов исходной строки, длина которых меньше восьми символов.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru