Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/124: Рейтинг темы: голосов - 124, средняя оценка - 4.76
4 / 2 / 0
Регистрация: 02.03.2009
Сообщений: 54

Работа с текстом

04.08.2009, 18:59. Показов 23479. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача C++:
Даны натуральное число n, символы s1 ...,sn.. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами.
а) Подсчитать количество слов в данной последовательности.
б) Подсчитать количество букв а в последнем слове данной последовательности.
в) Найти количество слов, начинающихся с буквы б.
г) Найти количество слов, у которых первый и последний символы совпадают между собой.
д) Найти какое-нибудь слово, начинающееся с буквы а.
е) Преобразовать данную последовательность, заменяя всякое вхождение слова это на слово то.
ж) Найти длину самого короткого слова.


Как введенные слова вставить в символьный массив например char s[n] и удалить пробелы , каждое слово это отдельный элемент массива ,и как работать отдельно со словами т.е слово это отдельный текстовый массив ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2009, 18:59
Ответы с готовыми решениями:

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

При вводе в текстовое поле, текст из этого поля автоматически добавлять в определённое место в textarea
Всем привет. Как можно сделать чтобы при вводе в текстовое поле, текст из этого поля автоматически добавлялся в определённое место в...

Удалить из строки всё, что стоит перед символом (он один в тексте) и ещё 2 символа после него
Привет всем, нужно удалить из строки всё, что стоит перед символом (он один 1 в тексте) и ещё 2 символа после него. Можно как то это...

9
12 / 12 / 2
Регистрация: 08.07.2009
Сообщений: 45
04.08.2009, 21:31
Для всех задач кроме е) будет удобнее разбить введенный тобою массив символов на массив слов. В этом случае ты будешь работать с подобием двумерного массива. Для задачи е) проще будет работать прямо с цельной строкой.

И если ты используешь C++, то можешь пользоваться типом string вместо char[].
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
04.08.2009, 21:51
Да как угодно вообщем.
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
// Исходный массив
char *s= "???????";
int n= strlen( s );
 
// Скопируем.
char *d= strdup( s );
 
// Пусть слов не более MAX_WORDS.
#define MAX_WORDS 100
char *word[MAX_WORDS];
 
// Длина слова
int word_len[MAX_WORDS];
 
// Кол-во слов
int nword= 0;
 
// Сканируем пробелы, заполняем массив word[].
// При этом word[0] указывает в массив d на первое слово.
// word[1] - указывает на следующее слово и так далее.
// При этом все слова должны закачиваться '\0' - немного испортим массив d.
...
 
// Печать всех слов
printf( "Всего слов: %d\n", nword );
for ( i= 0; i<nword; i++ ) {
    printf( "слово %d |%s|\n", i, word[i] );
}
0
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
04.08.2009, 21:51
C++
1
2
3
4
5
6
7
8
9
10
#include <vector>
#include <string>
#include <algorithm>
...
int main()
{
vector<string>v;
v.push_back("All words")
v.do_something_what_you_want_in_your_task//
}
Через вектор , его команды и алгоритмы find(),count()и т.д можно сделать все пункты
0
4 / 2 / 0
Регистрация: 02.03.2009
Сообщений: 54
04.08.2009, 22:17  [ТС]
Через вектор , его команды и алгоритмы find(),count()и т.д можно сделать все пункты
Эт как ? можно через функции STL или как проще ?

Для всех задач кроме е) будет удобнее разбить введенный тобою массив символов на массив слов. В этом случае ты будешь работать с подобием двумерного массива
S[1,n]=слово как в двухмерный массив забить ?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
04.08.2009, 22:20
vector - это и есть STL.
Видимо тебе задачу дали, чтобы ты STL изучил
0
12 / 12 / 2
Регистрация: 08.07.2009
Сообщений: 45
04.08.2009, 22:39
C++
1
2
3
4
std::string c[3];
c[2]="dfsdfsdf";
std::cout<<c[2]<<std::endl;
std::cout<<c[2][4]<<std::endl;
Вот так примерно создается массив слов. Каждое слово - строка.
Если таки не хочешь использовать string, то используй для присваивания strcpy в двумерных чаровских массивах.
Но вообще Sekt прав по поводу векторов - ими удобнее. Однако, если ты с указателями еще не на "короткой ноге", лучше пока не пользуйся векторами.
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
05.08.2009, 01:20
Цитата Сообщение от $tudent Посмотреть сообщение
Эт как ? можно через функции STL или как проще ?
както так..
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 <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
#include <string>
 
struct equal_to_char{
    equal_to_char(char _ch = 'a'):ch(_ch){
 
    } 
    bool operator () (const std::string &rhs){
        return rhs[0] == ch;
    }
private:
    char ch;
};
 
template< typename _It >
struct first_equal_last{
    bool operator () (const _It &rhs){
        return *rhs.begin() == *rhs.rbegin();
    }
};
 
int main() {
    std::string words = "bbcb  dfgh eto ac fsff eto biot bvvv aaa eto aaa ";
    std::vector<std::string> word;
    {
        std::stringstream ss(words);
        std::copy(
            std::istream_iterator<std::string>(ss),
            std::istream_iterator<std::string>(),
            back_inserter(word)
            );
    }
    //а) Подсчитать количество слов в данной последовательности.
    std::cout << "count: " << word.size() << std::endl;
 
    //б) Подсчитать количество букв а в последнем слове данной последовательности.
    std::vector<std::string>::reverse_iterator i = word.rbegin();
    std::cout << (int)std::count(i->begin(), i->end(), 'a') << std::endl;
 
    //в) Найти количество слов, начинающихся с буквы б.
    std::cout << (int)std::count_if(word.begin(), word.end(), equal_to_char('b'))  << std::endl;
 
    //г) Найти количество слов, у которых первый и последний символы совпадают между собой.
    std::cout << (int)std::count_if(word.begin(), word.end(), first_equal_last<std::string>()) << std::endl;
 
    //д) Найти какое-нибудь слово, начинающееся с буквы а.
    std::cout << *std::find_if(word.begin(), word.end(), equal_to_char('a')) << std::endl;
 
    //е) Преобразовать данную последовательность, заменяя всякое вхождение слова это на слово то.
    std::replace(word.begin(), word.end(), std::string("eto"), std::string("to"));
    std::copy(word.begin(), word.end(), std::ostream_iterator<std::string>(std::cout," "));
    std::cout << '\n';
 
    return 0;
}
1
4 / 2 / 0
Регистрация: 02.03.2009
Сообщений: 54
05.08.2009, 09:53  [ТС]
ISergey
Как с клавиатуры слова ввести ? через cin>> идет не правильная работа программы и как с русским языком подружить MS-DOS ?
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
05.08.2009, 17:13
Цитата Сообщение от $tudent Посмотреть сообщение
Как с клавиатуры слова ввести ?
C++
1
getline(std::cin, words);
Цитата Сообщение от $tudent Посмотреть сообщение
как с русским языком подружить MS-DOS ?
https://www.cyberforum.ru/cpp-... 662-4.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2009, 17:13
Помогаю со студенческими работами здесь

Работа с текстом
Доброго времени суток. Есть документ, в котором хранится информация. Пример: Size bd 36 _____________________________ sosafsdvxc ...

Прочитать текстовый файл, вычислить среднее время на устранение отклонения
Ребят дан текстовый файл(например лог.txt,всего тысяча строк), внутри такая структура: номер события,код узла,номер отклонения, дата...

Работа с текстом...
Всем доброго времени суток ... Такая ситуация - загружаю через диалог в RichEdit1 - определённый текстовик с текстом. Вопрос: как сделать...

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

Работа с текстом
Всем привет! Помогите, пожалуйста, написать следующую программу: Программа с помощью прочитанного файла должна каждой букве русского...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
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