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

Напечатать все слова отличные от последнего слова

16.04.2021, 23:13. Показов 5255. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: перенести первую букву в конец слова.

 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.

String нельзя использовать.
Vector тоже нельзя.
Текст задан char'ом.
Нужно использовать самописную функцию в решении. То есть сначала пишется функция которая это всё делает, а потом уже она используется в int main().
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2021, 23:13
Ответы с готовыми решениями:

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

Задан текст. Напечатать все слова, отличные от последнего слова
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: перенести...

23
 Аватар для analogov net
2532 / 1130 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
17.04.2021, 15:36
Лучший ответ Сообщение было отмечено Oyage как решение

Решение

Oyage, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void func( char *str )
{
    char word[32], last[32];
 
    for( stringstream ss( str ); ss >> word; )
        memmove( last, word, sizeof( word ) );
 
    for( stringstream ss( str ); ss >> word; )
        if( strcmp( word, last ) )
            cout << word + 1 << *word << ' ';
}
 
int main()
{
    char text[128] = "one two three three one two one three two";
 
    cout << "string: " << text << endl;
    cout << "result: ";
    func( text );
 
    cout << endl;
    return 0;
}
2
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
21.04.2021, 14:08  [ТС]
analogov net, совсем не запускается, много ошибок выдаёт
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
21.04.2021, 14:18
Лучший ответ Сообщение было отмечено Oyage как решение

Решение

Цитата Сообщение от Oyage Посмотреть сообщение
совсем не запускается, много ошибок выдаёт
Добавляйте
C++
1
2
3
4
5
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
сверху кода !
2
 Аватар для analogov net
2532 / 1130 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
21.04.2021, 17:27
Цитата Сообщение от Oyage Посмотреть сообщение
много ошибок выдаёт
Oyage, и ты хочешь, что бы я угадывал какие это ошибки?
Если то, что тебе Volga_ написал не помогло, то выкладывай сюда список ошибок, посмотрим...
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
21.04.2021, 17:33  [ТС]
analogov net,
Цитата Сообщение от Oyage Посмотреть сообщение
String нельзя использовать.
Просто есть еще такое условие
Код заработал, но include string нельзя использовать
0
 Аватар для analogov net
2532 / 1130 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
21.04.2021, 17:35
Oyage, а где я использую string?

Добавлено через 55 секунд
Цитата Сообщение от Oyage Посмотреть сообщение
но include string нельзя использовать
так покоцай его, он не нужен...
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
21.04.2021, 18:00  [ТС]
analogov net, а как работает stringstream и memmove? А то в гугле неясно описана работа
0
 Аватар для analogov net
2532 / 1130 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
21.04.2021, 18:53
Цитата Сообщение от Oyage Посмотреть сообщение
как работает stringstream и memmove?
stringstream - это <sstream>
memmove - это <cstring>

А тебе
Цитата Сообщение от Oyage Посмотреть сообщение
String нельзя использовать.
Vector тоже нельзя.
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
21.04.2021, 18:54  [ТС]
analogov net,
Цитата Сообщение от analogov net Посмотреть сообщение
stringstream - это <sstream>
memmove - это <cstring>
. Нет, я понимаю из каких это библиотек, а как именно это работает в коде?
0
 Аватар для analogov net
2532 / 1130 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
21.04.2021, 18:59
Oyage, эту инфу легко получить из открытых источников, это не засекреченная информация.
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
21.04.2021, 19:47
Oyage, если изучать Си++ почему огранить много условий так ? Не понял.
Но я предлагаю вам Си код:
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main()
{
    char str[200];
    printf("Enter a string:\n");
    gets_s(str);
    char* pch;
    char buff[100][20];
    pch = strtok(str, " ");
    int n = 0;
    while (pch != NULL)
    {
        strcpy(buff[n], pch);
        n++;
        pch = strtok(NULL, " ");
    }
    for (int i=0;i<n;i++)
        if (strcmp(buff[i],buff[n-1])==0)
            printf("%s\n", buff[i]);
    return 0;
}
Соответствует условию задачи или нет ?
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
28.04.2021, 18:04  [ТС]
Volga_,
Цитата Сообщение от Volga_ Посмотреть сообщение
почему огранить много условий так
Преподавателю 75+ лет
Обуславливает тем что мы должны учиться писать все сами без использования готовых функций и так далее

Добавлено через 35 минут
analogov net,
Цитата Сообщение от analogov net Посмотреть сообщение
эту инфу легко получить из открытых источников
+- разобрался в работе функций, но все же не могу понять как именно работает код
Можете пожалуйста пояснить?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.04.2021, 18:20
strtok при вызове с не-NULL в первом аргументе запоминает строку и выдаёт указатель на новую строку, содержащую первое слово. При последующих вызовах с NULL в первом аргументе выдаёт указатели на новые строки, с указателями на очередные слова. Далее в цикле strcpy копирует эти строки в n'ую строку двумерного массива символов buff .
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
28.04.2021, 18:24  [ТС]
TRam_, спасибо за описание этого кода, но я про тот что выше
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.04.2021, 18:42
for( stringstream ss( str ); ss >> word; ) - создать строковый поток считывания из строки str, и в цикле выполнять считывание из этого потока в строку word (в ss >> word), пока слова не кончатся (это аналог cin >>word; но не с клавиатуры, а из строки str ; в обоих случаях разделителем считается пробел ) - когда слова кончились, то ss >> word возвратит false (точнее будет преобразован в тип bool со значением false, а не true, если слово считалось), и при этом каждый раз копировать всё содержимое word[32] в last[32].

Затем повторить всё то же самое, но сравнивая строку(слово), содержащуюся в last, с очередным считанным в word. Если строки(слова) одинаковые, то выводить на печать.
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
28.04.2021, 18:54  [ТС]
TRam_, а как получается так что первая буква переносится в начало и выводятся только те слова, которые отличны от последнего?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.04.2021, 19:05
Цитата Сообщение от Oyage Посмотреть сообщение
которые отличны от последнего?
Вот тут чуть ошибся:
Цитата Сообщение от TRam_ Посмотреть сообщение
Если строки(слова) одинаковые, то выводить на печать.
То НЕ выводится на печать (strcmp возвращает 0 только если строки одинаковые). Значит остальные выведутся.

Цитата Сообщение от Oyage Посмотреть сообщение
первая буква переносится в начало
В cout << word + 1 << *word на вывод задаётся указатель на массив символов(строка) начиная со второго (а не первого, если б было просто cout << word) и далее выводится первый элемент (символ) строки (для массивов записи *word и word[0] эквивалентны)
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
28.04.2021, 19:33
Цитата Сообщение от Oyage Посмотреть сообщение
Преподавателю 75+ лет
Обуславливает тем что мы должны учиться писать все сами без использования готовых функций и так далее
Попробуйте без любой функции библиотеки:
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
71
72
#include <stdio.h>
 
int getLength(char* str)
{
    int i = 0;
    while (str[i])
        i++;
    return i;
}
 
int getWords(const char* base, char* target[])
{
    int n = 0, i = 0, j = 0;
 
    while(1)
    {
        if (base[i] != ' ')
        {
            target[n][j++] = base[i];
        }
        else 
        {
            target[n][j++] = '\0';
            n++;
            j = 0;
        }
        if (base[i] == '\0')
            break;
        i++;
    }
    return n + 1;
}
 
int eqStr(char* str1, char* str2)
{
    int len1 = getLength(str1);
    int len2 = getLength(str2);
    if (len1 != len2)
        return 0;
    int i = 0;
    while (str1[i])
    {
        if (str1[i] != str2[i])
            return 0;
        i++;
    }
    return 1;
}
 
int main()
{
    int n, i, j;
    const char* str = "This Dog is the white Dog";
    printf("The original string:\n\t%s\n", str);
 
    char* arr[20];
    for (i = 0; i < 20; i++)
        arr[i] = new char[20];
 
    n = getWords(str, arr);
    int k = getLength(arr[n-1]);
 
    printf("Words not the same with last word are:\n");
    for (i = 0; i < n - 1; i++)
        if (eqStr(arr[i], arr[n-1]) == 0)
            printf("\t%s\n", arr[i]);
 
    for (i = 0; i < 20; i++)
        delete[] arr[i];
 
    return 0;
}
Результат:
Code
1
2
3
4
5
6
7
The original string:
        This Dog is the white Dog
Words not the same with last word are:
        This
        is
        the
        white
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
28.04.2021, 20:05  [ТС]
Volga_, все идеально, только не хватает переноса первой буквы в конец
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2021, 20:05
Помогаю со студенческими работами здесь

Задан текст. Напечатать все слова, отличные от последнего слова
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела....

Напечатать все слова, отличные от последнего слова, предварительно преобразовать каждое из них по следующему правилу
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовать каждое из них по следующему правилу: удалить...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела....

Напечатать все слова отличные от последнего слова
Товарищи!!! Нужна помощь, есть такая вот задачка на плюсах: &quot;Задан текст напечатать все слова отличные от последнего слова, выполнить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru