Перевернуть строку

Данн текст. Необходимо вывести его буквы в обратном порядке.типо ввожу "первое предложение", а выводится "еинежолдерп еовреп"(можно англ.)
13 ответов

Смотри в MSDN функцию strrev.


#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;
}


Что то неправильно как то...


#include <algorithm>
 
    char chArr[sizeof("abcdef")];
    ::strcpy (chArr, "abcdef");
    std::reverse (chArr, chArr+::strlen ("abcdef"));


// 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;
}
Почему неправильно ? Где?


#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;
}


спасибо а кол-во символов не ограниченно? Gravity


char s[256]
Кол-во символов 255+завершающий нуль.


Gravity изменяю на 5 - а ввожу 100...все равно наоборот)))))


Baburek, fgets все равно не допустит ввод больше заданного размера.


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; 
     }
}


Baburek,
типо ввожу "первое предложение", а выводится "еинежолдерп еовреп"(можно англ.)
там ->много-много разных реверсов


     for (i=0, j=strlen(s) - 1; i<j; i++, j--){
...
}
вычислять при каждом проходе цикла длину одной и той же строки - дурной тон.