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

Составить из двух слов одно

26.10.2017, 18:09. Показов 6112. Ответов 29
Метки си (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, натолкните на идею, как сделать данное задание.

задание заключается в следующем :
из потока ( входного) читается несколько строк, в каждой из этих строк 2 слова, которые разделены пробелом. длина каждого слова не должна быть больше чем 32 символа . Необходимо для каждой пары слов( которые вводили) получить 1 единственное слово( окончание первого должно совпадать с началом второго)
Название: Безымянный.png
Просмотров: 97

Размер: 2.2 Кб
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2017, 18:09
Ответы с готовыми решениями:

Из двух цифр составить одно число
как сделать чтобы 2 цифры стали одним числом? т.е. как то так int a = 1; int b = 2; int c = ... //c == 12

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

Нужен совет по решению - из двух натуральных чисел составить одно наименьшее.
Минимальное число Требуется написать программу, которая из цифр двух натуральных чисел создает наименьшее возможное число, сохраняя при...

29
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
26.10.2017, 18:12
C++
1
2
3
4
5
6
7
string s1,s2;
while(true)
{
   cin>>s1>>s2;
   s1+=s2;
   cout<<s1;
}
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
26.10.2017, 18:16  [ТС]
zss, а на си как это будет? и какие библиотеки нужно включать? просто была 1 лекции по строкам, ничего не понял
0
 Аватар для stzer
140 / 110 / 60
Регистрация: 26.10.2013
Сообщений: 314
26.10.2017, 18:21
zss, вы не прочитали задание полностью, ваше решение некорректно.
0
0 / 0 / 0
Регистрация: 03.03.2017
Сообщений: 23
26.10.2017, 19:39
Писать оба слова в массивы (gora и raduga, например), сравнивать последний элемент gora и первый raduga, если совпали - удалять последний элемент gora или первый raduga, потом складывать, как сказал zss

Добавлено через 11 минут
Ошибся. Не сработает. Нужно сравнивать (длина массива - х)'ый элемент массива в цикле, с х = длина кратчайшего массива и последующим инкрементом, если совпало - удалять последний удалять последний элемент gora или первый raduga.
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
29.10.2017, 14:45  [ТС]
Здравствуйте, натолкните на идею, как сделать данное задание.

задание заключается в следующем :
из потока ( входного) читается несколько строк, в каждой из этих строк 2 слова, которые разделены пробелом. длина каждого слова не должна быть больше чем 32 символа . Необходимо для каждой пары слов( которые вводили) получить 1 единственное слово( окончание первого должно совпадать с началом второго)Название: Безымянный.png
Просмотров: 67

Размер: 2.2 Кб
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
29.10.2017, 15:21  [ТС]
Байт, натолкнули на одну идею:

string s1,s2;
while(true)
{
cin>>s1>>s2;
s1+=s2;
cout<<s1;
}

но это на си ++

Добавлено через 4 минуты
Байт, идея не моя, просто я вообще не представляю как это сделать, в моей голове представляется так, что надо разобрать два случая: если окончания одинаковые и если окончания разные
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.10.2017, 16:53
nilsonafter, Так у вас получится "горарадуга".
Я бы взял последнюю букву 1-го слова (подстроку из одной буквы) и первую 2-го. Сравнил. Не совпали - плохо дело. Совпали - берем подстроку длины 2. И так далее, пока совпадает. Потом отрубаем хвост первого слова, и вот теперь уже s1 += s2
В плюсах есть специальные функции работы с подстроками. Но и в Си это несложно смоделировать.

Добавлено через 2 минуты
Нет, обманул я вас. Чуток не так.
Берем все первое слови и проверяем, не совпадет ли с ним начало второго. Не совпало? - отрубаем от первого одну букву с начала.
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
29.10.2017, 16:55  [ТС]
Байт, а какие библиотеки нужно включить? просто у нас была всего 1 лекция по строкам, и я там ничего не понял.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.10.2017, 17:19
Как-то так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
char s1[]="гора";
char s2[]="радуга";
char res[100];
char *p;
int i;
for(p=s1; *p!=0; p++) {
  for(i=0; i<strlen(p); i++)
     if (p[i]!=s2[i]) break;
  if (i==strlen(p)  break;
}
*p = '\0';
strcpy(res, s1);
strcat(res, s2);
printf("%s\n", res);
Псевдокод. Не проверял.
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
29.10.2017, 18:31  [ТС]
[niБайт, миллион ошибок, но я попробую как-нибудь разобраться
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
29.10.2017, 19:21
Сделал в лоб
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
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <string.h>
#define MAX_WS  64
#define MAX_LEN 128
#define W_LEN   64
int is_cmp(const char* s1, const char* s2);
int get_words(char* arr[], int N, char* s, size_t len);
 
int main(void){
    int   i, j, n;
    char* arr[MAX_WS], w[W_LEN];
    char  buf[MAX_LEN] = "ERLANG, COBOL, UNIX, PERL, SUN, abXYZC, XYZCpp";
/*
    printf("Enter: ");
    fgets(buf, MAX_LEN, stdin);
*/
    n = get_words(arr, MAX_WS, buf, W_LEN / 2);
    for(i = 0; i < n; ++i){
        if(arr[i] == NULL)
            continue;
 
        for(j = i + 1; j < n; ++j){
            if(arr[j] == NULL || i == j)
                continue;
 
            w[0] = '\0';
            if(is_cmp(arr[i], arr[j]))
                strcat(strcpy(w, arr[i]), arr[j]);
            else if(is_cmp(arr[j], arr[i]))
                strcat(strcpy(w, arr[j]), arr[i]);
 
            if(w[0]){
                puts(w);
                arr[j] = arr[i] = NULL;
                break;
            }
        }
    }
    getchar();
    return 0;
}
 
//сравнение
int is_cmp(const char* s1, const char* s2){
    const char* a, *b;
    while(*s1){
        a = s1;
        b = s2;
        while(*a && *b && (*a == *b)){
            ++a;
            ++b;
        }
 
        if(!*a && *b && (a - s1) > 1 && (b - s2) > 1)
            return 1;
        ++s1;
    }
    return 0;
}
 
//получение слов
int get_words(char* arr[], int N, char* s, size_t len){
    const char delim[] = " \t\n,.!?";
    int i = 0;
    for(s = strtok(s, delim); (i < N) && (s != NULL); s = strtok(NULL, delim)){
        if(strlen(s) < len)
            arr[i++] = s;
    }
    return i;
}
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
31.10.2017, 21:30  [ТС]
не получается сделать через строки.
2 слова разделенные пробелом, длина каждого слова не более 32 символов.
Нужно для каждой пары слов получить новое слово, так, чтобы окончание 1 совпадало с началом 2.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
stding s1, s2;
while(true)
{
cin>>s1>>s2;
s1+=s2;
cout<<s1;
while
{
cin>>s2>>si
s2+=s1
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 21:39
В отдельный string суммируй.
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
31.10.2017, 21:47  [ТС]
nmcf, можете пожалуйста пример привести? не понимаю просто
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 21:55
C++
1
s3 = s1 + s2;
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
31.10.2017, 22:01  [ТС]
nmcf, все равно не получается, я походу понял, что там эту пару слов должен вводить человек с клавы
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 22:09
Это 4-я строка. Вводи.
0
0 / 0 / 0
Регистрация: 03.10.2017
Сообщений: 73
01.11.2017, 00:29  [ТС]
nmcf, не работает.
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
01.11.2017, 06:28
Цитата Сообщение от nilsonafter Посмотреть сообщение
2 слова разделенные пробелом, длина каждого слова не более 32 символов.
Нужно для каждой пары слов получить новое слово, так, чтобы окончание 1 совпадало с началом 2.
Что значит "для каждой пары"?
Даётся два слова, или всё таки вводится строка, содержащая несколько пар слов?
Если вводится строка из нескольких пар слов, то задача сводится к тому, чтобы убрать в строке нечетные пробелы.
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
//проверено в Visual Studio 2017
//вводим, например: qwe rty uio pas
//получаем: qwerty uiopas
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s; 
    getline (cin,s);
 
    int l = s.length();//длина строки с пробелами
 
//убираем нечетные пробелы
    string s1="";//новая пустая строка для объединённых пар слов
    int k=0; //счетчик пробелов
 
    for (int i = 0; i < l; i++)
    {
        if (s[i] == ' ')
        {
            k++;
            //если пробел нечетный, то игнорируем 
            if (k % 2 != 0)
                continue;
        }
        s1 = s1 + s[i];
    }
cout << s1 << endl;
system ("pause");
return 0;
}

А если вводится два слова, разделённые пробелом, то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//вводим, например: qwe rty
//получаем: qwerty
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1,s2,s3; 
    cin >> s1 >> s2;
    s3 = s1 + s2;
 
    cout << s3 << endl;
system ("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2017, 06:28
Помогаю со студенческими работами здесь

В массиве слов найти пару слов, из которых одно является обращением другого
Дали задачку, вроде простая, а мыслей нет(( вопрос как организовать поиск слов)) ну собственно задание: В массиве слов найти пару...

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

Сравнение двух слов одно JTextField второе из базы
Хочу сделать окно авторизации для использования базы данных(Access), мысль такая, при вводе логина и пароля он должен проверить есть такой...

Из каждой группы подряд идущих одинаковых слов составить только одно (с использованием указателей)
Имеется список слов. Из каждой группы подряд идущих одинаковых слов составить только одно. Нужно использовать указатели. Можете хотя бы ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru