Tenho que fazer o seguinte programa:
"Escreva um programa em C, onde será solicitado um valor numérico de um resistor em ohms
(Ω), o programa deverá imprimir na tela o valor e as cores correspondentes, por exemplo: Se
valor digitado for 1000 Ω, deverá ser impresso na tela, O valor da resistência de 1000 Ω, o qual
tem seu código de cor corresponde às cores: Marrom, Preto e Vermelho.
O programa deverá ficar rodando até que seja digitado o número ZERO (0) para sair, quando
for digitado Zero não deverá ser impresso na tela o valor do resistor ou código de cores.
No fim do programa, deverá ser impresso a quantidade total de resistores digitados e informar
a quantidade de resistores comerciais e não comerciais.
Na execução do código deverá ter mensagens orientativas como o usuário deve proceder.
Os valores de resistência são os valores comerciais, sendo os valores pretendidos para esse
trabalho os múltiplos de:
10, 12, 15, 17, 20, 22, 27, 30, 33, 47, 51, 56, 62, 68, 75, 82, 91.
Para os prefixos de Ω, KΩ, MΩ. Caso seja digitado um valor não comercial deverá ter uma
mensagem informativa e não imprimir o valor do resistor e os código de cores.
Na escrita do programa deverá utilizar funções com passagem parâmetros e retorno, sendo
critério de avaliação a não repetição códigos, por exemplo no exemplo 2 faixa1, faixa2 e mult,
poderão ser alterados para único switch case em uma função."
Eu já tenho o seguinte código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int faixa1, faixa2, mult;
float resistor, div_r,comp;
printf("Digite um valor de resistor comercial: ");
scanf("%f",&resistor);
printf("\nResistor= %.1f ohns\n",resistor);
if(resistor> 1&& resistor<10)
{
faixa1=(int)resistor;
resistor=resistor*10;
div_r=(int)resistor/10;
faixa2=(int)(resistor-(div_r*10));
mult=-1;
}
if(resistor>=10 && resistor<100)
{
faixa1=(int)resistor/10;
div_r=(int)resistor/10;
faixa2=(int)(resistor-(div_r*10));
mult=0;
}
if(resistor>=100 && resistor<1000)
{
resistor=resistor/10;
faixa1=(int)resistor/10;
div_r=(int)resistor/10;
faixa2=(int)(resistor-(div_r*10));
mult=1;
}
if(resistor>=1000 && resistor<10000)
{
resistor=resistor/100;
faixa1=(int)resistor/10;
div_r=(int)resistor/10;
faixa2=(int)(resistor-(div_r*10));
mult=2;
}
printf("F1=%d F2=%d M=%d",faixa1,faixa2,mult);
printf("\nCodigo de cores ");
switch (faixa1)
{
case -1:
printf("Ouro");
break;
case 0:
printf("Preto, ");
break;
case 1:
printf("Marrom, ");
break;
case 2:
printf("Vermelho, ");
break;
case 3:
printf("Laranja, ");
break;
case 4:
printf("Amarelo, ");
break;
case 5:
printf("Verde, ");
break;
case 6:
printf("Azul, ");
break;
case 7:
printf("Violeta, ");
break;
case 8:
printf("Cinza, ");
break;
case 9:
printf("Bramco, ");
break;
}
switch (faixa2)
{
case -1:
printf("Ouro");
break;
case 0:
printf("Preto, ");
break;
case 1:
printf("Marrom, ");
break;
case 2:
printf("Vermelho, ");
break;
case 3:
printf("Laranja, ");
break;
case 4:
printf("Amarelo, ");
break;
case 5:
printf("Verde, ");
break;
case 6:
printf("Azul, ");
break;
case 7:
printf("Violeta, ");
break;
case 8:
printf("Cinza, ");
break;
case 9:
printf("Bramco, ");
break;
}
switch (mult)
{
case -1:
printf("Ouro");
break;
case 0:
printf("Preto");
break;
case 1:
printf("Marrom");
break;
case 2:
printf("Vermelho");
break;
case 3:
printf("Laranja");
break;
case 4:
printf("Amarelo");
break;
case 5:
printf("Verde");
break;
case 6:
printf("Azul");
break;
case 7:
printf("Violeta");
break;
case 8:
printf("Cinza");
break;
case 9:
printf("Bramco");
break;
}
}
E preciso ajustar os valores pra quando for em Kilo e Mega e o programa tem que ficar rodando até digitar o valor 0.