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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 83, средняя оценка - 4.73
Baburek
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 13
#1

Перевернуть строку - C++

20.09.2009, 17:26. Просмотров 10308. Ответов 13
Метки нет (Все метки)

Данн текст. Необходимо вывести его буквы в обратном порядке.

типо ввожу "первое предложение", а выводится "еинежолдерп еовреп"(можно англ.)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,345
20.09.2009, 17:34     Перевернуть строку #2
Смотри в MSDN функцию strrev.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
20.09.2009, 17:38     Перевернуть строку #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <set>
#include <conio.h>
#include <iostream>
#include <numeric>
#include <limits>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
 
void reverseit(char array[],int no)
{ char c; int len,x, mid=0;
if(no==0)
{for(len=0,x=0; array[x] !='\x0';len++,x++); }
else
{ len = 0; len = no; }
mid = (len-1)/2;
for(int i=0,j=len-1; i <=mid; i++,j--)
{ c = array[i];
array[i] = array[j];
array[j] = c;
}
cout << endl<<array;
}
int _tmain(int argc, _TCHAR* argv[])
{
    char data[80]; int nos=0;
    cout <<"enter string to reverse it  "; cin.getline(data,80);
    reverseit(data,0);
    cout <<endl<<"enter string to reverse it  "; cin.getline(data,80);
    cout <<endl<<"enter Nos to reversed "; cin >>nos;
    reverseit(data,nos);
    _getch();
    return 0;
}
Baburek
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 13
20.09.2009, 17:42  [ТС]     Перевернуть строку #4
Что то неправильно как то...
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.09.2009, 17:43     Перевернуть строку #5
C++
1
2
3
4
5
#include <algorithm>
 
    char chArr[sizeof("abcdef")];
    ::strcpy (chArr, "abcdef");
    std::reverse (chArr, chArr+::strlen ("abcdef"));
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
20.09.2009, 17:47     Перевернуть строку #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// my_tests.cpp : Defines the entry point for the console application.
// 
#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <set>
#include <conio.h>
#include <iostream>
#include <numeric>
#include <limits>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
 
void reverseit(char array[],int no)
{ char c; int len,x, mid=0;
if(no==0)
{for(len=0,x=0; array[x] !='\x0';len++,x++); }
else
{ len = 0; len = no; }
mid = (len-1)/2;
for(int i=0,j=len-1; i <=mid; i++,j--)
{ c = array[i];
array[i] = array[j];
array[j] = c;
}
cout << endl<<array;
}
int _tmain(int argc, _TCHAR* argv[])
{
    char data[80]; int nos=0;
    cout <<"enter string to reverse it  "; cin.getline(data,80);
    reverseit(data,0);
    _getch();
    return 0;
}
Почему неправильно ? Где?
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.09.2009, 17:47     Перевернуть строку #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
int main(void)
{
    int i, j;
    char s[256], tmp;
 
    printf("Enter text: ");
    fgets(s, sizeof(s), stdin);
 
    s[strlen(s)-1] = '\0';
    for(i = 0, j = strlen(s)-1; i < j; i++, j--) {
        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
    }
    printf("Result: %s\n", s);
    return 0;
}
Baburek
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 13
20.09.2009, 17:52  [ТС]     Перевернуть строку #8
спасибо а кол-во символов не ограниченно? Gravity
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.09.2009, 17:56     Перевернуть строку #9
C
1
char s[256]
Кол-во символов 255+завершающий нуль.
Baburek
0 / 0 / 0
Регистрация: 31.08.2009
Сообщений: 13
20.09.2009, 17:56  [ТС]     Перевернуть строку #10
Gravity
изменяю на 5 - а ввожу 100...все равно наоборот)))))
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.09.2009, 18:00     Перевернуть строку #11
Baburek, fgets все равно не допустит ввод больше заданного размера.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
20.09.2009, 18:06     Перевернуть строку #12
C++
1
2
3
4
5
6
7
void Reverse ( char s[ ] ){
     char Ch;
     int  i, j;
     for (i=0, j=strlen(s) - 1; i<j; i++, j--){
            Ch = s[i]; s[i] = s[j]; s[j] = Ch; 
     }
}
mirso
524 / 342 / 17
Регистрация: 05.04.2009
Сообщений: 709
20.09.2009, 18:13     Перевернуть строку #13
Baburek,
Цитата Сообщение от Baburek Посмотреть сообщение
типо ввожу "первое предложение", а выводится "еинежолдерп еовреп"(можно англ.)
там -> много-много разных реверсов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2009, 18:48     Перевернуть строку
Еще ссылки по теме:

Найти количество простых чисел в массиве. Перевернуть все нечетные строки матрицы. Перевернуть каждое четное слово в строке C++
C++ Ввести с клавиатуры строку символов. Перевернуть каждое четное слово в строке.
C++ Перевернуть массив
C++ Перевернуть строку, в чем ошибка?
C++ Перевернуть строку

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

Или воспользуйтесь поиском по форуму:
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.09.2009, 18:48     Перевернуть строку #14
Цитата Сообщение от R0mm Посмотреть сообщение
C++
1
2
3
     for (i=0, j=strlen(s) - 1; i<j; i++, j--){
...
}
вычислять при каждом проходе цикла длину одной и той же строки - дурной тон.
Yandex
Объявления
20.09.2009, 18:48     Перевернуть строку
Ответ Создать тему
Опции темы

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