Programa que calcula el número más próximo al primero

Iniciado por DickGumshoe, 9 Noviembre 2011, 23:36 PM

0 Miembros y 1 Visitante están viendo este tema.

DickGumshoe

Cita de: $Edu$ en 12 Noviembre 2011, 00:15 AM
Pedis un valor, y lo guardas en una variable, luego pedis el valor del segundo y haces la resta con el numero guardado y guardas eso y guardas en otra variable ese numero ingresado como el numero proximo, luego haces lo mismo siempre y vas verificando si la resta de uno es menor al del que esta como numero proximo, entonces modificas el numero proximo actual.

int num; ' primer numero

int resta; ' la resta

int proximo; ' el numero proximo

Restar el numero ingresado con num y guardar el resultado en resta. Poner ese numero ingresado en proximo.
Pedir siguiente numero, hacer la resta y verificar si el resultado es menor a lo que vale la variable resta, si es asi cambiaras la variable proximo por el numero ingresado. Y asi hara eso siempre. No puedo ayudarte mas, y habra otras soluciones tambien

Ah, vale, muchas gracias.

Eso más o menos lo tenía puesto en el papel explicándolo, pero como al pasarlo no daba bien y tenía puesto tantas cosas, no sabía qué parte estaba mal. Sabiendo que eso está bien, creo que volveré a empezar el programa, para no liarme con tanto código como antes.

Muchísimas gracias.

$Edu$

Hace el intento y si fracasas por lo menos deja aca el codigo para ver que haces mal, pero yo no se C++ pero lo puedo comprender al codigo y veremos que le pasa, saludos

DickGumshoe

Bueno... Aquí estoy de vuelta... (Lo siento...).

(Ahora estoy haciendo solo que si solo hay un número que se aproxime más al primero, y no dos).

Ahora me parece que tengo el código mejor que antes, e incluso podría llegar a pensar que lo tengo bien, excepto por una cosa, y es que al poner, por ejemplo, 1,2,3,4,5... Me dice que el número más aproximado es "0.00000"

El código que tengo es:

Código (cpp) [Seleccionar]

   
   
   
   
    #include <stdio.h>
#include <stdlib.h>

int main (void){

    float a,r,n,d,d2,d3,d4,n_cercano;
   
   
   
   
   
   

    printf("Introduce el primer numero");
    scanf("%f",&a);

    printf("Introduce el segundo numero");
    scanf("%f",&n);
                    d=(n-a)*(n-a);
                   
                   
    printf("Introduce el tercer numero");
    scanf("%f",&n);
   
                    d2=(n-a)*(n-a);
                   
                    if(d2<d){
                             n_cercano=n;
                             d=d2;
                             }
                     
    printf("Introduce el cuarto numero");
    scanf("%f",&n);
                   d3=(n-a)*(n-a);
                     if(d3<d){
                             n_cercano=n;
                             d=d3;
                             }
   
     printf("Introduce el quinto numero");
    scanf("%f",&n);
                   d4=(n-a)*(n-a);
                    if(d4<d){
                             n_cercano=n;
                             d=d4;
                             }
   
   
   
        printf("El numero mas cercano al primero es %f",n_cercano);
                     
                     


system("pause");
}



   


Muchas gracias, y siento si os molesto mucho...

$Edu$

No me gusta mucho como esta quedando pero te digo que te falto asignarle:

n_cercano=n;

en la toma del segundo numero, es decir, en los demas haces la comparacion, pero en el segundo numero como es el primer numero posible para el numero cercano, ya se lo asignas.

Fijate si asi anda

DickGumshoe

Cita de: $Edu$ en 12 Noviembre 2011, 02:20 AM
No me gusta mucho como esta quedando pero te digo que te falto asignarle:

n_cercano=n;

en la toma del segundo numero, es decir, en los demas haces la comparacion, pero en el segundo numero como es el primer numero posible para el numero cercano, ya se lo asignas.

Fijate si asi anda

Ah, vale, muchas gracias. Se me olvidó ponerlo ahí...

Bueno, entonces ya me sale esa parte. Ahora seguiré cinco minutos intentando poner si 2 números están a la misma distancia del primero, sino lo intento mañana pro la mañana.

Muchísimas gracias de nuevo.

RyogiShiki

#15
Bueno no he revisado el código, pero te hago unos apunte. Para que declarar como float cuando solo los usas como enteros (int).

Ahora, te recomiendo este es un ejemplo en buenas prácticas de identación:



Es bueno que dejes comentarios en las partes que te parezcan que sean complejas así cuando vuelvas a mirar el código sabes que hace cada cosa.

Es bueno que los nombres de las variables sean explicitas y tengan relación con su uso, así te evitas dolores de cabeza más tarde.



Mod: Tamaño máximo de las imágenes -> 800x600px.


DickGumshoe

Ah, muchas gracias a ti también por la aclaración.

Declaré como float porque se supone que el programa también debe reconocer números decimales (aunque la función del programa es más bien aprender, así que también podría haberlo declarado como int, como bien dices).

Lo de los comentarios lo hice en un solo programa, pero veo que ya me va siendo necesario volver a usarlo.

Muchas gracias.

Taurs

#17
Solucion pero aun falta cuando existen 2  o mas numeros cercanos al primero, espero que les sirva!(esta en python)

Código (cpp) [Seleccionar]
num1 = int (input("Ingrese un numero1: "))
num2 = int (input("Ingrese un numero2: "))
num3 = int (input("Ingrese un numero3: "))
num4 = int (input("Ingrese un numero4: "))
num5 = int (input("Ingrese un numero5: "))
##
r2 = abs(num1 - num2)
r3 = abs(num1 - num3)
r4 = abs(num1 - num4)
r5 = abs(num1 - num5)

menor = r2
cercano = num2
if r3 < menor:
   menor = r3
   cercano = num3
   print ("El mas cercano es:  num3 y su valor ingresado es: ", num5)
if r4 < menor:
   menor = r4
   cercano = num4
   print ("El mas cercano es: num 4 y su valor ingresado es: ", num4)
if r5 < menor:
   menor = r5
   cercano = num5
   print ("El mas cercano es:  num5 y su valor ingresado es: ", num5)
if r2 == menor:
   print ("El mas cercano es:  num2 y su valor ingresado es: ", num2)




Mod: Obligatorio el uso de etiquetas GeSHi para códigos.

Beginner Web

Yo te podria ayudar si me sacas de una duda, a que te refierenes con el primero? "mas proximos al primero"
7w7

MAFUS