Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: INFERNOz en 26 Octubre 2014, 15:42 pm



Título: Ayuda en C++
Publicado por: INFERNOz 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


Título: Re: Ayuda en C++
Publicado por: engel lex 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 ;)


Título: Re: Ayuda en C++
Publicado por: ShadowA7X 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.




Título: Re: Ayuda en C++
Publicado por: rir3760 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