Autor
|
Tema: [C++] Redondear un entero positivo a la centena más proxima (Leído 8,962 veces)
|
djpacheco3
Desconectado
Mensajes: 5
|
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
Mensajes: 1.603
|
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
Mensajes: 5
|
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
|
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 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
Mensajes: 35
|
|
Re: Ayuda
« Respuesta #4 en: 4 Septiembre 2019, 12:07 pm » |
|
#include <iostream> int main(){ float x = 12.9, aux; int y = x; aux = x - y; //aux = 12.9 - 12 = 0.9 if (aux >= 0.5){ ++y; // Es igual a y += 1 que es igual a y = y + 1 } std::cout << y; std::cin.get(); return 0; }
Si usas 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
|
|
Re: Ayuda
« Respuesta #5 en: 4 Septiembre 2019, 20:00 pm » |
|
#include <iostream> int main(){ float x = 12.9, aux; int y = x; aux = x - y; //aux = 12.9 - 12 = 0.9 if (aux >= 0.5){ ++y; // Es igual a y += 1 que es igual a y = y + 1 } std::cout << y; std::cin.get(); return 0; }
Si usas 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... La solución que sí funciona es la que ha dado @engel lex.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
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
|
n = (n/100 + (n%100>=50)) * 100; buen uso de la promoción de operandos para este caso solo para hacerlo modular 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
|
Parece mas simple no multiplicar, asi:
redondeo = (n+50) - (n+50)%100
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Qué guapo. Me gusta.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Pregunta] Redondear Bordes Imagen
Programación Visual Basic
|
skyweb07
|
7
|
8,792
|
29 Agosto 2009, 16:46 pm
por skyweb07
|
|
|
(Solucionado)Redondear en c++. Ayuda
Programación C/C++
|
theseniorman
|
2
|
2,691
|
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
|
21 Agosto 2014, 15:35 pm
por Mario Olivera
|
|
|
Centenas, Media centena, decena, restantes
« 1 2 »
Programación C/C++
|
Themegajordan
|
10
|
4,998
|
24 Mayo 2016, 00:56 am
por MAFUS
|
|
|
Redondear Multiplos
.NET (C#, VB.NET, ASP)
|
CM2ARY
|
3
|
7,316
|
13 Agosto 2017, 02:11 am
por CM2ARY
|
|