Aquí va mi solución (si no he entendido mal):
Código C++:
Ver original#include <stdio.h>
#include <string.h>
#define NCABLES 3
int main ()
{
char cable[NCABLES][25];
char combinacion [NCABLES][50];
int i=0,indice_mayor=0,indice_trabajo,indice_menor=0,comun;
int mayor=0;
int menor=0;
float valor [NCABLES];
for (i=0;i <NCABLES;i++)
{
printf ("Introduce el color %d: ",i
+1); }
for (i=0;i<NCABLES;i++)
{
sprintf (combinacion
[i
],"el %s y el %s",cable
[i
], i
<2?cable
[i
+1]:cable
[0]); printf ("Introduce la resistencia entre %s: ",combinacion
[i
]); if (i==0)
{
mayor=valor[i];
menor=valor[i];
}
if (i>0)
{
if (valor[i]>mayor)
{
indice_mayor=i;
mayor=valor[i];
}
if (valor[i]<menor)
{
indice_menor=i;
menor=valor[i];
}
}
}
indice_trabajo=0;
for (i=0;i<NCABLES;i++)
{
if (indice_trabajo==indice_menor || indice_trabajo==indice_mayor)
{
indice_trabajo++;
}
}
printf ("El condensador va entre %s\n", combinacion
[indice_mayor
]); printf ("La bobina de arranque esta entre %s\n",combinacion
[indice_menor
]); printf ("La bobina de trabajo esta entre %s\n",combinacion
[indice_trabajo
]);
for (i=0;i <NCABLES;i++){
if (strstr (combinacion
[mayor
],cable
[i
])==NULL
){ comun=i;
break;
}
}
printf ("El comun es el %s. Conecta el neutro en el\n",cable
[comun
]); }
Como dice enrieto, una posible mejora sería verificar que la suma los dos valores menores sea igual al mayor (con alguna tolerancia) para evitar datos erróneos.
Un saludo...ya me dirás si era eso o no me he enterado de la idea