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

Программа на С++ строки

08.07.2011, 13:35. Показов 5854. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь в написании программы. Дано предложение, слова в котором разделены пробелами, а в конце стоит точка. Заменить порядок слов в предложении на обратный.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2011, 13:35
Ответы с готовыми решениями:

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

Есть программа которая сравнивает строки. Нужно вывести заданные строки и результат на консоль (TASM)
Есть программа которая сравнивает строки. Нужно вывести заданные строки и результат на консоль.У меня что-то не получается. Исправьте,...

Программа для разбиения строки на строки
Уважаемые форумчане, не могли бы вы помочь новичку написать программу организующую разбиение заданной строки на несколько строк в...

28
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
08.07.2011, 19:07
Студворк — интернет-сервис помощи студентам
В продолжение конкурса быдлокодерских поделок
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
#include <stdio.h>
#include <string.h>
    
void reverse_words(char * str){
    char * p;
    if ( str ){
        if ( p = strtok(str, " ") ){
            reverse_words(NULL);
            printf("%s.\n", p);
        }
    }
    else {
        if ( p = strtok(NULL, " ") ){
            reverse_words(NULL);
            printf("%s ", p);
        }
    }
}
 
int main(void){
    char buf[BUFSIZ], * p;
    
    while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 ){
        if ( p = strchr(buf, '.') )
            *p = '\0';
        else {
            printf("Wrong input!\n");
            continue;
        }
        reverse_words(buf);
    }
    
    return 0;
}
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Во всех проектах отсутсвует предположение о случайном вводом двух и более пробелов подряд, моя программа позволяет пользователю ошибаться
А все другие протонным лучом, выпущенным из монитора убивают? Вы просто из любопытства попробуйте скомпилировать и на вход строку с несколькими пробелами между словами передать...
Code
1
2
3
$ ./revwords
String: aaa      bbb      ccc    .
ccc bbb aaa.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
08.07.2011, 19:29
Цитата Сообщение от easybudda Посмотреть сообщение
В продолжение конкурса быдлокодерских поделок
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
#include <iostream>
#include <string>
#include <sstream>
#include <stack>
#include <cstdio>
#include <cstring>
 
class word{
    std::string w;
public:
    word(std::string ww):w(ww+' '){};
    ~word(){
        std::cout<<w;
    }
};
 
void output(std::istringstream& is){
    std::string s;
    if(is>>s)
        output(is);
    else return;
    word w(s);
}
 
int main(){
        char buf[BUFSIZ];
        
        while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 ){
                char * tail = strchr(buf, '.');
                if ( ! tail ){
                        printf("Wrong input!\n");
                        continue;
                }
                *tail = '\0';
                output(std::istringstream(std::string(buf)));
                printf("\b.\n");
        }
        
        return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
08.07.2011, 19:34
Цитата Сообщение от Kastaneda Посмотреть сообщение
std::cout<<w;
опаньки!
Цитата Сообщение от Irina20 Посмотреть сообщение
мы не используем getline и cout
морально-нравственные устои не позволяют...
0
08.07.2011, 19:41

Не по теме:

easybudda, да, конечно же:) Забыл, что в нашем распоряжении все средства C++, кроме getline() и std::cout:rofl:

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
08.07.2011, 19:51
Вариант чуть короче:
C
1
2
3
4
5
6
7
8
void reverse_words(char * str){
    char * p;
    
    if ( p = strtok(str, " ") ){
        reverse_words(NULL);
        printf("%s%s", p, ( str ) ? ".\n" : " ");
    }
}
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
08.07.2011, 21:48
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
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
        string s("wwww eeee rrrrr hhhhhhhh ooo."), s1;
        s.resize(s.size()- 1);
        vector<string> vec;
        istringstream str_potok (s);
 
        //Жалко, что в этом месте нельзя обойтись без дополнительной буферной переменной s1,
        //если кто знает, подскажите как. 
        while (str_potok>> s1) {
         vec.push_back (s1);
        }
 
        s1.resize(0);  
        
        while (vec.size()){
         s1+=vec.back()+=' ';
         vec.pop_back();
        }
 
        s1.resize(s1.size()- 1);
        
        printf ("%s\n", s1.c_str());  
        getchar();
         
        return 0;
}
Добавлено через 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
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
        string s("wwww eeee rrrrr hhhhhhhh ooo."), s1, s3;
        s.resize(s.size()- 1);
        istringstream str_potok (s);
 
        while (str_potok>> s1) {
         s3.insert(0, s1.insert(0, " ")); 
        }
 
        printf ("%s\n", s3.c_str()+1);  
        getchar();
         
        return 0;
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.07.2011, 22:09
easybudda, да я забыл что токены выбираются внезависимости от длины промежутков, согласен проверка в твоём проекте не нужна
Миниатюры
Программа на С++ строки  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.07.2011, 22:34
PS:За токены ты прав можно не мучаться с удалением лишних пробелов, однако твой код некорректно работает для предложений с точками внутри него, например для такого, думаю условием окончания текста лучше брать последний пробел в нём, т.к. по синтаксису последний знак пунктуации идёт после слова, перед которым всегда есть пробел.
Миниатюры
Программа на С++ строки  
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
08.07.2011, 22:42
Цитата Сообщение от kravam Посмотреть сообщение
Жалко, что в этом месте нельзя обойтись без дополнительной буферной переменной s1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <sstream>
#include <vector>
    
int main(){
    std::string s("aaa bbb ccc");
    std::istringstream ist(s);
    std::vector<std::string> vec;
    std::copy(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>(), std::back_inserter(vec));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2011, 22:42

Ввести с клавиатуры строку символов.Признак окончания ввода строки - нажатие клавиши 'ввод'.Программа должна определить длину введенной строки L
Помогите пожалуйста:gbye: Ввести с клавиатуры строку символов.Признак окончания ввода строки - нажатие клавиши 'ввод'.Программа должна...

Программа на строки
Здравствуйте,помогите мне,пожалуйста,написать программу на С++. Даны две строчки,с помощью функции strcpy копировать из сточки sp,такое ...

Программа на строки
Написать программу, которая будет заменять все русские гласные буквы пробелами

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

программа на строки
помогите плиз кто нить решить!! 1. В строке найти заданную последовательность символов и от конца этой последовательности удалить все...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru