Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Pavel17
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 43
#1

строки - C++

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

слово "толстый" выделить слово "тол" создать из него слова "стол"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 15:02     строки
Посмотрите здесь:

Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки - Java
Помогите пожалуйста! 1)Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки. 2)Дана...

Ввести строки и через n символов первой строки вставить вторую строку, и так до конца строки - C++ Builder
Помогите исправить баг задача состоит в следующем :ввести строку и простроку тоесть две строки и надо через (n) символов первой строки...

Сравнить строки, первый несовпадающий элемент строки-приемника записать в регистр AL, строки-источника - в DL - Assembler
Помогите написать программу на ассемблерене совсем еще разобрался с этим задание: Ввести с клавиатуры две строки одноразрядных...

Слить две строки, вставив символы одной строки между символами другой строки - Pascal
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой индекс j, что aj < bj, а для всех i < j ai =...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. - Turbo Pascal
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной...

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки. - Pascal
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
13.09.2011, 15:34     строки #2
Решение может быть как тривиальным - выделить из строки 3 первых символа и перед ними записать 4-ый или же нужно разбить слово на слоги, и перед первым слогом вставить 1-ую букву из второго слога - этот вариант сложен и предполагает лексический разбор слова. Какой вариант нужен?
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 16:14     строки #3
выделением символов:
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");
}
Сыроежка
Заблокирован
13.09.2011, 18:47     строки #4
Цитата Сообщение от Pavel17 Посмотреть сообщение
слово "толстый" выделить слово "тол" создать из него слова "стол"
В зависимости от языка программирования, С или С++, эта задача решается по разному. если на С, то надо пользоваться функцией strstr, чтобы найти в ней подстроку "тол", затем с помощью malloc выделить необходимую память и скопировать туда найденную строку. предварительно занеся в первый байт памяти символ 'с'.

Если делать на С++, то надо использовать шаблонный класс std::string и соответствующий метод этого класса find() для поиска подстроки, а затем создать новую строку на основе найденно подстроки и с помощью оператора + добавить в начало символ 'с'/
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 18:57     строки #5
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");
}
Сыроежка
Заблокирован
13.09.2011, 19:12     строки #6
Цитата Сообщение от 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.
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 19:27     строки #7
а зачем 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");
}
Сыроежка
Заблокирован
13.09.2011, 19:29     строки #8
Цитата Сообщение от 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().
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 19:31     строки #9
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;
}
Сыроежка
Заблокирован
13.09.2011, 19:34     строки #10
Цитата Сообщение от 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; можно было не добавлять.

Ставлю вам оценку "хорошо", можете идти домой!
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
13.09.2011, 20:33     строки #11
Цитата Сообщение от Сыроежка Посмотреть сообщение
Во-вторых, надо делать проверку на то, что подстрока действительно найдена. Надо делать проверку на неравенство 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");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2011, 20:52     строки
Еще ссылки по теме:

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

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй - Turbo Pascal
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

Строки. Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1 - Turbo Pascal
Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1.В строке S подсчитать кол-во вхождений строки S1.

БД с операциями: добавление новой строки, удаление строки, редактирование имеющейся строки - PascalABC.NET
Нужно создать базу данных в паскале, с операциями: добавление новой строки, удаление строки, редактирование имеющей строки. Желательно с...


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

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
13.09.2011, 20:52     строки #12
softmob, всегда подключай все хидеры функции из которых используешь
strlen - <cstring>
setlocale - <clocale>
system - <cstdlib>
Yandex
Объявления
13.09.2011, 20:52     строки
Ответ Создать тему
Опции темы

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