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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  cadena de caracteres a ASCII
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cadena de caracteres a ASCII  (Leído 2,398 veces)
sabar

Desconectado Desconectado

Mensajes: 15


Ver Perfil
cadena de caracteres a ASCII
« en: 1 Diciembre 2014, 18:16 pm »

Código
  1. #include<iostream>
  2. #include <string.h>
  3. #include<stdio.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.           char frase[50];
  10.           int j,i,tam, num_frase[50];
  11.  
  12.           cout<<"ingrese la frase: ";
  13.          gets(frase);
  14.          tam=strlen(frase)-1;
  15.          for(i=0,j=0;j<tam,i<tam;j++, i++){
  16.            frase[i]=num_frase[j];
  17.            cout<<frase[i]<<"="<<num_frase[j]<<"\n";
  18.  
  19.  
  20.          }
  21. }
  22.  
EL PROBLEMA ES QUE ME SALE BASURA AL FINAL Y NO HE VISTO CUAL PUEDE SER EL PROBLEMA :-\


En línea

fary
Colaborador
***
Desconectado Desconectado

Mensajes: 958



Ver Perfil WWW
Re: cadena de caracteres a ASCII
« Respuesta #1 en: 1 Diciembre 2014, 18:28 pm »

Estas usando C++, sin embargo, tienes librerías incluidas de C...

Te dejo como sería en C:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    char buffer[50];
  6.  
  7.    printf("Ingresa la frase: ");
  8.    scanf("%s", buffer);
  9.  
  10.    int i = 0;
  11.  
  12.    while (buffer[i])
  13.    {
  14.        printf("%c = %i\n", buffer[i], buffer[i]);
  15.        i++;
  16.    }
  17.  
  18.    return 0;
  19. }

Salida del programa:

Código:
Ingresa la frase: hola
h = 104
o = 111
l = 108
a = 97



En línea

Un byte a la izquierda.
sabar

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: cadena de caracteres a ASCII
« Respuesta #2 en: 1 Diciembre 2014, 22:30 pm »

Estas usando C++, sin embargo, tienes librerías incluidas de C...

Te dejo como sería en C:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    char buffer[50];
  6.  
  7.    printf("Ingresa la frase: ");
  8.    scanf("%s", buffer);
  9.  
  10.    int i = 0;
  11.  
  12.    while (buffer[i])
  13.    {
  14.        printf("%c = %i\n", buffer[i], buffer[i]);
  15.        i++;
  16.    }
  17.  
  18.    return 0;
  19. }

Salida del programa:

Código:
Ingresa la frase: hola
h = 104
o = 111
l = 108
a = 97


hay un problema y es que solo lee la primera palabra y lo que se busca es que lea toda una frase y otro problema aunque menor es que se necesita en c++
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: cadena de caracteres a ASCII
« Respuesta #3 en: 1 Diciembre 2014, 23:23 pm »

El primer código también compila en c++ se usa printf en muchos casos cuando quieres tener control de la impresión, ya que cout algunas veces pasa cosas por alto... tu código tiene cosas de c también (stdio.h y string.h, para c++ es sin .h)

Quieta string.h y stdio.h, usa getline para leer y recorre la cadena con u n while, haces un if de manera que si el carácter leído es '\0' o '\n' haga break para salir del ciclo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: cadena de caracteres a ASCII
« Respuesta #4 en: 1 Diciembre 2014, 23:39 pm »

strlen te da el tamaño del array entre la posición "0" y el carácter de fin, sin incluir este

Cuando te salga "basura" al final siempre el problema es que estas leyendo fuera de los límites que se supone has establecido, y por ahí tienes que buscar el problema.

Recuerda que cuando inicializas una variable del tipo que sea (o casi todas), y eso incluye los arrays, lo que se hace es reservar un espacio de memoria para esa variable, pero el programa en ningún momento se encarga de "limpiar" esa zona, de manera que puede contener cualquier valor.

Y esa es la "basura" que puede salirte. En estos casos siempre tienes la pista de porque falla, y por ahí es por donde debes de buscar.

En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: cadena de caracteres a ASCII
« Respuesta #5 en: 2 Diciembre 2014, 01:50 am »

EL PROBLEMA ES QUE ME SALE BASURA AL FINAL Y NO HE VISTO CUAL PUEDE SER EL PROBLEMA
Por favor NO publiques todo el texto de tu mensaje en mayúsculas, lo prohíben las reglas de los foros.

En cuanto al programa se deben cambiar los nombres de los encabezados y evitar el uso de la función gets, las razones de ello se indican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Ademas:
* No es necesario el uso de dos contadores (las variables "i" y "j"), con uno solo basta.
* Para procesar todos los caracteres el limite debe ser "< strlen(frase)".
* Lo anterior no es necesario ya que las cadenas "a la C" se pueden procesar hasta encontrar el carácter '\0'.
* El programa no genera la salida esperada porque la asignación esta al revés:
Código
  1. frase[i] = num_frase[j]; // Deberia ser num_frase[j] = frase[i];

Por ultimo no es necesario un array de enteros, en su lugar se puede generar el entero correspondiente con:
Código
  1. cout << frase[i] << "=" << int(frase[i]) << endl;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extraer ASCII de cadena
Programación Visual Basic
Javilondo 3 9,780 Último mensaje 1 Noviembre 2013, 01:53 am
por pilotomenduco
[ANSI C]Convertor de cadena a ASCII.
Programación C/C++
PHAMTOM 1 2,119 Último mensaje 5 Julio 2010, 03:28 am
por nicolas_cof
caracteres ascii
Windows
roxie 2 3,611 Último mensaje 14 Septiembre 2010, 20:34 pm
por jadara
Comparar cadena con un caracter ascii
Programación C/C++
d00ze13 2 10,694 Último mensaje 9 Marzo 2011, 10:30 am
por Akai
Descifrar una cadena ascii que esta codificada con otro algoritmo...
Programación Visual Basic
illuminat3d 0 777 Último mensaje 27 Julio 2019, 21:01 pm
por illuminat3d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines