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

Вывести строку символов на экран задом наперед - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 77, средняя оценка - 4.75
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
19.12.2011, 23:06     Вывести строку символов на экран задом наперед #1
Дана строка символов. Вывести её на экран задом наперед. Использовать библиотеку string.h

Добавлено через 3 минуты
как я понимаю нужно узнать через strlen длину строки а потом сделать обратный цикл? как это делается не пойму....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 23:06     Вывести строку символов на экран задом наперед
Посмотрите здесь:

C++ Вывести строку задом наперед
C++ Вывести строку задом наперед
C++ Вывести последовательность слов задом наперед
Написать строку задом наперед C++
C++ Число задом наперед
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
19.12.2011, 23:08     Вывести строку символов на экран задом наперед #2
C++
1
2
for (unsigned short int i = str.size() - 1; i >= 0; --i)
    std::cout << str[i];
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.12.2011, 23:11     Вывести строку символов на экран задом наперед #3
http://www.cplusplus.com/reference/clibrary/cstring/
ф-ии реверсирования строк в библиотеке нет. есть ф-ия strlen. если ее использовать, то можно сказать что вы использовали указанную библиотеку. определяете с ее помощью длинну строки и реверсируете. можете посмотреть так же на стандартный алгоритм реверсирования:
http://www.cplusplus.com/reference/algorithm/reverse/
BidirectionalIterator - может быть как итератором если вы используете std::string либо это может быть указатель на символ, если используете массив символов. это указатели на первый символ строки и на символ, следующий за последним (в случае массивов символов это будет указатель на нулл символ)
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
19.12.2011, 23:23  [ТС]     Вывести строку символов на экран задом наперед #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h> 
#include <time.h>
 
int main ()
{
     char str[20];
     int n=0,i,j;
     puts("vvedite stroku\n");
     gets(str);
     for (i = strlen(str)-1; i >= 0; i--)
        printf("%c",str[i]);
        return 0;
}
спасибо, решил

Добавлено через 5 минут
А во еще впорос, как сделать так что бы при вводе в трочку точки, компилятор прекращал переворачивать элементы задом наеред?

Добавлено через 3 минуты
(((((
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 23:26     Вывести строку символов на экран задом наперед #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
        char buf[BUFSIZ];
 
        std::cin >> buf;
 
        for ( int i = strlen (buf) - 1 ; i >= 0 ; --i )
                std::cout << buf[i];
 
        std::cout<<std::endl;
        std::system ("pause");
        return 0;
}
Добавлено через 35 секунд
Цитата Сообщение от Devil7 Посмотреть сообщение
А во еще впорос, как сделать так что бы при вводе в трочку точки, компилятор прекращал переворачивать элементы задом наеред?
Чего? Как? Пример приведите.
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
19.12.2011, 23:28  [ТС]     Вывести строку символов на экран задом наперед #6
когда указано, что задается строка до точки, обрезать строку, отбросив все символы после точки .вот вводим строчку fdaf.afaf нужно что бы компилятор перевернул задом наперед те элементы, которые стоят до точки.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
19.12.2011, 23:31     Вывести строку символов на экран задом наперед #7
1: прервать цикл, если точка и запомнить указатель
2: вывести строку сначала и до позиции точки (включая/невключая).
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
19.12.2011, 23:34     Вывести строку символов на экран задом наперед #8

Не по теме:

красотень


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std:: string s; std:: cin >> s;
    std:: string::iterator it=s.begin();
 
    while (it!=s.end() & *it!='.') it++;
 
    std:: reverse (s.begin(),it);
    std:: cout << s << "\n";
    system ("pause");
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 23:35     Вывести строку символов на экран задом наперед #9
Цитата Сообщение от villu Посмотреть сообщение
1: прервать цикл, если точка и запомнить указатель
2: вывести строку сначала и до позиции точки (включая/невключая).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
        char buf[BUFSIZ];
 
        std::cin >> buf;
 
        for ( char *p =  strchr (buf, '.') ; p != buf && p ; --p )
                std::cout << *(p-1);
 
        std::cout<<std::endl;
        std::system ("pause");
        return 0;
}
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
19.12.2011, 23:44  [ТС]     Вывести строку символов на экран задом наперед #10
Вот таким образом он обрезает у меня после точки, но не переворачивает элементы задом наперед.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
int main ()
{
     char str[20];
     int n=0,i,j;
     puts("vvedite stroku\n");
     gets(str);
     for (i =0; i<strlen(str); i++)
     {if(str[i]=='.')
     return 0;
     else printf("%c",str[i]);}
     for (i = strlen(str)-1; i >= 0; i--)
     printf("%c",str[i]);
        return 0;
}
Добавлено через 2 минуты
хотелось бы свой вариант добить до правильного решения.

Добавлено через 5 минут
(((((
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 23:45     Вывести строку символов на экран задом наперед #11
Цитата Сообщение от Devil7 Посмотреть сообщение
{if(str[i]=='.')
* * * * *return 0;
Нашли точку и вышли из программы. И как же она выведется? Сразу запускайте обратный цикл, а потом уж прерывайте программу.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
19.12.2011, 23:46     Вывести строку символов на экран задом наперед #12
в ифе return 0 на break замените, вывод в последне for сделайте не от длины строки, а от позиции, на которой закончили, А затем выведите от длины строки до i
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
20.12.2011, 00:02  [ТС]     Вывести строку символов на экран задом наперед #13
.....

Добавлено через 4 минуты
про break понял, а про позицию нет(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 00:04     Вывести строку символов на экран задом наперед
Еще ссылки по теме:

Вывести вписанное пользователем слово задом наперед C++
Вывести предложение, в котором каждое слово будет задом наперед C++
Вывести буквы в словах строки задом-наперед C++

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

Или воспользуйтесь поиском по форуму:
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
20.12.2011, 00:04     Вывести строку символов на экран задом наперед #14
в общем поэксперементируйте.
а что я написал: от i до 0 выводите, а потом от длины строки до i (только там там еще немного доработать надо)
Yandex
Объявления
20.12.2011, 00:04     Вывести строку символов на экран задом наперед
Ответ Создать тему
Опции темы

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