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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en una Línea de Codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en una Línea de Codigo  (Leído 4,386 veces)
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Duda en una Línea de Codigo
« en: 4 Diciembre 2021, 06:25 am »

En el Codigo que dejo más abajo me sucede que
La línea ( análoga a la de " texto = .... " )
" " numeros = numeros + alfanumerico [ a ] ; " "
la única manera en que la entiendo ( más allá del mi comentario al lado ) es pensandola como un contador tipo " i = i + 1 ( 1 sería el prox Nro que encuentre ) "
....... Si pensarlo así está mal o bien, igualmente lo que no me cierra del todo es el " + " que suma dos variables
pero que ambas no tienen afinidad absoluta entre sí - o sea no es que " numeros = 8 y alfanumerico [ a ] = 17 ; o sea,
pensándolo como tipo de Datos ....  ¡ string = string + char ( ? ) !!!! ( aunque sea cierto q la 2da variable sea un a
rray de la 1era - cuyo subíndice es el contador principal - ) ; ¿ Hay otra forma más clara de entenderlo ? (( X otra parte, si me explicarían porqué puedo prescindir de declarar la biblioteca CCTYPE - función isdigit - ..... pues si no la declaro el Codigo funciona igual ( ? ) ))

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cctype>
  4. using namespace std;
  5.  
  6. char alfanumerico[100];
  7.  
  8.  
  9. string numeros;
  10.  
  11. string texto;
  12.  
  13.  
  14. int main( )
  15. {
  16.  
  17. int a = 0;
  18.  
  19.  
  20. cout << "Ingrese N\243meros y Letras MEZCLADOS :" << endl;
  21.  
  22. cin >> alfanumerico;
  23.  
  24. // " a " va a referir a cada uno de los Elementos del 'Array', desde el " [0] ",
  25. // hasta el último que se ingrese " [ ' n ' ] "
  26. while ( a < ( sizeof ( alfanumerico ) - 1 ) ) // Que se evalúe la existencia, desde
  27.                                              // lo cuantitativo, de  un Elemento
  28.                                              // del 'Array' que sea menor al
  29.                                              // tamaño total del 'Array'
  30. {
  31.  
  32. if ( isdigit ( alfanumerico [a] ) )
  33. {
  34.  
  35. numeros = numeros + alfanumerico [a]; // "  Viene a ser como un ''' i = i + 1 '''  "
  36.                                      // Si en el 'Array' ya había un Nro, que éste
  37.                                      // se almacene y busque el próximo para
  38.                                      // también almacenarlo en la Var " numeros "
  39.  
  40. }
  41. else
  42. {
  43.  
  44. texto = texto + alfanumerico [a];     // Si en el 'Array' ya había una Letra, que ésta
  45.                                      // se almacene y busque la próxima para
  46.                                      // también almacenarla en la Var " texto "
  47.  
  48.  
  49. }
  50.  
  51. a ++;
  52.  
  53. }
  54.  
  55. cout << "Los N\243meros son :" << numeros << endl;
  56.  
  57. cout << "Las Letras son :" << texto << endl;
  58.  
  59.  
  60. system ("pause");
  61. }
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  



En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda en una Línea de Codigo
« Respuesta #1 en: 4 Diciembre 2021, 09:42 am »

Estas trabajando con objetos y al sumar una cadena y un caracter se llama a un operador + sobrecargado que se encarga de hacer el trabajo necesario para agregar un caracter en una cadena.

https://en.cppreference.com/w/cpp/string/basic_string/operator%2B

Tu codigo es equivalente a:
Código
  1. numeros = std::operator+(numeros, alfanumerico [a]);




En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
dario01dr

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Duda en una Línea de Codigo
« Respuesta #2 en: 5 Diciembre 2021, 03:49 am »

Hola, porque no usas el C++ moderno. Te dejo un ejemplo.
Salu2.

Código
  1. for (auto caracter : cadena) {
  2.    if (isdigit(caracter))
  3.      numero = numero + caracter;
  4.  }
  5.  
  6.  cout << numero;
  7.  
En línea

snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Re: Duda en una Línea de Codigo
« Respuesta #3 en: 5 Diciembre 2021, 11:01 am »

Estas trabajando con objetos y al sumar una cadena y un caracter se llama a un operador + sobrecargado que se encarga de hacer el trabajo necesario para agregar un caracter en una cadena.

https://en.cppreference.com/w/cpp/string/basic_string/operator%2B

Tu codigo es equivalente a:
Código
  1. numeros = std::operator+(numeros, alfanumerico [a]);





Gracias !!!!
( Y lo de la Librería cctype ? )
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda en una Línea de Codigo
« Respuesta #4 en: 5 Diciembre 2021, 11:37 am »


Gracias !!!!
( Y lo de la Librería cctype ? )

iostream incluye otras cabeceras que terminan incluyendo directamente a cctype o a alguna otra que declara isdigit. Podes verlo si compilas con -H en g++ (/showIncludes en VC++).
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Re: Duda en una Línea de Codigo
« Respuesta #5 en: 5 Diciembre 2021, 12:59 pm »

Gracias. Deduzco entonces que IOSTREAM incluye a LOCATIONS, pues me sucedió lo mismo que con CCTYPE en lo referente a ALGORITHM
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Duda en una Línea de Codigo
« Respuesta #6 en: 5 Diciembre 2021, 18:34 pm »

Gracias. Deduzco entonces que IOSTREAM incluye a LOCATIONS, pues me sucedió lo mismo que con CCTYPE en lo referente a ALGORITHM
No se debe suponer que una cabecera incluirá otras pues esto depende de cada implementación, de cada compilador.
Lo que a ti te funciona sin declarar una cabecera, a otra persona le puede fallar. Lo mejor es que si sabes que necesitas usar una cabecera, la declares explícitamente.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Re: Duda en una Línea de Codigo
« Respuesta #7 en: 6 Diciembre 2021, 08:39 am »

Buen consejo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Repetir una línea de código
.NET (C#, VB.NET, ASP)
Krata 5 4,896 Último mensaje 27 Febrero 2008, 23:51 pm
por Sin Nick xD
Duda Leer Linea por Linea de Un textBox
Programación Visual Basic
NsTeam 2 7,799 Último mensaje 1 Diciembre 2010, 02:58 am
por Stelio Kontos
Pasar de una linea de codigo a otro sin perder la secuencia del codigo en vb
Programación Visual Basic
plak 2 2,619 Último mensaje 28 Junio 2014, 03:13 am
por plak
Duda sobre una linea en mi codigo que no funciona
Programación C/C++
miguevv 6 2,735 Último mensaje 11 Agosto 2018, 03:31 am
por miguevv
Línea de Código : duda « 1 2 »
Programación C/C++
snoopty 10 9,182 Último mensaje 18 Diciembre 2021, 20:50 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines