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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Ayuda en C++
« en: 26 Octubre 2014, 15:42 pm »

Disculpen la molestia pero para redondear un número a entero por ejemplo
si es 2678 que me lo redondee a 2700 o si es 2648 que me lo redondee a 2600
que codigo se emplea? :(

Si me podrían ayudar con ese condigo les agradecería mucho
es para un examen 


Saludos ;D


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda en C++
« Respuesta #1 en: 26 Octubre 2014, 15:53 pm »

con modulo (%) podrías hacer algo como

restas el modulo al numero (eso lo dejará en 1000, 2000, 3000... etc)

si el modulo de mil es mayor o igual a quinientos, entonces sumas mil (redondea al mil proximo)

algo como

Código:
NUMERO = 3456
RESULTADO = NUMERO - (NUMERO modulo de 1000)
si:  (NUMERO modulo de 1000) es mayor o igual a 500
    sumar 1000 a RESULTADO

has el código no es difícil ;)


« Última modificación: 27 Octubre 2014, 02:29 am por engel lex » 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.
ShadowA7X

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Ayuda en C++
« Respuesta #2 en: 26 Octubre 2014, 21:47 pm »

Sólo ve que parámetros quieres seguir (depende que tanto quieras redondear un número).

Si tu enfoque sólo va a los primeros 2 dígitos (de derecha a izquierda obviamente), enfocate en el tercer dígito (que es el que se terminará alterando o no por la aproximación).

algo como:

char num_en_caracteres[10];
int num=2437;
int cant_dig;

num_en_caracteres[10]=atoi(num) //Atoi transforma un numero a cadena.
cant_dig=strlen(num_en_caracteres); //Cuenta la cantidad de digitos que tiene el numero ingresado.

//Ya que la variable num tiene el numero 2437 que son 4 digitos, la variable cant_dig tendra el valor 4.

Ahora ocupas un for para mover bien los indices y dentro de él ocupas un if que tenga la condición (considerando sólo los dos primeros digitos de num) si el numero es mayor o menor a cincuenta) sume uno a al tercer digito y deje los primeros dos en 0 o simplemente que deje los primeros dos en cero (dependiendo de si era mayor o no a 50).

Eso, Te lo dejé muy detallado. Ahora sólo queda poner de tu parte para hacer el código y lo adaptes a lo que quieres.

Saludos.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda en C++
« Respuesta #3 en: 27 Octubre 2014, 02:02 am »

algo como:

char num_en_caracteres[10];
int num=2437;
int cant_dig;

num_en_caracteres[10]=atoi(num) //Atoi transforma un numero a cadena.
No funcionara porque los indices validos del array son [0, 9], el operador de asignación "=" no puede utilizarse con arrays y porque el valor de retorno de la función atoi es de tipo int.

Si lo que quieres es almacenar cada uno de los dígitos del numero en el array (como los caracteres '0' .. '9') puedes utilizar la función sprintf, de esta forma:
Código
  1. sprintf(num_en_caracteres, "%d", num);
Con el detalle de ser una forma mas propia de C que de C++, con este ultimo lo primero que se me ocurre es utilizar las clases string y stringstream.

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:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines