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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 77, средняя оценка - 4.75
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
#1

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

19.12.2011, 23:06. Просмотров 10838. Ответов 13
Метки нет (Все метки)

Дана строка символов. Вывести её на экран задом наперед. Использовать библиотеку string.h

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

Вывести строку задом наперед - C++
#include <iostream> using namespace std; int main() { int len; char temp; cin>>len; cin.ignore(); char *str =...

Вывести строку задом наперед - C++
1)Пользователь вводит строку данных программа выводит из нее только цифры. 2)Вывести строку задам на перед. #include <iostream> ...

Написать строку задом наперед - C++
помогите пожалуйста отладить, задача написать строку задом наперед. Работает не правильно, что я не так сделал? Вот мой код: void...

Вывести последовательность слов задом наперед - C++
Задание: Дана строка, группу букв, разделенных пробелами (одним или больше) будем считать словами. Вывести последовательность слов задом...

Вывести буквы в словах строки задом-наперед - C++
я немного переделал под себя прогу которую сделали чтобы было понятно, у меня она потеряла смысл ,помогите разобраться? Вот я...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
19.12.2011, 23:08 #2
C++
1
2
for (unsigned short int i = str.size() - 1; i >= 0; --i)
    std::cout << str[i];
1
DU
1483 / 1059 / 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 либо это может быть указатель на символ, если используете массив символов. это указатели на первый символ строки и на символ, следующий за последним (в случае массивов символов это будет указатель на нулл символ)
1
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 минуты
(((((
0
go
Эксперт C++
3586 / 1366 / 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 Посмотреть сообщение
А во еще впорос, как сделать так что бы при вводе в трочку точки, компилятор прекращал переворачивать элементы задом наеред?
Чего? Как? Пример приведите.
0
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
19.12.2011, 23:28  [ТС] #6
когда указано, что задается строка до точки, обрезать строку, отбросив все символы после точки .вот вводим строчку fdaf.afaf нужно что бы компилятор перевернул задом наперед те элементы, которые стоят до точки.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
19.12.2011, 23:31 #7
1: прервать цикл, если точка и запомнить указатель
2: вывести строку сначала и до позиции точки (включая/невключая).
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 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;
}
1
go
Эксперт C++
3586 / 1366 / 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;
}
1
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 минут
(((((
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 23:45 #11
Цитата Сообщение от Devil7 Посмотреть сообщение
{if(str[i]=='.')
* * * * *return 0;
Нашли точку и вышли из программы. И как же она выведется? Сразу запускайте обратный цикл, а потом уж прерывайте программу.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
19.12.2011, 23:46 #12
в ифе return 0 на break замените, вывод в последне for сделайте не от длины строки, а от позиции, на которой закончили, А затем выведите от длины строки до i
0
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
20.12.2011, 00:02  [ТС] #13
.....

Добавлено через 4 минуты
про break понял, а про позицию нет(
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
20.12.2011, 00:04 #14
в общем поэксперементируйте.
а что я написал: от i до 0 выводите, а потом от длины строки до i (только там там еще немного доработать надо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 00:04
Привет! Вот еще темы с ответами:

Вывести предложение, в котором каждое слово будет задом наперед - C++
Здравствуйте,нужна помощь в решении задачи на С++. Вывести предложение, в котором каждое слово будет задом наперед.Нельзя пользоваться...

Число задом наперед - C++
Помогите пожалуйста!!!! Задача. Перевернуть число, введенное с клавиатуры, задом на перед. Например, введено 12345, должны вывести 54321 ...

чтение строки из файла задом наперед - C++
Нужна ваша помощь. Написал прогу которая выполняет определенные действия, но перед этим требуется ввести логин и пароль, если они...

Напечатать заданное слово задом наперед - C++
Составить программу, которая печатает заданное слово задом наперед


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.12.2011, 00:04
Ответ Создать тему
Опции темы

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