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 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: 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.char num_en_caracteres[10]; int num=2437; int cant_dig; num_en_caracteres[10]=atoi(num) //Atoi transforma un numero a cadena. 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 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 |