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)
{
if (*d>abs(a0-a2))
if (*d>abs(a0-a3))
if (*d>abs(a0-a3))
if (*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);
}
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