Ver Mensaje Individual
  #9 (permalink)  
Antiguo 24/07/2016, 09:11
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Necesito orientacion con planteamiento de codigo en C

Cita:
Iniciado por aguml Ver Mensaje
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.
Qué raro. He probado todas las combinaciones y siempre me muevo entre 0 y 2.
El código es bastante malo, pero creo que funciona....sí me he dado cuenta de que las variables mayor y menor deben ser float, pero no creo que eso cause un error de segmentación. En fin, dejo aquí la corrección con una impresión de los valores de los indices. Espero que alguien te dé una mejor respuesta...además de la de enrieto (pero él se mueve en otra liga )
Código C++:
Ver original
  1. #include <stdio.h>
  2.     #include <string.h>
  3.     #define NCABLES 3
  4.  
  5.     int main ()
  6.     {
  7.         char cable[NCABLES][25];
  8.         char combinacion [NCABLES][50];
  9.         int i=0,indice_mayor=0,indice_trabajo=0,indice_menor=0,comun;
  10.         float valor[NCABLES];
  11.         float mayor;
  12.         float menor;
  13.  
  14.         for (i=0;i <NCABLES;i++)
  15.         {
  16.             printf ("Introduce el color %d: ",i+1);
  17.             scanf ("%s",cable[i]);
  18.         }
  19.         for (i=0;i<NCABLES;i++)
  20.         {
  21.             sprintf (combinacion[i],"el %s y el %s",cable[i], i<2?cable[i+1]:cable[0]);
  22.             printf ("Introduce la resistencia entre %s: ",combinacion [i]);
  23.             scanf ("%f",&valor[i]);
  24.             if (i==0)
  25.             {
  26.                 mayor=valor[i];
  27.                 menor=valor[i];
  28.             }
  29.             if (i>0)
  30.             {
  31.                 if (valor[i]>mayor)
  32.                 {
  33.                     indice_mayor=i;
  34.                     mayor=valor[i];
  35.                 }
  36.                 if (valor[i]<menor)
  37.                 {
  38.                     indice_menor=i;
  39.                     menor=valor[i];
  40.                 }
  41.             }
  42.         }
  43.         indice_trabajo=0;
  44.         for (i=0;i<NCABLES;i++)
  45.         {
  46.             if (indice_trabajo==indice_menor || indice_trabajo==indice_mayor)
  47.             {
  48.                 indice_trabajo++;
  49.             }
  50.         }
  51.         printf ("Mayor: %d\n",indice_mayor);
  52.         printf ("Menor: %d\n",indice_menor);
  53.         printf ("Trabajo: %d\n",indice_trabajo);
  54.         printf ("El condensador va entre %s\n", combinacion[indice_mayor]);
  55.         printf ("La bobina de arranque esta entre %s\n",combinacion[indice_menor]);
  56.         printf ("La bobina de trabajo esta entre %s\n",combinacion[indice_trabajo]);
  57.  
  58.         for (i=0;i <NCABLES;i++){
  59.             if (strstr (combinacion[indice_mayor],cable [i])==NULL){
  60.                 comun=i;
  61.                 break;
  62.             }
  63.         }
  64.         printf ("El comun es el %s. Conecta el neutro en el\n",cable[comun]);
  65.     }
__________________
Mi calculadora en Qt