Jump to content

Identificação e classificação de produto


LegaliZe
 Share

Recommended Posts

Escreva um programa em C que identifique e classifiqueum produto num universo de 3 produtos possiveis, medindo a concentração de 5 elementos constituintes, A, B, C de acordo com as concentrações dadas na seguinte tabela:

___________________

|_______ |_A_|_B_|_C_|

|Produto1| 0.1| 0.5 |0.6 |

|Produto2| 0.1| 0.3 |0.7 |

|Produto3| 0.2| 0.5 |0.7 |

|Produto4| 0.2| 0.3 |0.1 |

|Produto5| 0.2| 0.5 |0.6 |

Se as concentrações dados pelo utilizador não corresponderema nenhum produto da tabela o classificador deverá escrever "Produto Desconhecido", caso contrario deverá escrever o nome do Produto.

agora vou por o ke fiz até agora e gostava de saber o porque de me dar sempre Produto Desconehcido >.<

#include <stdio.h>
int main()
{
float a,b,c;
printf("Introduza o valor de A\n");
scanf("%f",&a);
printf("Introduza o valor de B\n");
scanf("%f",&b);
printf("Introduza o valor de C\n");
scanf("%f",&c);
if ((a==0.1) && (b==0.5) && (c==0.6))
  printf("Produto1\n");
else   
  if ((a==0.1) && (b==0.3) && (c==0.7))
     printf("Produto2\n");
  else   
     if ((a==0.2) && (b==0.5) && (c==0.7))
        printf("Produto3\n");
     else   
        if ((a==0.2) && (b==0.3) && (c==0.1))
           printf("Produto4");
        else
           if ((a==0.2) && (b==0.5) && (c==0.6))
              printf("Produto5\n");
           else
               printf("Produto Desconhecido\n");
}
Link to comment
Share on other sites

O que está a ocorrer nesse caso é problemas com a precisão de floats.

Por vezes, quando dás o valor por exemplo, 0.6 a um float, ele pode ficar com o valor 0.60000000000000001.

Não sei explicar porque isto acontece (penso que devem ser bits que estão a vaguear na memória xD).

Assim, ao comparares com 0.6, ele diz que é diferente.

Uma forma de resolveres isto é, por exemplo:

if((int) (a*10) == 1 && (int) (b*10) == 5 && (int) (c*10) == 6) printf("Produto1\n");

E fazer isto para os restantes produtos.

(substitui o 10 de acordo com a precisão necessária)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.