Ir ao conteúdo
  • Cadastre-se

C Calculadora de Resistor em C


joana fv

Posts recomendados

Procedimento Resistor de 4 faixas:
- Identifique a cor do primeiro anel e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o primeiro dígito do valor do resistor.
- Identifique a cor do segundo anel e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o segundo dígito do valor do resistor.
- Identifique a cor do terceiro anel que determina o valor para multiplicar o número
formado pelos itens 1 e 2. Efetuar a operação e obter o valor da resistência.
- Identificar a cor do quarto anel e verificar a porcentagem de tolerância do valor nominal
da resistência do resistor.
Exemplo:
Caso as cores sejam: VERMELHO, AZUL, MARROM E PRATEADO, teremos:
260W +/- 10%
O mesmo vale para os Resistores de 5 faixas. confira:
- Identifique a cor do primeiro anel e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o primeiro dígito do valor do resistor.
- Identifique a cor do segundo anel e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o segundo dígito do valor do resistor.
- Identifique a cor do terceiro anel e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o terceiro dígito do valor do resistor.
- Identifique a cor do terceiro anel que determina o valor para multiplicar o número
formado pelos itens 1, 2 e 3. Efetuar a operação e obter o valor da resistência.
- Identificar a cor do quinto anel e verificar a porcentagem de tolerância do valor nominal
da resistência do resistor.
Exemplo sobre o valor de tolerância:
Caso um resistor tenha 270Ω com +/-5% de tolerância (ultimo anel dourado), o valor
exato da resistência estará entre 256,5W e 283,5W.

o programa tem que ficar assim

image.png.a89b0c9cf36e3db06a11b6a105c8e116.png

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Comece criado uma estrutura para representar um resistor:

typedef struct {
    int codigo;
    int valor;
} Resistor;

Depois crie um vetor com todos os resistores que você possa usar:

Resistor resistores[20];

Inicialize cada um com seus respectivos códigos e valores. Depois interaja com o usuário para pegar as informações. Conforme o usuário vai escolhendo o resistor, você vai acumulando o valor dele, depois é só mostrar.

 

Tenta fazer e poste o código, para nós ajudarmos onde for possível, pois não podemos dar a resposta pronta.

  • Curtir 3
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@joana fv image.png.809a1af01fa486e0e6d1462fd29586d7.png

Fiz algo semelhante seguindo a tabela acima, e consegui meio que usar uma relação:

resultado = ((((10*n1)+n2))*(pow(10,n3)));

Onde n1 é a faixa 1, n2 é a faixa 2 e n3 é a faixa 3, sendo que esta última indica qual é o multiplicador, por isso usei a função pow().

Porém, eu considerei as seguinte opções pra cada faixa:

Faixa 1:

[0] - preto, [1] - marrom, [2] - vermelho, [3] - laranja, [4] - amarelo, [5] - verde, [6] - azul, [7] - violeta, [8] - cinza, [9] - branco.

Faixa 2:

[0] - preto, [1] - marrom, [2] - vermelho, [3] - laranja, [4] - amarelo, [5] - verde, [6] - azul, [7] - violeta, [8] - cinza, [9] - branco.

Faixa 3:

[0] - preto, [1] - marrom, [2] - vermelho, [3] - laranja, [4] - amarelo, [5] - verde, [6] - azul, [7] - ouro, [8] - prata.

Mas adicionalmente, eu coloquei essas condições depois de ler o número inserido para a faixa 3:

if(n3 == 7){
    n3 = -1;
} else if(n3 == 8){
    n3 = -2;
}

Daí você já vai ter o valor de resistência, e para a tolerância, eu considerei as seguinte opções:

[0] - prata, [1] - marrom, [2] - vermelho, [3] - ouro, [4] - nenhuma.

E mais outras condições:

if(n4 == 0){
    n4 = 10;
} else if(n4 == 3){
    n4 = 5;
} else if(n4 == 4){
    n4 = 20;
}

Daí, a partir disso, eu só avaliei o resultado:

if(resultado < 1000){
    printf ("\n%.3lf ohms +/- %.0lf%%\n", resultado, n4);
} else if(resultado >= 1000 && resultado < 1000000){
    resultado = resultado/1000;
    printf ("\n%.3lf Kohms +/- %.0lf%%\n", resultado, n4);
} else if(resultado >= 1000000){
    resultado = resultado/1000000;
    printf ("\n%.3lf Mohms +/- %.0lf%%\n", resultado, n4);
}
  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

9 horas atrás, joana fv disse:

o programa tem que ficar assim

 

Seria legal se o programa ficasse um pouco melhor que esse aí:
 

image.png.e1a6d7882156afc0b9891181ca31e4be.png

 

faixas não "possuem o resistor". Sério? O resistor é que possui faixas, popularmente conhecidas como anéis. Coloridos. Quatro ou cinco anéis nesse exemplo. 2 ou 3 cores para resistência. O último anel é a tolerância, o penúltimo um multiplicador. Só isso. Arrume o erro da redação do enunciado.

 

E essa calculadora é incrivelmente chata...

 

Só tem duas opções, 4 ou 5 anéis. Então perguntar pro usuário é um pouco irritante.


Agora perguntar depois as cores uma a uma é o pior...

No seu exemplo pode aceitar
 

1 5 2 11

 

Dá pra imaginar que o número de valores é o número de anéis, os números são códigos de cores. Pode até aceitar as letras certo? Uma ou duas letras identificam a cor sem ambiguidade, usando S e G para prata e ouro :) pra não ter que usar 3 letras no preto. E coloque a legenda das letras junto aos números na tela. É chato ficar traduzindo cor para número com o teclado bem na frente. Podia aceitar
 

MA VD VE S

 

Ou mesmo 
 

MA VD VE PRA

 

em caso de achar silver e gold pouco elegantes ;) (o resistor do exemplo tem anéis nessa ordem, Marrom Verde Vermelho e Prateado...

E então leia uma linha por vez e dê a resposta de uma vez para não enfurecer o infeliz que vai usar sua calculadora e só quer um número.


E mostrar logo 
 

        Valor da resistência: 1500 Ohms +- 10%

 

Bem melhor que fazer o infeliz responder a nada mais nada menos que 5 ou 6 prompts. Toda vez. 
 

E se a linha não estiver completa apenas leia outra. Resista à tentação de dizer coisas como o clássico: "cor inválida" Tente Novamente!
 

9 horas atrás, AdrianoSiqueira disse:

Comece criado uma estrutura para representar um resistor


Provavelmente é um exagero, Adriano: bastam vetores de 12 posições com os valores de resistência, multiplicador e tolerância onde cada posição é o valor correspondente à cor que tem esse código. Algo assim
 

    const int    resistencia[12] = { ... };
    const double multiplicador[12] = { ... };
    const double tolerancia[12] = { ... };

 

com os valores constantes preenchidos.
 

9 horas atrás, AdrianoSiqueira disse:

Depois crie um vetor com todos os resistores que você possa usar

 

Também não precisa disso: a calculadora não tem memória: apenas mostra um valor por vez a partir das cores dos anéis: basta uma variável double ou float com o resultado da conta e outra com a resistência.

 

1/x

 

Uma calculadora mais legal faria também o inverso: ler um valor do teclado e mostrar os valores existentes mais próximos desse valor, e aí mostrar as cores esperadas, sem as tolerâncias.

 

O programa é só uma continha final e assim ao menos ficaria mais dinâmico. Meu palpite.

 

 

 

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • mês depois...

@AdrianoSiqueira

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int F;


    printf("Quantas faixas possuem o resistor(4 ou 5)? ",F);
    scanf("%c",&F);

    switch(F)
    {
         case '4':
             {  int pf,
                    sf,
                    tf,
                    qf;


                printf("****************************Codigo de Cores****************************\nPreto     -  0\nMarrom    -  1\nVermelho  -  2\nLaranja   -  3\nAmarelo   -  4\nVerde     -  5\nAzul      -  6\nVioleta   -  7\nCinza     -  8\nBranco    -  9\nDourado   -  10\nPrateado  -  11");

                printf("\nDigite o codigo da cor da primeira faixa = ");
                scanf("%d",&pf);

                printf("\nDigite o codigo da cor da segunda faixa = ");
                scanf("%d",&sf);

                printf("\nDigite o codigo da cor da terceira(multiplicadora) faixa = ");
                scanf("%d",&tf);

                printf("\nDigite o codigo da cor da quarta(tolerancia) faixa = ");
                scanf("%d",&qf);

               
             break;

         case '5':
            {   int pf,
                    sf,
                    tf,
                    qf,
                    q5f;

                printf("****************************Codigo de Cores****************************\nPreto     -  0\nMarrom    -  1\nVermelho  -  2\nLaranja   -  3\nAmarelo   -  4\nVerde     -  5\nAzul      -  6\nVioleta   -  7\nCinza     -  8\nBranco    -  9\nDourado   -  10\nPrateado  -  11");

                printf("\nDigite o codigo da cor da primeira faixa = ");
                scanf("%d",&pf);

                printf("\nDigite o codigo da cor da segunda faixa = ");
                scanf("%d",&sf);

                printf("\nDigite o codigo da cor da terceira faixa = ");
                scanf("%d",&tf);

                printf("\nDigite o codigo da cor da quarta(multiplicadora) faixa = ");
                scanf("%d",&qf);

                printf("\nDigite o codigo da cor da quinta(tolerancia) faixa = ");
                scanf("%d",&q5f);

            }
            break;

         default:
            printf("\nMensagem 1:Quantidade de faixas invalidas");
            printf("\nMensagem 2:O valor da resistencia nao pode ser calculado");


    }

printf("\n\nObrigado por usar a calculadora!");
printf("\n***Programa finalizado***");


   return 0;

}
}

 

 

 

 

Consegui fazer até esta parte porém depois travo totalmente, não faço ideia de como utilizar o valor dado pelo usuário e mudar o mesmo para poder fazer o calculo do valor do resistor

Teria alguma ideia?

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

alguém ME AJUDA , A TOLERANCIA TA  NÃO TA BATENDO COM A TOLERANCIA DA TABELA

#include <math.h>
#include <stdio.h>

int
main ()
{
  int qtd;
  float  n1, n2, n3, n4,resultado;

  printf
    ("*******************************************************************\n");
  printf
    ("*********************calculadora de resistores*********************\n");
  printf
    ("*******************************************************************\n");

  printf ("Quantas faixas possuem o resistor (4 - 5) ? ");
  scanf ("%d", &qtd);
  if (qtd = 4)
    {
      printf ("***************codigo de cores*************\n");

      printf ("preto      -      0                       *\n");
      printf ("marrom     -      1                       *\n");
      printf ("vermelho   -      2                       *\n");
      printf ("laranja    -      3                       *\n");
      printf ("Amarelo    -      4                       *\n");
      printf ("verde      -      5                       *\n");
      printf ("Azul       -      6                       *\n");
      printf ("Violeta    -      7                       *\n");
      printf ("cinza      -      8                       *\n");
      printf ("Branco     -      9                       *\n");
      printf ("Dourado    -      10                      *\n");
      printf ("Prateado   -      11                      *\n");
      printf ("*******************************************\n");

      printf ("Digite o codigo refente a cor da primeira faixa: ");
      scanf ("%f", &n1);
      printf ("Digite o codigo refente a cor da segunda  faixa: ");
      scanf ("%f", &n2);
      printf("Digite o codigo refente a cor da terceira faixa (multiplicadora): ");
      scanf ("%f", &n3);
      printf ("Digite o codigo refente a cor da quarta faixa (tolerancia): ");
      scanf ("%f", &n4);

      resultado = ((((10 * n1) + n2)) * (pow (10, n3)));

      if (n3 == 7)
    {
      n3 = -1;
    }
      else if (n3 == 😎
    {
      n3 = -2;
    }
   

      if (n4 ==0)
    {
      n4 = 10;
    }
      else if (n4 == 3)
    {
      n4 = 5;
    }
      else if (n4 == 4)
    {
      n4 = 20;
    }
    

      if (resultado < 1000)
    {
      printf ("\n%.3f ohms +/- %.0f%%\n", resultado, n4);
    }
      else if (resultado >= 1000 && resultado < 1000000)
    {
      resultado = resultado / 1000;
      printf ("\n%.3f ohms +/- %.0f%%\n", resultado, n4);
    }
      else if (resultado >= 1000000)
    {
      resultado = resultado / 1000000;
      printf ("\n%.3f Mohms +/- %.0f%%\n", resultado, n4);
    }

    }


  return 0;
}
 

poderia

Link para o comentário
Compartilhar em outros sites

Use o botão code como explicado aqui no primeiro post do forum. 

 

Veja a diferença:

 

#include <math.h>
#include <stdio.h>

int
main ()
{
  int qtd;
  float  n1, n2, n3, n4,resultado;

  printf
    ("*******************************************************************\n");
  printf
    ("*********************calculadora de resistores*********************\n");
  printf
    ("*******************************************************************\n");

  printf ("Quantas faixas possuem o resistor (4 - 5) ? ");
  scanf ("%d", &qtd);
  if (qtd = 4)
    {
      printf ("***************codigo de cores*************\n");

      printf ("preto      -      0                       *\n");
      printf ("marrom     -      1                       *\n");
      printf ("vermelho   -      2                       *\n");
      printf ("laranja    -      3                       *\n");
      printf ("Amarelo    -      4                       *\n");
      printf ("verde      -      5                       *\n");
      printf ("Azul       -      6                       *\n");
      printf ("Violeta    -      7                       *\n");
      printf ("cinza      -      8                       *\n");
      printf ("Branco     -      9                       *\n");
      printf ("Dourado    -      10                      *\n");
      printf ("Prateado   -      11                      *\n");
      printf ("*******************************************\n");

      printf ("Digite o codigo refente a cor da primeira faixa: ");
      scanf ("%f", &n1);
      printf ("Digite o codigo refente a cor da segunda  faixa: ");
      scanf ("%f", &n2);
      printf("Digite o codigo refente a cor da terceira faixa (multiplicadora): ");
      scanf ("%f", &n3);
      printf ("Digite o codigo refente a cor da quarta faixa (tolerancia): ");
      scanf ("%f", &n4);

      resultado = ((((10 * n1) + n2)) * (pow (10, n3)));

      if (n3 == 7)
    {
      n3 = -1;
    }
      else if (n3 == 😎
    {
      n3 = -2;
    }
   

      if (n4 ==0)
    {
      n4 = 10;
    }
      else if (n4 == 3)
    {
      n4 = 5;
    }
      else if (n4 == 4)
    {
      n4 = 20;
    }
    

      if (resultado < 1000)
    {
      printf ("\n%.3f ohms +/- %.0f%%\n", resultado, n4);
    }
      else if (resultado >= 1000 && resultado < 1000000)
    {
      resultado = resultado / 1000;
      printf ("\n%.3f ohms +/- %.0f%%\n", resultado, n4);
    }
      else if (resultado >= 1000000)
    {
      resultado = resultado / 1000000;
      printf ("\n%.3f Mohms +/- %.0f%%\n", resultado, n4);
    }

    }


  return 0;
}

 

Leu o exemplo que eu deixei,

 

@Natan Rosário Freitas?

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!