elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Invertir arreglos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Invertir arreglos.  (Leído 1,786 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[Ayuda] Invertir arreglos.
« en: 7 Mayo 2014, 20:40 pm »

¡Hola! :)
Tengo un problema con un ejercicio que me encontré en la web y que pensé que no me daría problemas y empecé a escribir código, pero le subestimé. Haha Mi problema es el siguiente, tomar una cadena por teclado e invertirla y ponerla dentro de otro arreglo. Cuando inserto una cadena grande, el programa si la invierte muy bien; sin embargo, cuando coloco cadenas cortas el programa inserta además 'basura'.

Acá les dejaré el código fuente:
Código
  1.  
  2. #include <iostream>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.    char MString[40];
  9.    char BString[40];
  10.    int CVariable = 0;
  11.  
  12.    cout << "Enter a string: "; cin >> MString;
  13.    for(int h = 0; h < 39; h++) {
  14.        if(!(MString[h] == '\0'))
  15.            CVariable += 1;
  16.        else if(MString[h] == '\0')
  17.            break;
  18.    }
  19.  
  20.    for(int h = 1; h <= CVariable; ++h)
  21.        BString[(h - 1)] = MString[CVariable - h];
  22.  
  23.    cout << "--------------------------------------------" << endl;
  24.    cout << "The string has: " << CVariable << " letters." << endl;
  25.    cout << "The original string: " << MString << endl;
  26.    cout << "The backwards string is: " << BString << endl;
  27.    cout << "--------------------------------------------" << endl;
  28.  
  29.    system("pause>nul");
  30.    return 0;
  31. }
  32.  

Y el problema radica acá:
Código
  1.    for(int h = 1; h <= CVariable; ++h)
  2.        BString[(h - 1)] = MString[CVariable - h];
  3.  

¡Gracias de antemano! :)


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: [Ayuda] Invertir arreglos.
« Respuesta #1 en: 7 Mayo 2014, 20:58 pm »

No "cerrabas" la cadena con el caracter nulo:

Código
  1. for(int h = 0; h < CVariable; ++h)
  2.      BString[h] = MString[CVariable-1 - h];
  3.    BString[CVariable]= '\0';
  4.  

¡¡¡¡ Saluditos! ..... !!!!




« Última modificación: 7 Mayo 2014, 21:00 pm por leosansan » En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: [Ayuda] Invertir arreglos.
« Respuesta #2 en: 7 Mayo 2014, 21:06 pm »

Agregar una cosa mas, seria mas conveniente que condicionaras el primer for
segun la cadena que el usuario haya ingresado

Código
  1. for(int h = 0; h < MStrinf[h]; h++)
  2.   CVariable++;

Saludos
« Última modificación: 7 Mayo 2014, 21:10 pm por Blaster » En línea

Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [Ayuda] Invertir arreglos.
« Respuesta #3 en: 7 Mayo 2014, 21:17 pm »

No "cerrabas" la cadena con el caracter nulo:

Código
  1. for(int h = 0; h < CVariable; ++h)
  2.      BString[h] = MString[CVariable-1 - h];
  3.    BString[CVariable]= '\0';
  4.  

¡¡¡¡ Saluditos! ..... !!!!



¡Vale, gracias! Me siento un poco estúpido por no haberme dado cuenta de eso. xD
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: [Ayuda] Invertir arreglos.
« Respuesta #4 en: 7 Mayo 2014, 21:24 pm »

¡Vale, gracias! Me siento un poco estúpido por no haberme dado cuenta de eso. xD

¡No hombre!, a todos nos pasa lo mismo con frecuencia. ;)

¡¡¡¡ Saluditos! ..... !!!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda, Invertir algoritmo para crear Keygen o Parchear Programa
Ingeniería Inversa
serrano15 0 3,194 Último mensaje 27 Marzo 2012, 09:16 am
por serrano15
Ayuda con arreglos
Java
Slayer_Zero 3 2,806 Último mensaje 20 Junio 2012, 08:23 am
por s00rk
Ayuda arreglos
Java
iChris 2 2,676 Último mensaje 22 Septiembre 2012, 09:07 am
por horny3
Ayuda con arreglos.
Programación C/C++
acega 8 3,200 Último mensaje 6 Marzo 2013, 02:46 am
por rir3760
ayuda sobre invertir palabras
Programación C/C++
dokomaster 0 1,421 Último mensaje 8 Junio 2016, 01:22 am
por dokomaster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines