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.

Beginner Web

No me habia dado cuenta de la fecha como salto al principio dije "a ver tiene una hermana y si lo ayudamos?"  ;-)
7w7

jca1


dijsktra

#22
Cita de: Beginner Web en  4 Septiembre 2018, 23:14 PM
No me habia dado cuenta de la fecha como salto al principio dije "a ver tiene una hermana y si lo ayudamos?"  ;-)

Bueno, vale, pues ayudémoslo! Total, quedará registrado en Internet para la posteridad para el que quiera consultarlo...

Lo que no entiendo es por qué no le dejan usar arrays ni bucles...En fin...


#include <stdio.h> // scanf, printf
#include <stdlib.h> // abs

/*
  Note: Arrays and loops forbidden! 8-O

  P : True
  fun min5(a0,a1,a2,a3,a4) dev <p,d>:(int,int)
  Q : p=min i : 1 <= i < 5 : |ai-a0|=d and
      d=min i : 1<=i<N : |ai-a0|

  (Not sure about legitimate use of ai at object language)

*/


void min5(const int a0,const int a1,const int a2,const int a3,const int a4,
         int *p, int *d)
{
 *p=1; *d=abs(a0-a1);
 if (*d>abs(a0-a2))
   { *p=2; *d=abs(a0-a2);}
 if (*d>abs(a0-a3))
   { *p=3; *d=abs(a0-a3);}
 if (*d>abs(a0-a3))
   { *p=3; *d=abs(a0-a3);}
 if (*d>abs(a0-a4))
   { *p=4; *d=abs(a0-a4);}
 return;
}

int main(int argc, char *args[])
{
 int a0,a1,a2,a3,a4;
 int p,d;
 for( ;scanf("%d%d%d%d%d",&a0,&a1,&a2,&a3,&a4)==5 ; )
   {
     min5(a0,a1,a2,a3,a4,&p,&d);
     printf("%d %d\n",p,d);
   }
 return 0;
}
 



EDIT Según me han hecho notar, efectivamente hay un errata: las líneas 25-26 aparecen duplicadas por error

Algunas pruebas de ejecución...


  • La línea impar es la entrada de cinco variables(a0,a1,a2,a3,a4).
  • La línea par saca el ordinal de la variable que esta más cerca (4 -> a4) y la distancia |a4-a0|. En caso de varías a la misma distancia, escoge la de ordinal más baja


1001 1002 2 3 4
1 1
1001 2 1002 3 4
2 1
1001 2 3 1002 4
3 1
1001 2 3 4 1002
4 1
1001 1001 1001 1001 1001
1 0
Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)