Cita:
Iniciado por dehm 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
El código me da fallo de segmentación y creo que es por algún error al trabajar con los índices mayor y menor.
El código de en rito aun no lo pude probar porque estoy desde el movil usando c4ndroid y el móvil no me deja instalar gcc. En cuanto tenga un pc a mano lo probaré.
Ya digo que esta aplicación era por simple curiosidad y parece que era más complejo de lo que yo esperaba.