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

строки

13.09.2011, 15:02. Показов 977. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
слово "толстый" выделить слово "тол" создать из него слова "стол"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2011, 15:02
Ответы с готовыми решениями:

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки,...

Удалить строки, начиная со строки К1 и до строки К2 (динамические массивы)
#include <iostream> #include <ctime> #include <stdlib.h> using namespace std; int main() { srand((int)time(0)); ...

11
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.09.2011, 15:34
Решение может быть как тривиальным - выделить из строки 3 первых символа и перед ними записать 4-ый или же нужно разбить слово на слоги, и перед первым слогом вставить 1-ую букву из второго слога - этот вариант сложен и предполагает лексический разбор слова. Какой вариант нужен?
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 16:14
выделением символов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
        string a("толстый"),b;
    cout << a << endl;
    b=a.substr(0,3);
    cout << b << endl;
    b=a[3]+b;
    cout << b << endl;
    system ("pause");
}
0
Заблокирован
13.09.2011, 18:47
Цитата Сообщение от Pavel17 Посмотреть сообщение
слово "толстый" выделить слово "тол" создать из него слова "стол"
В зависимости от языка программирования, С или С++, эта задача решается по разному. если на С, то надо пользоваться функцией strstr, чтобы найти в ней подстроку "тол", затем с помощью malloc выделить необходимую память и скопировать туда найденную строку. предварительно занеся в первый байт памяти символ 'с'.

Если делать на С++, то надо использовать шаблонный класс std::string и соответствующий метод этого класса find() для поиска подстроки, а затем создать новую строку на основе найденно подстроки и с помощью оператора + добавить в начало символ 'с'/
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 18:57
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
        string b='c'+a.substr(a.find("тол"),strlen("тол"));
    cout << a << endl << b << endl;
        system ("pause");
}
0
Заблокирован
13.09.2011, 19:12
Цитата Сообщение от softmob Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
        string b='c'+a.substr(a.find("тол"),strlen("тол"));
    cout << a << endl << b << endl;
        system ("pause");
}
Во-первых, в С++ функция main должна объявляться как

C++
1
int main()
Во-вторых, надо делать проверку на то, что подстрока действительно найдена. То есть нельзя так писать в одну строчку, как это сделали вы

C++
1
string b='c'+a.substr(a.find("тол"),strlen("тол"));
Надо делать проверку на неравенство std::string::npos.
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 19:27
а зачем int main() если функция нечего не должна возвращать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
    string::size_type loc1 = a.find( "тол", 0 );
        if (loc1!=string::npos)
        {
                string  b='c'+a.substr(loc1,strlen("тол"));
        cout << a << endl << b << endl;
        }
        else
        {
        cout << "Не найдено 'тол'" << endl;
        }       
        system ("pause");
}
0
Заблокирован
13.09.2011, 19:29
Цитата Сообщение от softmob Посмотреть сообщение
а зачем int main() если функция нечего не должна возвращать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
    string::size_type loc1 = a.find( "тол", 0 );
        if (loc1!=string::npos)
        {
                string  b='c'+a.substr(loc1,strlen("тол"));
        cout << a << endl << b << endl;
        }
        else
        {
        cout << "Не найдено 'тол'" << endl;
        }       
        system ("pause");
}
И void main() исправьте на int main().
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 19:31
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
        string::size_type loc1 = a.find( "тол", 0 );
        if (loc1!=string::npos)
        {
                string  b='c'+a.substr(loc1,strlen("тол"));
        cout << a << endl << b << endl;
        }
        else
        {
        cout << "Не найдено 'тол'" << endl;
        }       
        system ("pause");
        return 0;
}
0
Заблокирован
13.09.2011, 19:34
Цитата Сообщение от softmob Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
        string::size_type loc1 = a.find( "тол", 0 );
        if (loc1!=string::npos)
        {
                string  b='c'+a.substr(loc1,strlen("тол"));
        cout << a << endl << b << endl;
        }
        else
        {
        cout << "Не найдено 'тол'" << endl;
        }       
        system ("pause");
        return 0;
}
А вот return 0; можно было не добавлять.

Ставлю вам оценку "хорошо", можете идти домой!
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 20:33
Цитата Сообщение от Сыроежка Посмотреть сообщение
Во-вторых, надо делать проверку на то, что подстрока действительно найдена. Надо делать проверку на неравенство std::string::npos.
а если без std::string::npos проверять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        string a("толстый");
        int loc1 = a.find("тол");
                if (loc1!=-1)
                {
                string  b='c'+a.substr(loc1,strlen("тол"));
                cout << a << endl << b << endl;
                }
                else
                {
                cout << "Не найдено 'тол'" << endl;
                }               
        system ("pause");
}
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
13.09.2011, 20:52
softmob, всегда подключай все хидеры функции из которых используешь
strlen - <cstring>
setlocale - <clocale>
system - <cstdlib>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2011, 20:52
Помогаю со студенческими работами здесь

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Чтение через fscanf_s части строки с пробелом (и запись этой же строки)
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...

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

Функция: поместить все цифры в начало строки, а буквы в конец строки
Дана строка, состоящая из букв и цифр. Написать функцию, которая помещает все цифры в начало строки, а буквы в конец строки (без...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru