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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
07.06.2013, 13:06     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #1
Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду.
Выведите исходную и преобразованную строку на экран.
Вход: hello world!
Вывод: olleh !dlrow

как это сделать циклами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 13:06     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Посмотрите здесь:

C++ Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке.
Переставить символы в строке в обратном порядке C++
C++ Написать на С++ функцию, переставляющую в обратном порядке элементы в односвязном списке
Сколько букв останется на своих местах в данной строке, ес¬ли ее символы записать в обратном порядке C++
C++ Напишите, скомпилируйте и выполните программу, которая выводит перечень аргументов командной строки в обратном порядке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
09.06.2013, 21:44     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #21
Цитата Сообщение от wolf1396 Посмотреть сообщение
а вот ошибка:
error C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
Либо мелкософт в край охренел, либо вы врете. Если честно, я склонен ко второму т.к. флаги компиляции вы пока вряд ли умеете править.
Если не стоит -Werror, то VS лишь кинет warning и скомпилит код. Ибо не имеют право они свою проприетарщину втюхиваь уж настолько явно. strtok_s - поделка, не входящая в стандарт. Единственная причина почему вы её видите - желание привязать вас к VS т.к. в любом нормальном компиляторе данная функция отсутствует.
Добавьте
C++
1
#define _CRT_SECURE_NO_WARNINGS
в начале кода и наслаждайтесь успешной компиляцией без ошибок и предупреждений.

Добавлено через 1 минуту
Цитата Сообщение от Dani Посмотреть сообщение
как видно, этот человек со студии, а там может не скомпилиться void main, поэтому нужно int main;
как раз единственное место, где скомпилится void main - это студия ибо на стандарты наплевать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
09.06.2013, 21:52  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #22
Цитата Сообщение от MrGluck Посмотреть сообщение
Кликните здесь для просмотра всего текста
Либо мелкософт в край охренел, либо вы врете. Если честно, я склонен ко второму т.к. флаги компиляции вы пока вряд ли умеете править.
Если не стоит -Werror, то VS лишь кинет warning и скомпилит код. Ибо не имеют право они свою проприетарщину втюхиваь уж настолько явно. strtok_s - поделка, не входящая в стандарт. Единственная причина почему вы её видите - желание привязать вас к VS т.к. в любом нормальном компиляторе данная функция отсутствует.
Добавьте
C++
1
#define _CRT_SECURE_NO_WARNINGS
в начале кода и наслаждайтесь успешной компиляцией без ошибок и предупреждений.

Добавлено через 1 минуту

как раз единственное место, где скомпилится void main - это студия ибо на стандарты наплевать
ага, я вру -_-
Миниатюры
Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду  
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
09.06.2013, 22:03     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #23
wolf1396, lol ну значит
Цитата Сообщение от MrGluck Посмотреть сообщение
мелкософт в край охренел
т.к. предназначение данной функции я вам рассказал. В VS2008, 2010 всегда было лишь как бульканье.
Переставьте дефайн _CRT_SECURE_NO_WARNINGS до всех инклюдов.

Или можно так:
Проект ->Свойства->Свойства конфигурации->C/C++ ->препроцессор ->определения препроцессора -> изменить -> в первом поле дописать _CRT_SECURE_NO_WARNINGS.
Добавлено через 5 минут
Ладно, вот вам плюсовый вариант (немного подкорректировал предыдущий)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstddef>
#include <cstring>
 
int main()
{
    const size_t size = 100;
    char str[size];
    // считываем строку с потока (до нажатия Enter)
    std::cin.getline(str, sizeof(str));
 
    // разделяем на подстроки до " ", записываем результат в p
    for (char *p = strtok(str, " "); p != NULL; p = strtok(NULL, " "))
    {
        // выводим подстроку с конца до начала (наоборот)
        for (size_t pos = strlen(p); pos; pos--)
            std::cout << p[pos-1];
        std::cout << "\n";
    }
}
Dragokas
Автор FAQ
 Аватар для Dragokas
14511 / 6338 / 783
Регистрация: 25.12.2011
Сообщений: 9,866
Записей в блоге: 14
09.06.2013, 22:10     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #24
MrGluck, да в 2012 студии именно так, причем в 2010-й это считалось только как предупреждение.

Dani, неа, не уверен. Я то думал - такая фича. В VS2012 компилируется без доп. заголовочных файлов.
А я то как раз и вводил в консоль Hello. Лишние 5 букв - было лень.
Теперь понял, что strlen урезает проверку длины до первого пробела или еще как-то. Вообщем, ушел курить мануал.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
09.06.2013, 22:17     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #25
Цитата Сообщение от Dragokas Посмотреть сообщение
да в 2012 студии именно так
печально т.к. это еще один шаг в сторону от стандарта и попытка привязать пользователей к единственной IDE. На деле оснований запрещать strtok у них не было. Ведь даже для капабилити не оставили.

Добавлено через 3 минуты
Цитата Сообщение от Dragokas Посмотреть сообщение
Теперь понял, что strlen урезает проверку длины до первого пробела или еще как-то.
неправильно поняли. Дело в том, что обычное считывание в массив char идет до первого пробела или символа перевода строки. Для считывания всей строки до нажатия Enter необходима след. комбинация:
C++
1
2
cin.getline(str, sizeof(str)); // если str - char[]
getline(cin, str); // если str - string
Добавлено через 38 секунд
http://www.cplusplus.com/reference/s...ne/?kw=getline
http://www.cplusplus.com/reference/i...kw=cin.getline
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
09.06.2013, 22:19     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #26
Dragokas, лучше почиать про cin: он же до whitespace считывает.

Добавлено через 26 секунд

Не по теме:

опоздал)



Добавлено через 1 минуту
про strlen и не говори, у меня при include iostream откуда-то abs берется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 19:36     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Еще ссылки по теме:

Напишите программу, которая печатает на экране собственный исходный файл в обратном порядке C++
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
Переставить в строке символы в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
20.06.2013, 19:36  [ТС]     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду #27
Кликните здесь для просмотра всего текста
Цитата Сообщение от 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;
}


если сделать std::reverse(...);
то скомпилируется все ок и даже запуститься
thank you
Yandex
Объявления
20.06.2013, 19:36     Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
Ответ Создать тему
Опции темы

Текущее время: 14:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru