0 / 0 / 0
Регистрация: 26.01.2022
Сообщений: 83
1

Объединить две строки

09.03.2022, 21:17. Показов 1469. Ответов 31
Метки нет (Все метки)

Напишите программу на C++, которая принимает две строки символов с клавиатуры и отображает объединение двух строк.
(Подсказка: Используйте функцию cin.getline() для ввода строки)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2022, 21:17
Ответы с готовыми решениями:

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

Объединить две строки
Ввести с клавиатуры две строки, содержащие несколько слов. Объединить их в одну длинную строку и...

Объединить две текстовые строки
Можно ли как-нибудь вставить переменную в путь (там где звёздочка). Нужно что-бы название папки...

Объединить две строки чередуя их слова
помогите пожалуйста. никак не могу понять как его записать в код :wall: задано две строки ,...

Объединить две строки в одну строку
Здраствуйте, дано задание: Заданы два строки: «Скоро наступит лучшая», «Пора года». Объединить...

31
Модератор
2178 / 1541 / 837
Регистрация: 16.10.2013
Сообщений: 4,539
Записей в блоге: 12
10.03.2022, 06:55 2
Для конкатенации строк используйте перегруженный оператор+. 2 строки сами ввести сможете? а затем в третью строку записать их объединение.
0
1344 / 975 / 339
Регистрация: 29.06.2020
Сообщений: 3,748
10.03.2022, 07:01 3
Цитата Сообщение от Ramberdy Посмотреть сообщение
Напишите программу на C++, которая принимает две строки символов с клавиатуры и отображает объединение двух строк.
Неее, это слишком сложно
0
3 / 2 / 1
Регистрация: 13.02.2022
Сообщений: 13
10.03.2022, 13:33 4
Добрый день, вот мой вариант решения вашей задачи. Конечно можно проще и изящнее, но тоже работает.

Кликните здесь для просмотра всего текста
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
#include <iostream>
 
using namespace std;
 
int main()
{
    char str1[256];             // массив для сохранения первой строки
    char str2[256];             // массив для сохранения второй строки
    cin.getline(str1, 256);     // получаем от пользователя первую строку
    cin.getline(str2, 256);     // получаем от пользователя вторую строку
    
    int i = 0;
 
    for (int j= 0; j < 256; j++,i++)    // ищем терменирующий ноль обозначающей конец строки в первом массиве
    {
        if (str1[j] == '\0')
            break;
    }
    
    for (int j= 0; j < 256; j++,i++)    // ищем терменирующий ноль обозначающей конец строки во втором массиве
    {
        if (str2[j] == '\0')
            break;
    }
    
    char* str = new char[i];             // создаем ссылку на массив в динамической памяти под размер объединенных строк
    i = 0;
    
    for (int j= 0; j < 256; j++, i++)    // перебираем первый массив и записываем посимвольно в обобщенный
    {
        if (str1[j] == '\0')
            break;
        str[j] = str1[j];
    }
    
    for (int j= 0; j < 256; j++)         // перебираем второй массив и записываем посимвольно в конец общего
    {
        if (str2[j] == '\0')
            break;
        str[j+i] = str2[j];
    }
    
    cout << str;                         // выводим объединенную строку в консоль
    
    delete [] str;                       // очищаем динамическую память
 
    return 0;
}
0
140 / 119 / 44
Регистрация: 09.03.2016
Сообщений: 1,023
10.03.2022, 23:28 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
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std;
char *str1 = new char[256];
char *str2 = new char[256];
    
        cin.getline(str1, 256);     // получаем от пользователя первую строку
    cin.getline(str2, 256);     // получаем от пользователя вторую строку
    
int share_len = strlen(str1) + strlen(str2);
    
    char* str_share = new char[share_len +1];  
    
for (int j = 0; j < strlen(str1); ++j) str_share[j] = str1[j];
for (int j = strlen(str1); j <= share_len; ++j)str_share[j] = str2[j - strlen(str1)];
    
    cout << str_share;                         // выводим объединенную строку в консоль
 
    delete[] str_share; delete[] str1; delete[] str2; // очищаем динамическую память
 
                 cin.get();
    return 0;
}
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
10.03.2022, 23:32 6
Наталья8, ploutos, упрощаем )

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main()
{
    std::string str1; std::getline(std::cin,str1);
    std::string str2; std::getline(std::cin,str2);
    std::cout << str1+str2;
    return 0;
}
0
1344 / 975 / 339
Регистрация: 29.06.2020
Сообщений: 3,748
10.03.2022, 23:50 7
Цитата Сообщение от Алексей1153 Посмотреть сообщение
упрощаем )
Ну зачем же контору палить, теперь все будут знать про секретный std::string
0
140 / 119 / 44
Регистрация: 09.03.2016
Сообщений: 1,023
11.03.2022, 02:05 8
На std::string совсем не интересно.
то вам эфективность вектора не нравиться.
Вам не угодишь.
string делает resize. что замедляет процесс доения.

Добавлено через 7 минут
на плюсах много чего присходит под капотом.
машинист не контролирует.

Добавлено через 4 минуты
std::string в этом отношении имеет почти ту же внешнюю
интерфейсную спецификацию, что и std::vector.

Скажите ей
ex.resize(300);
и будет вам строка размера 300.
(stackoverflow.com)
0
1344 / 975 / 339
Регистрация: 29.06.2020
Сообщений: 3,748
11.03.2022, 02:53 9
Цитата Сообщение от Наталья8 Посмотреть сообщение
string делает resize. что замедляет процесс доения.
ага, лучше сразу пол=килобайта на два слова откусить ))
тут суть не в стрингах и панталонах, а в самом задании, и его наличия на форуме )
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
11.03.2022, 05:54 10
Цитата Сообщение от Наталья8 Посмотреть сообщение
Вам не угодишь.

Не по теме:

угодишь-угодишь! Ой, лиса :D

(c)

Цитата Сообщение от Наталья8 Посмотреть сообщение
машинист не контролирует.
всё прекрасно контролируется

и багов нету )

Добавлено через 1 минуту
Наталья8, ты вот лучше форматирование освой, глаза людей пожалей
0
571 / 312 / 161
Регистрация: 19.12.2016
Сообщений: 1,259
11.03.2022, 10:07 11
Еще короче
C++
1
2
std::string str1, str2; std::getline(std::getline(std::cin,str1),str2);
std::cout << str1+str2;
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
11.03.2022, 10:38 12
ram876, а вот так ещё короче, только зачем?
C++
1
2
#include <iostream>
int main(){std::string a,b;getline(getline(std::cin,b),a);std::cout<<a+b;}
читабельность страдает
0
571 / 312 / 161
Регистрация: 19.12.2016
Сообщений: 1,259
11.03.2022, 10:40 13
Алексей1153, Чтобы другие изучающие видели, что можно много чего придумать. Так даже интереснее учить (лично мне).
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
11.03.2022, 10:43 14
ram876, зачем учить их заведомо плохому?
0
571 / 312 / 161
Регистрация: 19.12.2016
Сообщений: 1,259
11.03.2022, 10:54 15
Цитата Сообщение от Алексей1153 Посмотреть сообщение
заведомо плохому
Вот, теперь прочитавший тему новичок подумает, что лучше так не делать. Еще одно знание в копилку. Но, например, в примерах по ошибкам приводится такой пример исправления
C++
1
(cin >> n).get();
Значит, не всем это кажется неправильным.
0
140 / 119 / 44
Регистрация: 09.03.2016
Сообщений: 1,023
11.03.2022, 13:18 16
Можно так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std;
    short vol(256);
    char *str1 = new char[vol];
    char *str2 = new char[vol];
    cin.getline(str1, vol);     // получаем от пользователя первую строку
    cin.getline(str2, vol);     // получаем от пользователя вторую строку
int share_len = strlen(str1) + strlen(str2);
    char* str_share = new char[share_len +1];  
//-----------------------------
strcpy_s(str_share, share_len + 1, str1); strcat_s(str_share, share_len + 1, str2);
    cout << str_share;                         // выводим объединенную строку в консоль
delete[] str1; delete[] str2; delete[] str_share;// очищаем динамическую память
                 cin.get();
    return 0;
}
Добавлено через 2 минуты
//-----------------------------
strcpy_s(str_share, share_len + 1, str1); strcat_s(str_share, share_len + 1, str2);
(весёлая строчка)

Добавлено через 3 минуты
Пол часа выковыривал.
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
11.03.2022, 13:24 17
Цитата Сообщение от ram876 Посмотреть сообщение
(cin >> n).get();
так это читаемость не снижает, а даже наоборот - объединяет выполненное действие и необходимый костыль (вычитка переноса строки) в одно выражение
0
140 / 119 / 44
Регистрация: 09.03.2016
Сообщений: 1,023
11.03.2022, 13:28 18
C++
1
2
3
4
5
6
7
8
9
10
11
string in_file("");
    *strrchr(out_filename, '\\') = '\0'; // ====== ноль вместо последнего слеша;
    // ---------- Подставить номер, если создаваемый файл существует
    int number(0); std::string str_num(""); std::string name(out_filename);// ============
    // ------------
    while (access((name + "\\clip" + str_num + ".mp4").c_str(), 0) == 0)// Это string (проверка наличия папки)
    {
        number++; std::stringstream ss; ss << number; str_num = "(" + ss.str() + ")";
    } // преобразование int в std::string
    name = "\\clip" + str_num + ".mp4";
    strcat(out_filename, name.c_str());// --- добавим имя файла
0
фрилансер
4171 / 3579 / 799
Регистрация: 11.10.2019
Сообщений: 9,639
11.03.2022, 13:29 19
Наталья8, я ещё понимаю, если бы массивы на стеке были. А динамические массивы - всё тот же std::string, только на целый экран, да ещё на 512+ байтов принудительного выделения памяти. И ещё сидеть час героически баги вычищать Ну, для обучения и тренировки - пойдёт такое упражнение, но на этом можно и остановиться. И перейти к использованию std::string
0
140 / 119 / 44
Регистрация: 09.03.2016
Сообщений: 1,023
11.03.2022, 13:32 20
Сборка имяни файла.
Эксклюзив наверное. Пользуюсь.

Добавлено через 1 минуту
Работаю и со string, если необходимо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2022, 13:32
Помогаю со студенческими работами здесь

Объединить две текстовые строки типа char*
Добрый подскажите решение перебрал всё что только можно, но не пойму как вывести это. #include...

Объединить две строки и подправить регулярное выражение
В общем задача на уровне для новичка, но я ее резко не осилила. Может еще сама соображу, но вчера...

Объединить две строки и добавить между ними пробел
Здраствуйте... у меня проблема со строками... есть 2 строки и их нужно объединить в m3 +...

Исправить ошибку! Ввести две строки, если str1!=str2, то объединить их
С помощью указателя на функцию нужно было реализовать программу, которая сравнивает две строки,...

Объединить две строки в одну строку в котором все символы верхнего регистра заменят символы нижнего регистра
Здраствуйте, дано задание: Заданы два строки: «Скоро наступит лучшая», «Пора года». Объединить...

Объединить две очереди в одну, как создать две очереди
&quot;Объединить две очереди в одну, чередуя элементы первой и второй очереди. Основной вопрос как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru