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

На входе строка любой длины, на выходе получить строку в обратном порядке - C++

Восстановить пароль Регистрация
 
Hunter9494
 Аватар для Hunter9494
21 / 18 / 3
Регистрация: 29.10.2012
Сообщений: 154
16.04.2014, 12:00     На входе строка любой длины, на выходе получить строку в обратном порядке #1
дело было на собеседовании :
задали такую задачу. На входе строка любой длины , на выходе получить строку в обратном порядке (ABC... ->...CBA )
я переволновался и написал такой код) и объяснить нечего не смог (((
как вы думаете это правильное решение?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include "iostream"
#include "string.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cin>>n;
    char a[100];
    cin>>a;
    for(int i =n;i>=0;i--)
        cout<<a[i];
    system("pause");
    return 0;
}
ну во всяком случае программа работает правильно)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2014, 12:00     На входе строка любой длины, на выходе получить строку в обратном порядке
Посмотрите здесь:

C++ С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке.
C++ нечетная строка располагается в обратном порядке
C++ Составить строку в обратном порядке
C++ первая строка в обратном порядке
записать слова ограниченой длины в массив и выписать в обратном порядке. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.04.2014, 12:10     На входе строка любой длины, на выходе получить строку в обратном порядке #2
Для строки любой длины не годится. Да и cin >> прочитает только первое слово, а не всю строку.

Добавлено через 1 минуту
Это что?
C++
1
cin>>n;
IrineK
Заблокирован
16.04.2014, 12:22     На входе строка любой длины, на выходе получить строку в обратном порядке #3
Цитата Сообщение от Hunter9494 Посмотреть сообщение
На входе строка любой длины
А у вас больше 99 не влезет.
Т.е. строку нужно создавать динамически после получения значения n.
C++
1
char *a = new char [n+1];
И не забыть ее удалить после завершения работы:
C++
1
delete [] a;
Цитата Сообщение от Hunter9494 Посмотреть сообщение
на выходе получить строку в обратном порядке
Все же не распечатать без преобразований задом наперед, а скорее преобразовать строку и напечатать, то что вышло.

C++
1
2
3
4
5
6
7
char temp;
int i = -1, j = n;
while (++i < --j)
{ temp = a[i];
 a[i] = a[j];
 a[j] = temp;
}
По поводу cin вам уже сказали.

так что - учимся дальше )
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.04.2014, 12:26     На входе строка любой длины, на выходе получить строку в обратном порядке #4
Цитата Сообщение от IrineK Посмотреть сообщение
Т.е. строку нужно создавать динамически после получения значения n.
В заданиии ничего про n не сказано. Может string?
IrineK
Заблокирован
16.04.2014, 12:31     На входе строка любой длины, на выходе получить строку в обратном порядке #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Может string?
Если подойти жестко, то можно и так понять.
Zazy
 Аватар для Zazy
37 / 37 / 11
Регистрация: 14.04.2013
Сообщений: 167
17.04.2014, 23:07     На входе строка любой длины, на выходе получить строку в обратном порядке #6
а подскажите реализацию метода >> std::string , я подозреваю там есть некий буфер
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.04.2014, 23:16     На входе строка любой длины, на выходе получить строку в обратном порядке #7
Цитата Сообщение от Zazy Посмотреть сообщение
>>
Этот оператор читает до пробельного символа (слово). Для строк есть свои функции:
C++
1
2
std::string str;
std::getline(std::cin, str);
Zazy
 Аватар для Zazy
37 / 37 / 11
Регистрация: 14.04.2013
Сообщений: 167
17.04.2014, 23:40     На входе строка любой длины, на выходе получить строку в обратном порядке #8
я имею ввиду когда пишем
C++
1
2
std::string str; 
getline(cin, str);
или
C++
1
2
std::string str; 
cin >> str;
Мы же не знаем размер изначального текста, куда то ведь входной поток должен быть помещен
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
17.04.2014, 23:40     На входе строка любой длины, на выходе получить строку в обратном порядке #9
Цитата Сообщение от Hunter9494 Посмотреть сообщение
На входе строка любой длины , на выходе получить строку в обратном порядке
Ну видимо надо было написать функцию которая возвращает реверсное значение:
C++
1
2
3
4
5
6
7
8
9
char* reverse(const char* str)
{
    size_t ln = strlen(str);
    char *rev = new char[ln];
    for (int i = 0; i < ln; i++)
        rev[i] = str[ln - i - 1];
    rev[ln] = 0;
    return rev;
}
У меня такой вопрос тоже был как-то и мне зачли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 00:30     На входе строка любой длины, на выходе получить строку в обратном порядке
Еще ссылки по теме:

C++ Дана строка S. Создать новую строку, состоящую из символов S, распо- ложенных в обратном порядке.
Вывести строку в обратном порядке. C++
C++ Вывести строку, содержащую эти же слова, но расположенные в обратном порядке. Записать полученную строку в другой файл

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 00:30     На входе строка любой длины, на выходе получить строку в обратном порядке #10
Цитата Сообщение от Zazy Посмотреть сообщение
Мы же не знаем размер изначального текста
Про класс string почитайте.
Yandex
Объявления
18.04.2014, 00:30     На входе строка любой длины, на выходе получить строку в обратном порядке
Ответ Создать тему
Опции темы

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