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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Redondear un entero positivo a la centena más proxima
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Redondear un entero positivo a la centena más proxima  (Leído 8,962 veces)
djpacheco3

Desconectado Desconectado

Mensajes: 5


Ver Perfil
[C++] Redondear un entero positivo a la centena más proxima
« en: 3 Septiembre 2019, 21:36 pm »

se desea redondear un entero positivo N a la centena mas proxima y visualizar la salida.
Para ello la entrada de datos debe de sr los cuatro digitos A,B,C,D del entero N. Por ejemplo, si A es 2, B es 3, C es 6 y D es2, entonces N será 2362 y el resultado redondeado será 2400. SiN es 2342, el resultado seeá 2300 , y si  N=2962, entonces el numero será 3000



Mod: Obligatorio el uso de títulos descriptivos. Segundo aviso.
https://foro.elhacker.net/reglas


« Última modificación: 4 Septiembre 2019, 15:04 pm por #!drvy » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda!!!!
« Respuesta #1 en: 3 Septiembre 2019, 22:07 pm »

Te voy a responder yo porque creo que no lo va a hacer nadie más.

No se hacen tareas. Si quieres ayuda deberás haber creado la solución, mostrarla e indicar dónde te has quedado bloqueado. Pero desde cero nadie se va a poner a hacértelo.


En línea

djpacheco3

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda!!!!
« Respuesta #2 en: 3 Septiembre 2019, 23:20 pm »

Me puedes ayudar como comienza por favor y la formula como redondear te lo ruego porfavor es un deber para mañana que esa clase falte por razones de enfermedad
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ayuda!!!!
« Respuesta #3 en: 4 Septiembre 2019, 02:47 am »

para redondear en c++ usualmente lo mejor es cambiar el numero a float, dividirlo entre la base del redondeo (en tu caso 100) pasar el resultado a entero, restar el float y si el resultado es mayr que 0.5 sumas 1 al entero... luego le multiplicas por la base

Código:
int base = 100;
int numero = 1234;

float numero_decimal  = numero;
numero /= base;
numero_decimal /= base;
if(numero_decimal-numero > 0.5) {
  numero ++;
}
numero *= base;


no uses ayuda como titulo de tus temas no son para nada descriptivos
« Última modificación: 4 Septiembre 2019, 15:02 pm por #!drvy » 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.
98Fran

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Ayuda
« Respuesta #4 en: 4 Septiembre 2019, 12:07 pm »

Código
  1. #include <iostream>
  2.  
  3. int main(){
  4. float x = 12.9, aux;
  5. int y = x;
  6.  
  7. aux = x - y; //aux = 12.9 - 12 = 0.9
  8.  
  9. if (aux >= 0.5){
  10. ++y; // Es igual a y += 1 que es igual a y = y + 1
  11. }
  12.  
  13. std::cout << y;
  14.  
  15.  
  16. std::cin.get();
  17. return 0;
  18. }
Si usas
Código
  1. using namespace std;

quita los [std::] y ya estaría
« Última modificación: 4 Septiembre 2019, 12:09 pm por 98Fran » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Ayuda
« Respuesta #5 en: 4 Septiembre 2019, 20:00 pm »

Código
  1. #include <iostream>
  2.  
  3. int main(){
  4. float x = 12.9, aux;
  5. int y = x;
  6.  
  7. aux = x - y; //aux = 12.9 - 12 = 0.9
  8.  
  9. if (aux >= 0.5){
  10. ++y; // Es igual a y += 1 que es igual a y = y + 1
  11. }
  12.  
  13. std::cout << y;
  14.  
  15.  
  16. std::cin.get();
  17. return 0;
  18. }
Si usas
Código
  1. using namespace std;

quita los [std::] y ya estaría
Esto redondea a la unidad y lo que están solicitando es un redondeo a la centena... :silbar:
La solución que sí funciona es la que ha dado @engel lex.
En línea

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


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [C++] Redondear un entero positivo a la centena más proxima
« Respuesta #6 en: 4 Septiembre 2019, 21:17 pm »

Ei, bonito reto. Bueno, ahora que ya ha pasado la fecha límite:
Siempre que no se tenga en cuenta que xy45 pueda promocionar a 50 y este a x(y+1)00 os dejo este código de una sola línea, dónde n es nuestro número:

 n = (n/100 + (n%100>=50)) * 100;
« Última modificación: 4 Septiembre 2019, 23:01 pm por MAFUS » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C++] Redondear un entero positivo a la centena más proxima
« Respuesta #7 en: 4 Septiembre 2019, 21:25 pm »

 ;-)

Código:
n = (n/100 + (n%100>=50)) * 100;

buen uso de la promoción de operandos para este caso

solo para hacerlo modular

Código:
base = 100 
n = (n/base + (n%base>=base/2)) * base;

donde n y base deben ser enteros y base mayor a 10 (porque si no solo truncará)
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.
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: [C++] Redondear un entero positivo a la centena más proxima
« Respuesta #8 en: 5 Septiembre 2019, 12:58 pm »

Parece mas simple no multiplicar, asi:

redondeo = (n+50) - (n+50)%100
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [C++] Redondear un entero positivo a la centena más proxima
« Respuesta #9 en: 6 Septiembre 2019, 09:28 am »

Qué guapo. Me gusta.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Pregunta] Redondear Bordes Imagen
Programación Visual Basic
skyweb07 7 8,792 Último mensaje 29 Agosto 2009, 16:46 pm
por skyweb07
(Solucionado)Redondear en c++. Ayuda
Programación C/C++
theseniorman 2 2,691 Último mensaje 4 Junio 2014, 20:13 pm
por theseniorman
[Solucionado] Problema en ejercicio: Sacar factorial de entero positivo (C++)
Programación C/C++
Mario Olivera 2 3,147 Último mensaje 21 Agosto 2014, 15:35 pm
por Mario Olivera
Centenas, Media centena, decena, restantes « 1 2 »
Programación C/C++
Themegajordan 10 4,998 Último mensaje 24 Mayo 2016, 00:56 am
por MAFUS
Redondear Multiplos
.NET (C#, VB.NET, ASP)
CM2ARY 3 7,316 Último mensaje 13 Agosto 2017, 02:11 am
por CM2ARY
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines