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

Инверсия предложения в С++

07.12.2018, 18:45. Показов 2381. Ответов 16

Author24 — интернет-сервис помощи студентам
Добрый вечер!
Помогите, пожалуйста, решил для себя выучить язык С++.
Выполняю следующее задание. (Не получается написать рабочий код):
Вводим предложение из n-слов (количество слов и символов в них не ограничено - МАССИВ ДИНАМИЧЕСКИЙ!). На выводе нужно получить то же предложение, но со случайным порядком слов
+
То же задание, но порядок слов в предложении обратный

......................
Пробовал выполнить, но получалось только изменить порядок символов внутри предложения (привет - тевирп)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2018, 18:45
Ответы с готовыми решениями:

Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения)
Дано два предложения. Распечатать: - слова из первого предложения, который начинаются на первую...

Разделить текст на предложения, предложения на слова. (через двумерный массив строк)
Задача заключается в том, что надо разделить текст на предложения, предложения на слова. Решил...

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

Вывести слово с номером K заданного предложения, считая с конца предложения
Вывести слово с номером K заданного предложения, считая с конца предложения. Приблизительное...

16
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
07.12.2018, 18:48 2
Цитата Сообщение от Puchlyak Посмотреть сообщение
Помогите, пожалуйста, решил для себя выучить язык С++.
Зачем?

Добавлено через 1 минуту
Цитата Сообщение от Puchlyak Посмотреть сообщение
решил для себя
Цитата Сообщение от Puchlyak Посмотреть сообщение
выучить язык С++
Цитата Сообщение от Puchlyak Посмотреть сообщение
МАССИВ ДИНАМИЧЕСКИЙ
Уверен, что ты решил выучить C++? И вообще, что это ты решил, а не твой преподаватель. Для чего использовать динамическую память, когда есть хорошие абстракции в виде <string> и <algorithm>?
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
07.12.2018, 18:56  [ТС] 3
Добавлено через 3 минуты
Ок, раскусил) Преподаватель захотел, чтобы я его выучил) Но я сам по себе парень не глупый, но с уклоном в инженерную сторону, с программированием проблемы есть

Преподаватель хочет именно через решение задачи именно динамический массив .
Но если есть любые другие предложения по решению - буду очень благодарен)
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 19:13 4
Цитата Сообщение от Puchlyak Посмотреть сообщение
Преподаватель хочет именно через динамический массив решить задачу.
Если Ваш преподаватель хочет, чтобы Вы вводили слова в уже созданный динамический массив, то стоит у него уточнить один моментик - как он хочет, чтобы ему это реализовали, учитывая, что дин. массив создаётся с фиксированным размером, который ещё неизвестен заранее перед вводом слов ?
Можно, конечно, постоянно, с каждым словом, пересоздавать его и копировать туда-сюда все данные, но Вы же понимаете, что это некомильфо ?
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
07.12.2018, 19:16 5
Цитата Сообщение от Puchlyak Посмотреть сообщение
Вводим предложение из n-слов
Цитата Сообщение от Puchlyak Посмотреть сообщение
количество слов и символов в них не ограничено
Тогда придётся писать какую-то абстракцию на подобии <vector>.
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 19:17 6
Вообще, к слову, тот-же string основан на принципе динамического выделения памяти под строки. При манипуляциях с ним, память всегда перевыделяется, а данные копируются.
Так что, можете делать на string и смело преподу заявлять, что у Вас используется динамическое выделение памяти
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
07.12.2018, 19:22 7
Цитата Сообщение от Puchlyak Посмотреть сообщение
МАССИВ ДИНАМИЧЕСКИЙ
А можно использовать список?
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
07.12.2018, 19:24  [ТС] 8
Nishen
Нет, список нельзя. только слова, записанные в строчку. Даже без запятых
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
07.12.2018, 19:25 9
Цитата Сообщение от Puchlyak Посмотреть сообщение
список нельзя
Цитата Сообщение от Puchlyak Посмотреть сообщение
только слова, записанные в строчку.
Я спрашиваю, строки можно хранить не в массиве, а в списке.
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
07.12.2018, 19:28  [ТС] 10
Nishen
ваши вопросы довольно сложны для меня, не очень понимаю, о чем вы в принципе)
Говорю же, что я не программист)
Моя надежда только на Вас!=) Если кто-то поможет - буду просто боготворить=)
Вообще, буду ооооочень рад любому решению проблемы!
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 19:35 11
Puchlyak, если преподаватель от Вас требует определённого задания, то Вы должны будете по нему ответить на любой вопрос препода. Если мы напишем Вам кусок программы, Вы сможете это сделать ?
Да и вообще, сможете адекватно определить, то ли вообще Вам написали ?
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
07.12.2018, 19:42  [ТС] 12
alkl
Поверьте, этот преподаватель нам сам ничего объяснить не может, я очень сомневаюсь в его способностях)
А вообще, если у меня будет скрипт, я в нем детально разберусь, что и к чему)
По поводу проверки правильности - как минимум я могу вбить этот код и проверить на работоспособность))
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 19:51 13
Цитата Сообщение от Puchlyak Посмотреть сообщение
я очень сомневаюсь в его способностях)
Тогда напишите какую-нибудь билеберду, всё равно не разберётся

Цитата Сообщение от Puchlyak Посмотреть сообщение
По поводу проверки правильности - как минимум я могу вбить этот код и проверить на работоспособность))
Речь не о работоспособности. Вам напишут, будет она вполне работоспособна, но на каком-нибудь списке или векторе. Препод посмотрит и спросит "Что это ? Где тут дин. массив ?". Что будете отвечать ?

Добавлено через 3 минуты
PS: Вашу задачу чисто на дин. массиве (одном !) не реализовать. Прежде, чем выделить под него память, нужно знать его размер. А размер неизвестен, т.к. слова ещё никакие не вводили.
Получается, где то эти слова нужно хранить, чтобы потом в дин. массив засунуть. Но это уже будет противоречить Вашему заданию из первого поста.
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
07.12.2018, 19:51  [ТС] 14
Цитата Сообщение от alkl Посмотреть сообщение
Речь не о работоспособности. Вам напишут, будет она вполне работоспособна, но на каком-нибудь списке или векторе. Препод посмотрит и спросит "Что это ? Где тут дин. массив ?". Что будете отвечать ?
Использую Ваше экспертное мнение,указанное ниже, как аргумент) И объясню, по какой причине мое решение тоже уместно) Найду всю возможную информацию по всем тем командам в коде, что прописал
Цитата Сообщение от alkl Посмотреть сообщение
Если Ваш преподаватель хочет, чтобы Вы вводили слова в уже созданный динамический массив, то стоит у него уточнить один моментик - как он хочет, чтобы ему это реализовали, учитывая, что дин. массив создаётся с фиксированным размером, который ещё неизвестен заранее перед вводом слов ?
Можно, конечно, постоянно, с каждым словом, пересоздавать его и копировать туда-сюда все данные, но Вы же понимаете, что это некомильфо ?
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 21:36 15
Лучший ответ Сообщение было отмечено Puchlyak как решение

Решение

Перевёртыш слов. Используется список.
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
#include <iostream>
#include <windows.h>
#include <string>
#include <math.h>
#include <list>
 
using namespace std;
 
 
int main() {
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
 
    list <string> words;
    
    int count=0;
    bool end;
    cout<<"Введите предложение (точка - конец предложения) :" << endl;
    string s;
    do{
        cin >> s;
        if(end = ((int)(s.find('.', 0))>=0)){       // Ищем точку в слове
            s = s.substr(0, s.find('.', 0));        // и обрезаем слово до неё.
        }
        words.push_front(s);
    }while(!end);
    
    copy(words.begin(), words.end(), ostream_iterator<string>(cout," "));   // Выводим список в cout
 
    cout << endl << endl << endl;
    system ("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 7
08.12.2018, 11:19  [ТС] 16
alkl, Огромное спасибо! Все работает, очень выручили!
Подскажите, пожалуйста, а чтобы сделать порядок слов в предложении на выходе СЛУЧАЙНЫМ, код нужно менять глобально или как?
0
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
08.12.2018, 12:02 17
Цитата Сообщение от Puchlyak Посмотреть сообщение
код нужно менять глобально или как?
Не особо. Нужно задействовать рандом и каким то образом, выдёргивая слова из списка, помечать их уже выведенными.
На ум пока приходит создание массива, в котором нужно хранить номера выведенных слов и с ними постоянно сравнивать рандомное значение. Кстати, можно заюзать динамический массив
Можно ещё ассоциированный массив прикрутить, но там вообще мозг закрутится в баранку
0
08.12.2018, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 12:02
Помогаю со студенческими работами здесь

Напечатать все слова предложения, которые являются частью других слов предложения
Доброго времени суток! Суть вопроса в следующем: дан массив строк, в нём нужно найти слова, которые...

Даны два предложения. Определить слова первого предложения, которые имеются во втором
///

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

Удалить из предложения все числа, состоящие из одинаковых цифр; сформировать массив из чисел предложения
Дано предложение, состоящее из слов, разделенных запятой или пробелами, среди которых есть слова,...


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

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

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