Consulta [C++]

Iniciado por DA KILLER, 29 Marzo 2011, 13:43 PM

0 Miembros y 1 Visitante están viendo este tema.

DA KILLER

Buenas, lamento molestar por esta pequeñez, pero es que no como buscarla en internet, creo que es un tipo de abstracción de datos, pero al buscarlo de dicha manera me salen las formas de armar estructuras, y por ahora estoy con lo básico.

Lo que yo deseo es tomar "x" caracteres de una variable, en este caso los dos primeros, pero la variable es de tipo int, no char y quería saber si se puede hacer de otra manera que no sea mediante un array en char.

Por si no se me entiende lo dejo en Batch

Código (bash) [Seleccionar]
@REM Esto es lo que quisiera hacer en C/C++...
@Echo Off
Setlocal EnableExtensions EnableDelayedExpansion
Color 0A
:: Declaracion de Variables
Set "var="
Set "deseado="
Echo.
Set /P "var=Por favor ingrese un numero entero: "
Set "deseado=!var:~0,2!
Echo. Presione [Cualquier Tecla] para Salir...
Pause >nul
Exit /B %errorlevel%


De nuevo disculpen las molestias y Desde Ya muchas Gracias.
.: DA KILLER :.



Akai

Tu opción más "rentable" pasa por imprimir con sprintf o usar un stringstream para obtener el entero en una cadena, y entonces seleccionar los dos primeros carácteres.

aquí se discutió el tema hace poco.

http://foro.elhacker.net/programacion_cc/referencia_de_un_char_en_una_funcionakai_pasate_por_favor_que_modificadoxd-t322721.0.html

Por otro lado, si no quieres usar eso, tu otra opción es primero obtener el módulo 10 del número (último dígito) y luego dividir entre 10 mientras el número sea mayor que 0. Obviamente, tendrías que ir guardando en algún lado el último y penúltimo resultado del módulo.

consejo? lo primero es menos trabajo.

DA KILLER

Creo que me quedaré con el array  :P, veo que me falta mucho por conocer para tener aunque sea las bases del lenguaje, muchas gracias y cuando vuelva a mi casa subo el code del array por si alguien después lo pudiese usar para algo y se acaba el post.

De nuevo muchas gracias y cualquier consejo que me puedan dar para comenzar será bienvenido.
.: DA KILLER :.



Garfield07

Y si usases la función itoa (o algo así, es la hermana de atoi). Te pasa un int a un char, y lo puedes leer más sencillamente. Se me ocurre otra cosa más compleja, pero es lo más fácil...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Akai

El problema, Sagrini, es que pese a que atoi es parte del estándar, itoa no lo es. Y eso puede dar problemas. Usar sprintf o sstreams (string-streams) solventa el tema sin recurrir a salirse del estandar.

Sobre itoa en http://cplusplus.com/reference/clibrary/cstdlib/itoa/

Portability
This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

A standard-compliant alternative for some cases may be sprintf:
sprintf(str,"%d",value) converts to decimal base.
sprintf(str,"%x",value) converts to hexadecimal base.
sprintf(str,"%o",value) converts to octal base.

DA KILLER

Bueno finalmente decidí que sería más simple declarar una varible char en lugar de int y copiar los caracteres.

Dejo el código:

Código (cpp) [Seleccionar]

[...]
char var1 [200] = "1995";
char vared [12] = " ";
vared [0] = var1[0];
vared [1] = var1[1];
[...]


Antes no me funcionaba porque no había definido la variable "vared".

Saludos, gracias y perdón de nuevo por las molestias.
.: DA KILLER :.



Garfield07

Pues hace tiempo pensé en crear una librería personal con funciones reprogramadas útiles del día a día, para ver cómo iban. No lo empecé, pero la función que buscamos puede ser fácil de programar... Ahora no tengo ningunas ganas, pero si queréis saber cómo sería más o menos decídmelo ;) Sería coger cada cifra (dividir entre 10*X y quitar decimales) y pasarla a su correspondiente en ASCII. No más de diez líneas ;)

Un saludo!
Sagrini


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo