Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
wolf1396
6 / 6 / 0
Регистрация: 07.05.2013
Сообщений: 208
#1

Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду - C++

07.06.2013, 13:06. Просмотров 2143. Ответов 26
Метки нет (Все метки)

Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду.
Выведите исходную и преобразованную строку на экран.
Вход: hello world!
Вывод: olleh !dlrow

как это сделать циклами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 13:06     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Посмотрите здесь:
Переставить символы в строке в обратном порядке C++
Переставить в строке символы в обратном порядке C++
C++ Написать на С++ функцию, переставляющую в обратном порядке элементы в односвязном списке
Сколько букв останется на своих местах в данной строке, ес¬ли ее символы записать в обратном порядке C++
Напишите программу, которая печатает на экране собственный исходный файл в обратном порядке C++
C++ Напишите, скомпилируйте и выполните программу, которая выводит перечень аргументов командной строки в обратном порядке
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.06.2013, 14:34     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <algorithm>
 
int main(int argc, char* argv[])
{
    std::string s = "Hello world!";
    std::istringstream iss(s);
    std::for_each(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>(),
            [](const std::string& s)
            {
               std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(std::cout)); 
               std::cout<<' ';
            });
    
    std::cout<<'\n';
    return 0;
}
MrGluck
Модератор
Эксперт CЭксперт С++
7169 / 4335 / 633
Регистрация: 29.11.2010
Сообщений: 11,782
07.06.2013, 15:09     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #3
reverse_copy так и просится. Жаль, что так, как сделал бы я, уже выложили(
wolf1396
6 / 6 / 0
Регистрация: 07.05.2013
Сообщений: 208
08.06.2013, 18:12  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #4
Цитата Сообщение от DiffEreD Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <algorithm>
 
int main(int argc, char* argv[])
{
    std::string s = "Hello world!";
    std::istringstream iss(s);
    std::for_each(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>(),
            [](const std::string& s)
            {
               std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(std::cout)); 
               std::cout<<' ';
            });
    
    std::cout<<'\n';
    return 0;
}
а как-нибудь проще можно? я же только изучаю с++

и мне нужно сделать без использования дополнительных библиотек
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
08.06.2013, 18:48     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template <typename Iter>
void reverse(Iter first, Iter last)
{
    while (first != last && first != --last) {
        std::swap(*first, *last);
        first++;
    }
}
 
int main()
{
    std::string str("12345");
    reverse(str.begin(), str.end());
    std::cout << str;
    return 0;
}
или так
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::string s = "Hello world!";
    std::copy( s.rbegin(), s.rend(), std::ostream_iterator<char>(std::cout) );
    return 0;
}
wolf1396
6 / 6 / 0
Регистрация: 07.05.2013
Сообщений: 208
08.06.2013, 22:09  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #6
Цитата Сообщение от Olivеr Посмотреть сообщение
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template <typename Iter>
void reverse(Iter first, Iter last)
{
    while (first != last && first != --last) {
        std::swap(*first, *last);
        first++;
    }
}
 
int main()
{
    std::string str("12345");
    reverse(str.begin(), str.end());
    std::cout << str;
    return 0;
}


или так
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::string s = "Hello world!";
    std::copy( s.rbegin(), s.rend(), std::ostream_iterator<char>(std::cout) );
    return 0;
}
не компилируется в 12 студии
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
08.06.2013, 22:25     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #7
wolf1396, http://ideone.com/QqnVOb
Какие ошибки?
wolf1396
6 / 6 / 0
Регистрация: 07.05.2013
Сообщений: 208
08.06.2013, 23:43  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #8
Цитата Сообщение от Olivеr Посмотреть сообщение
wolf1396, http://ideone.com/QqnVOb
Какие ошибки?
Кликните здесь для просмотра всего текста
: error C2668: reverse: неоднозначный вызов перегруженной функции
1> c:\users\kop_wolf\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(5): может быть "void reverse<std::_String_iterator<_Mystr>>(Iter,Iter)"
1> with
1> [
1> _Mystr=std::_String_val<std::_Simple_types<char>>,
1> Iter=std::_String_iterator<std::_String_val<std::_Simple_types<char>>>
1> ]
1> d:\program files\vs2012\vc\include\xutility(3358): или "void std::reverse<std::_String_iterator<_Mystr>>(_BidIt,_BidIt)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Mystr=std::_String_val<std::_Simple_types<char>>,
1> _BidIt=std::_String_iterator<std::_String_val<std::_Simple_types<char>>>
1> ]
1> при попытке сопоставить список аргументов "(std::_String_iterator<_Mystr>, std::_String_iterator<_Mystr>)"
1> with
1> [
1> _Mystr=std::_String_val<std::_Simple_types<char>>
1> ]
1>c:\users\kop_wolf\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(17): error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)
1> d:\program files\vs2012\vc\include\ostream(695): может быть "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(742): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(780): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(827): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(953): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(960): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(967): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(974): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(984): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,std::string>(std::basic_ostream<_Elem,_Traits> &&,const _Ty &)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ty=std::string
1> ]
1> d:\program files\vs2012\vc\include\ostream(1101): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)" [найдено при поиске с зависимостью от аргументов]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(201): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(207): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(214): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(221): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(241): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(275): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(295): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(320): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(340): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(360): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(381): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(401): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(422): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(442): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(462): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(482): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\program files\vs2012\vc\include\ostream(502): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> при попытке сопоставить список аргументов "(std::ostream, std::string)"
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
09.06.2013, 00:38     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #9
wolf1396, скопируйте мой код и в хедеры добавьте #include "stdafx.h". Не знаю поможет ли. Я то лично студией не пользуюсь. Если для учебы, то я бы порекомендовал скачать простую IDE типа Code::Blocks или Dev C++
Dragokas
Эксперт WindowsАвтор FAQ
15777 / 6625 / 799
Регистрация: 25.12.2011
Сообщений: 10,250
Записей в блоге: 16
09.06.2013, 01:09     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #10
Цитата Сообщение от wolf1396 Посмотреть сообщение
а как-нибудь проще можно? я же только изучаю с++
Способ по-проще, жрущий самое больше памяти.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
using namespace std;
 
void main()
{
    char str[100];
    cin >> str;
 
    string strrev = "";
 
    for (unsigned int n = 0; n < strlen(str); n ++ )
    {
        strrev = str[n] + strrev;
    }
    cout << strrev;
    system("pause>nul");
}
MrGluck
Модератор
Эксперт CЭксперт С++
7169 / 4335 / 633
Регистрация: 29.11.2010
Сообщений: 11,782
09.06.2013, 03:10     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #11
Dragokas, странно как то из char[100] делать string.

Добавлено через 59 секунд
wolf1396, using namespace std; случайно не дописывали?
wolf1396
6 / 6 / 0
Регистрация: 07.05.2013
Сообщений: 208
09.06.2013, 08:44  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #12
Цитата Сообщение от Olivеr Посмотреть сообщение
wolf1396, скопируйте мой код и в хедеры добавьте #include "stdafx.h". Не знаю поможет ли. Я то лично студией не пользуюсь. Если для учебы, то я бы порекомендовал скачать простую IDE типа Code::Blocks или Dev C++
отсутствие "stdafx.h" было самой первой ошибкой

я скинул ошибку после добавления

Добавлено через 11 минут
Цитата Сообщение от MrGluck Посмотреть сообщение
Dragokas, странно как то из char[100] делать string.

Добавлено через 59 секунд
wolf1396, using namespace std; случайно не дописывали?
если добавить using namespace std; то не работает *наверно мой косяк*
программа меняет 1 и последний символ местами (у меня есть такой вариант), нужно чтобы менялись символы только в 1 слове, а не во всей строке
Dragokas
Эксперт WindowsАвтор FAQ
15777 / 6625 / 799
Регистрация: 25.12.2011
Сообщений: 10,250
Записей в блоге: 16
09.06.2013, 14:09     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #13
MrGluck, ыть, простите, я начинающий, даже такое не сразу написал. Буду стараться в плохом стиле в дальнейшем не кодить.
Alessand
Сообщений: n/a
09.06.2013, 19:43     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #14
так есть же специальная функция char *strrev(char *s) с подключаемым файлом <string.h>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 19:52     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Еще ссылки по теме:
C++ Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке.
C++ Расположить в обратном порядке символы
C++ Рекурсия. Символы строки в обратном порядке
Расположить символы последовательности в обратном порядке C++
C++ Одномерный масив: расположить символы в обратном порядке

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

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
7169 / 4335 / 633
Регистрация: 29.11.2010
Сообщений: 11,782
09.06.2013, 19:52     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #15
Alessand, это POSIX функция, не входящая в стандарт
Yandex
Объявления
09.06.2013, 19:52     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru