Dev - C++ - Invertir el ascii de una cadena

 
Vista:

Invertir el ascii de una cadena

Publicado por sebastian (2 intervenciones) el 19/10/2008 02:10:15
Hola, queria saber como poder invertir el valor ascii de una cadena de caracteres en c++, yo en visual basic hacia esto:

c2 = "cadena a invertir"
For b = 1 To Len(c2)
c3 = c3 & Chr(255 - Asc(Mid(c2, b, 1)))
Next
' c3 toma el valor de "œž›š‘žßžß–‘‰š‹–"

Pero no se como hacer esto en c++, por favor ayudenme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Invertir el ascii de una cadena

Publicado por sebastian (2 intervenciones) el 19/10/2008 14:37:50
Hola, encontré la forma de hacer eso, pero el problema es que no puedo saber cuando termina una cadena que contiene varios caracteres nulos, como hago para saber la longitud REAL de la cadena?, probe con strlen y me da la longitud hasta el primer caracter nulo, por favor ayuden me.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Invertir el ascii de una cadena

Publicado por JOSE MANUEL (2 intervenciones) el 19/11/2008 21:29:48
AYUDAME
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Invertir el ascii de una cadena

Publicado por Chaui (1 intervención) el 09/11/2008 18:56:15
/* Copyright maacera.com - http://www.maacera.com - [email protected] */
/* Copyright Miguel Angel Acera */
/* Esta funcion invierte la cadena pasada en el primer parametro
y la deja invertida en la cadena pasada en el segundo parametro. */
void invertir_cadena(char *cadena_origen, char *cadena_destino)
{
char *palabra;
/* Tomamos la primera palabra de la cadena
pasada por parametro */
palabra = strtok(cadena_origen, " ");
/* Si no hemos llegado al final de la cadena
invertimos el orden de las palabras del resto
de la cadena (sin contar la palabra anterior) */
if (palabra!=NULL)
invertir_cadena(strchr(cadena_origen, ' '), cadena_destino);
/* Si quedan mas palabras añadimos la palabra
tomada antes en la cadena destino, si no,
inicializamos la cadena destino */
if (palabra!=NULL)
{
strcat(cadena_destino, palabra);
strcat(cadena_destino, " ");
}
else
{
strcpy(cadena_destino, "");
}
}
Ejemplo:
/* Copyright maacera.com - http://www.maacera.com - [email protected] */
/* Copyright Miguel Angel Acera */
#include <string.h>
#include <stdio.h>
#include <conio.h>
FORMACIÓN – PROGRAMACIÓN EN C / C++
© Copyright maacera.com - http://www.maacera.com - [email protected]
2 / 2
/* Declaramos la funcion */
void invertir_cadena(char *cadena_origen, char *cadena_destino);
int main (void)
{
char cadena[50];
char resultado[50];
clrscr();
/* Pedimos una cadena. */
printf("Cadena: ");
gets(cadena);
/* La invertimos. La cadena invertida queda en la
cadena "resultado" */
invertir_cadena(cadena, resultado);
/* Mostramos la cadena "resultado", que contiene la
cadena invertida. */
printf(" Cadena invertida: %s", resultado);
}
/* Esta funcion invierte la cadena pasada en el primer parametro
y la deja invertida en la cadena pasada en el segundo parametro. */
void invertir_cadena(char *cadena_origen, char *cadena_destino)
{
char *palabra;
/* Tomamos la primera palabra de la cadena
pasada por parametro */
palabra = strtok(cadena_origen, " ");
/* Si no hemos llegado al final de la cadena
invertimos el orden de las palabras del resto
de la cadena (sin contar la palabra anterior) */
if (palabra!=NULL)
invertir_cadena(strchr(cadena_origen, ' '), cadena_destino);
/* Si quedan mas palabras añadimos la palabra
tomada antes en la cadena destino, si no,
inicializamos la cadena destino */
if (palabra!=NULL)
{
strcat(cadena_destino, palabra);
strcat(cadena_destino, " ");
}
else
{
strcpy(cadena_destino, "");
}
}













*************************************************************************************************88

88

#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;

void main ()
{
char phrase[80];
int lpause,qant,i;
cout << " Entre une phrase 80 caracteres maximun : " << " " ; cin.getline (phrase,80);

qant = strlen(phrase) ;
//for (i=qant;i>=0;i--)
//cout << phrase[i];
for (i=qant;i>=0;i--)
if (phrase[i]== ' ')
qant++;

cout << strrev (phrase);

cin >> lpause;

}

//int cant_letras,x;
//getline(cin,cadena);//Para que el usuario ingrese la cadena.
//cant_letras= cadena.length();//Cuenta cuántas letras hay en la cadena.
//printf("LAS INICIALES DE LA CADENA DE CARACTERES INTRODUCIDA SON: ");
//resultado=cadena[0];
//for(x=0;x<cant_letras;x++){
//if(cadena[x]==' '){
//resultado=resultado+cadena[x+1];
//cout << resultado;


***************************************************************************888

#include <cstdlib>
#include <iostream>
#include<conio.h>
#include<cstring>
#include <iostream>
using namespace std;

char * inverser (char * phrase)
{
char* rphrase;
int lon;

lon = strlen(phrase);
rphrase = new char[lon+1];
for(int i= 0; i < lon; i++)
rphrase[lon - i - 1] = phrase[i];
rphrase[lon] = ' ';
return rphrase;
}
void main ()
{
char phrase[80];

cout << " Entre une phrase 80 caracteres maximun : " << " " ; cin.getline (phrase,80);
cout << inverser ();
cout<< " ";
cout<< " ";
system("PAUSE");

}

/* Función que devuelve la longitud de una cadena */

int StrLen(char * s)
{
char * s0= s;
while (*s++);
return s - s0 - 1;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar