Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] No se ejecuta el programa :/ no se identificar el error

Estas en el tema de No se ejecuta el programa :/ no se identificar el error en el foro de C/C++ en Foros del Web. ya hice el programa le e movido pero no encuentro el error de que no se ejecute correctamente si me podrian ayudar muchas gracias Este ...
  #1 (permalink)  
Antiguo 26/10/2014, 13:57
Avatar de Gio_Orozcoo  
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta No se ejecuta el programa :/ no se identificar el error

ya hice el programa le e movido pero no encuentro el error de que no se ejecute correctamente si me podrian ayudar muchas gracias

Este es el problema:
Se desea redondear un entero positivo N a la centena más próxima y visualizar su salida. Para ello la entrada de datos debe ser los cuatro dígitos A,B,C,D que componen el entero N. Ejemplos: Si A=2, B=3, C=6 y D=2 entonces N= 2362 y el programa despliega como salida 2400. Si A=2, B=3, C=4 y D=2 entonces N= 2342 y el programa despliega como salida 2300. Si N= 2963 el programa despliega 3000 como salida.


Código C:
Ver original
  1. //Redondeo a la centena mas proxima
  2.  
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5.  
  6. int main (){
  7.     int A,B,C,D;
  8.    
  9.     printf("Ingrese el valor de los 4 digitos: ");
  10.     scanf("%d %d %d %d",&A,&B,&C,&D);
  11.    
  12.     if( B>=9 && C>=5){
  13.         A++;
  14.         B=0;
  15.         C=0;
  16.         D=0;
  17.     }
  18.     else if(B>=9 && C<5){
  19.     B= B;
  20.     C=0;
  21.     D=0;
  22.     }  
  23.     else if(B<9 && C>=5){
  24.         B++;
  25.         C=0;
  26.         D=0;
  27.     }
  28.     else{
  29.         C=0,
  30.         D=0;
  31.     }
  32.    
  33.  
  34.    
  35.     printf("La centenas mas proxima es: %d %d %d %d\n",A,B,C,D);
  36.    
  37.     system("pause");
  38.     return 0;
  39. }
  #2 (permalink)  
Antiguo 26/10/2014, 14:07
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: No se ejecuta el programa :/ no se identificar el error

El programa si se ejecuta, no? otra cosa es que no te de el resultado esperado... el título del mensaje no es el más adecuado.

Por otro lado, te estás complicando en exceso con las comprobaciones. Tienes que intentar simplificar:

* Si C >= 5 -> B++
* Si B == 10 -> B = 0, A++
* C = 0, D = 0
  #3 (permalink)  
Antiguo 27/10/2014, 05:13
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: No se ejecuta el programa :/ no se identificar el error

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main (){
  4.    
  5.     int n = 2362;     //funciona con numeros de 1051 hasta 99999
  6.    
  7.     int mil;
  8.     int cen;
  9.     int dec;
  10.    
  11.     if ( n > 1050 ){
  12.         //guardo el resultado de dividir n por 1000
  13.         mil = n/1000; // En ese caso el guardo el 2 en mil.
  14.        
  15.         //nos deshacemos del 2000 quedando solo con 362
  16.         n = n%1000; // Ahora n tiene 362
  17.        
  18.         //Separamos centena haciendo lo mismo que antes
  19.         cen = n/100; //cen guarda el 3
  20.        
  21.         //Ya solo queda obtener la decena, o sea el 62
  22.         dec  = n%100;  //dec guarda 62
  23.        
  24.         //Miramos si dec "dec" es mayor o menor que 50 para aplicar el debido cambio
  25.        
  26.        
  27.         //si es dec es mayor que 50 redondeamos la casa de centena a mas
  28.         if ( dec > 50 ){
  29.             //volvemos a empaquetar el numero por si queremos usar despues ;)
  30.             mil = mil * 1000;
  31.             cen = cen * 100;
  32.             n = mil+(cen+100);
  33.            
  34.             //listo! n esta reempaquetado y redondeado hacia arriba a causa de su decena ser mayor que 50
  35.            
  36.        
  37.         //si es dec es menor que 50 redondeamos la casa de centena a memos    
  38.         }else{
  39.             //volvemos a empaquetar el numero por si queremos usar despues ;)            
  40.             mil = mil * 1000;
  41.             cen = cen * 100;
  42.             n = mil+cen;
  43.            
  44.             //listo! n esta reempaquetado y redondeado hacia abajo a causa de su decena ser menor que 50
  45.            
  46.         }
  47.     }
  48.    
  49.     //Solo queda imprimir
  50.     printf("%d",n);    
  51.  
  52.     //una pausita
  53.     getchar();
  54.    
  55.     //salimos por puerta XD
  56.     return 0;
  57. }

Te dejo una forma que trabaja con un simple int y no con 4.
a pesar de entrar con un solo int, es el mismo programa que lo destripa y lo vuelve a ensamblar al fin una vez redondeado.

Es bien fácil de entenderlo pero te lo comento por si ves dificultad.

Intenta terminar tu programa como sea, no es por que te haya dado una solución que debas abandonar lo que estas haciendo.
Si logras hacerlo sera una victoria y así lo practicaras. ;)
Es mas... quiero que pongas aquí tu programa después de listo =3

  #4 (permalink)  
Antiguo 27/10/2014, 05:57
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: No se ejecuta el programa :/ no se identificar el error

Cita:
Iniciado por vangodp Ver Mensaje
[HIGHLIGHT="C"]
Te dejo una forma que trabaja con un simple int y no con 4.
Me he tomado la libertad de simplificar un poco tu código, espero que no te moleste ;)

no hace falta separar miles y centenas, pueden ir en el mismo paquete... y puedes ahorrarte un par de líneas de código.

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.   int n = 2962;     //funciona con cualquier int
  6.  
  7.   int parteAlta = n / 100; // miles y centenas
  8.   int parteBaja = n % 100; // decenas y unidades
  9.  
  10.   if ( parteBaja > 50 )
  11.     parteAlta++;
  12.  
  13.   n = parteAlta * 100;
  14.  
  15.   //Solo queda imprimir
  16.   printf("%d",n);
  17.  
  18.   //una pausita
  19.   getchar();
  20.  
  21.   //salimos por puerta XD
  22.   return 0;
  23. }
  #5 (permalink)  
Antiguo 27/10/2014, 09:03
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: No se ejecuta el programa :/ no se identificar el error

Cita:
Me he tomado la libertad de simplificar un poco tu código, espero que no te moleste ;)
Por mi perfecto

Aun que pensé que era para arredondear la "CASA" de la centena. O yo que se ya lo que entendí. XD

De echo es lo que hace el programa. si le echas 2360 arredondea a 2400 y si le pasas 2330 arredondea a 2300.

Pero a lo mejor he mal interpretado XDDD
  #6 (permalink)  
Antiguo 27/10/2014, 09:24
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: No se ejecuta el programa :/ no se identificar el error

Cita:
Iniciado por vangodp Ver Mensaje
Por mi perfecto
Aun que pensé que era para arredondear la "CASA" de la centena. O yo que se ya lo que entendí. XD

De echo es lo que hace el programa. si le echas 2360 arredondea a 2400 y si le pasas 2330 arredondea a 2300.

Pero a lo mejor he mal interpretado XDDD
Me he perdido :S
  #7 (permalink)  
Antiguo 27/10/2014, 09:31
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: No se ejecuta el programa :/ no se identificar el error

y yo jajajaja

Es que no he entendio lo de
Cita:
Se desea redondear un entero positivo N a la centena más próxima y visualizar su salida.
Si es para redondear la casa 1000 0 la casa 0100. Creo que es como tu dices pero yo que se O.o.

lo que hice es redondear eso que esta en negrita: 3262 y no eso 3262.

Pero bueno... aun así es culpa de mi torpeza lo de no entender lo que me ha expresado. Que voy hacer... así soy yo XDD

Bueno al menos no va salir de aquí con dudas si for como lo has dicho tuXDDD
Suerte
  #8 (permalink)  
Antiguo 27/10/2014, 10:21
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: No se ejecuta el programa :/ no se identificar el error

Lo que tiene que quedarte es una cifra tal que XX00. Tienes que cargarte las unidades y las decenas para hacer el redondeo...

Tanto tu código como el mío hacen exactamente eso, por eso digo que me he perdido.
  #9 (permalink)  
Antiguo 27/10/2014, 14:29
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: No se ejecuta el programa :/ no se identificar el error

Cita:
Iniciado por eferion Ver Mensaje

... y puedes ahorrarte un par de líneas de código.
Eso de ahorrar líneas me gusta. Ahí va mi propuesta :

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main ( void ) {
  4.   int n1 = 2962 , n = n1 , n2 = 100 ;
  5.   n1 = ( n1 % n2 ) < n2 / 2 ? n2 * ( n1 / n2 ) : n2 + n2 * ( n1 / n2 ) ;
  6.   return printf( "\n\tn = %d ==> %d\n\n" , n  , n1 ) , 0 ;
  7. }

Dejo n2 como 100, así se puede usar como 10 para redondear decenas, etc.

¡¡¡Saluditos!!!

  #10 (permalink)  
Antiguo 27/10/2014, 18:10
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: No se ejecuta el programa :/ no se identificar el error

joer con lo del return printf jajaj

  #11 (permalink)  
Antiguo 27/10/2014, 22:22
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: No se ejecuta el programa :/ no se identificar el error

Cita:
Iniciado por vangodp Ver Mensaje
joer con lo del return printf jajaj

jajaja, me divierte que te sorprendas a estas alturas.

Y bien mirado puse unas líneas de más: jejeje

Código C++:
Ver original
  1. #include <stdio.h>
  2. int main(void){int n=296 ,n2=100,n1=(n%n2)< n2/2?n2*(n/n2):n2+n2*(n/n2),return printf("\n\tn = %d ==> %d\n\n" ,n ,n1),0;}

Un fuerte abrazo a todos y en especial al amigo vangodp. Por cierto, estoy deseando que alguien abra un tema como el de laberintos a ver si seguimos mejorando lo que en su momento hicimos.

¡¡¡Saluditos!!!


Última edición por leosansan; 27/10/2014 a las 22:30

Etiquetas: ejecuta, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:04.