Código em JAVA [AJUDA]

Geralt96

Membro
Bom dia! Alguém poderia me ajudar com o código para o problema abaixo? É um exercício sugerido por um professor de um curso de Engenharia. Abaixo está o solicitado, se alguém puder ajudar, ficaria muito grato.

"Em exercícios anteriores, foi criado um algoritmo para converter um código de cores de resistores em valor numérico da resistência. Agora, iremos fazer o inverso. Faça um programa que, ao informar o valor da resistência, retorne o código de cores do resistor.

Obs.: Basta considerar valores de resistência a partir de 10 Ω. Em outras palavras, basta considerar as cores preto, marrom, vermelho, laranja, amarelo, verde, azul, violeta, cinza e branco. Não precisa considerar resistores maiores que 91 MΩ. Em outras palavras, eventualmente não será necessário utilizar os tipos de dados unsigned int ou long int para armazenar os valores dos resistores, já que os valores não serão muito grandes numericamente.

Parte 1 ----> Após as mensagens de boas-vindas e informações, incluindo o nome do autor do programa, o usuário deve entrar no teclado com um valor inteiro entre 10 e 91000000. O programa só pode avançar caso o usuário digite um número inteiro nesta faixa de valores.

Obs.: Não precisa testar se o usuário digitou um número inteiro.

Complemento: ao pressionar enter, deve ser impresso ‘Ω’ após o número digitado.

Parte 2 ----> O computador deve identificar os dois primeiros dígitos e informar se o resistor faz parte da série E-24. (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91)

Obs.: Lembre-se de fazer soluções simples e curtas.

Complemento: se não fizer parte do E-24, perguntar novamente pelo resistor.

Parte 3 ----> Deve ter um método que recebe um número, entre 0 e 9, e retorna uma string com o nome da cor. Esse método deve ser utilizado para obter as 3 cores.

Parte 4 ----> As 3 cores retornadas devem ser armazenadas em um vetor de string. Imprimir na tela as três cores.

Complemento: A chamada do método desenvolvido em (3) deve estar dentro de um laço de repetição.

Parte 5 ----> Pergunte ao usuário a potência do resistor. Retorne para o usuário a máxima tensão que aquele resistor pode ser submetido ( 𝑉=√𝑃.𝑅 ). O cálculo deve ser feito dentro de um novo método.
 
Com o código para cumprir o que foi solicitado na questão... Eu consegui fazer a parte 1, mas ainda não tá o ideal. E as outras tive dificuldade. Com um código elaborado por alguém mais experiente, ao fazer a leitura acabo entendendo a lógica por trás. Serviria de exemplo, entende?

Segue o que consegui fazer:

Java:
import java.util.Scanner;
class Main {
  public static void main(String[] args) {
   System.out.println("Olá, seja bem-vindo! Este programa recebe o valor da resistência e retorna as de cores do resistor, de acordo com o código de cores.");
   System.out.println("Autor: Fulano de tal.");
  Scanner teclado = new Scanner(System.in);
 
  System.out.println("Informe o valor do resistor");
  int res = (teclado.nextInt());

  while (res < 10 || res > 91000000) {
     System.out.println("Número fora da faixa permitida");
    System.out.println("Informe o valor do resistor");
      res = (teclado.nextInt());
  } System.out.println(res+"Ω");
  }
  }
 
Com o código para cumprir o que foi solicitado na questão... Eu consegui fazer a parte 1, mas ainda não tá o ideal. E as outras tive dificuldade. Com um código elaborado por alguém mais experiente, ao fazer a leitura acabo entendendo a lógica por trás. Serviria de exemplo, entende?

Segue o que consegui fazer:

Java:
import java.util.Scanner;
class Main {
  public static void main(String[] args) {
   System.out.println("Olá, seja bem-vindo! Este programa recebe o valor da resistência e retorna as de cores do resistor, de acordo com o código de cores.");
   System.out.println("Autor: Fulano de tal.");
  Scanner teclado = new Scanner(System.in);
 
  System.out.println("Informe o valor do resistor");
  int res = (teclado.nextInt());

  while (res < 10 || res > 91000000) {
     System.out.println("Número fora da faixa permitida");
    System.out.println("Informe o valor do resistor");
      res = (teclado.nextInt());
  } System.out.println(res+"Ω");
  }
  }

Parece fazer o que pretendes :)

Agora tens de fazer uma verificação relativa aos dois primeiros digitos. Será fixe usares isso como condição no while...
 
E-24. (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91).

Para os dois digitos serem do tipo E-24 tem que ser um dos valores acima certo? Se sim agora só tens que fazer uma validação dos teus dois digitos com os valores todos que tens aí.

Como guardas esses valores (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91). ?
 
E-24. (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91).

Para os dois digitos serem do tipo E-24 tem que ser um dos valores acima certo? Se sim agora só tens que fazer uma validação dos teus dois digitos com os valores todos que tens aí.

Como guardas esses valores (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91). ?
Eu ainda não consegui entender bem, e infelizmente preciso do programa até as 18h. O professor de Eletrônica quer utilizar esse programinha na aula hoje.
 
"até as 18h O professor de Eletrônica quer utilizar esse programinha na aula hoje." não entendi, mas,

1- Se já aprendeste sobre lista, arrays etc. Como menciona do enunciado "vectores". Esse comboio devia estar dentro de um.
2- Os teus dois valores são char chartAt0 e chartAt1. Tens que os converter aos dois em números inteiros para depois conseguires validar com a tua listaE24.
 
"até as 18h O professor de Eletrônica quer utilizar esse programinha na aula hoje." não entendi, mas,

1- Se já aprendeste sobre lista, arrays etc. Como menciona do enunciado "vectores". Esse comboio devia estar dentro de um.
2- Os teus dois valores são char chartAt0 e chartAt1. Tens que os converter aos dois em números inteiros para depois conseguires validar com a tua listaE24.
Esse exercício foi sugerido pelo meu professor de Eletrônica, nos deu um prazo pra desenvolver e utilizarmos na aula hoje (de eletrônica). Obrigado pela ajuda amigo, vou tentar resolver o que der tempo.
 
caso ajude,(isto é em c#)


using System;
using System.Collections.Generic;

namespace Quartos
{
class Program
{
static void Main(string[] args)
{
int res = 0;
bool pos = false;
List<int> listares = new List<int> () { 10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91 }; //lista de valores

Console.WriteLine("Seja muito bem vindo");
Console.WriteLine("O programa transforma o valor da resistência em cores");
Console.WriteLine("Autor: XPTO");


inicio:
Console.WriteLine("\n");
while (res < 10 || res > 91000000) //enquanto nao estiver dentro destes valores
{
Console.Clear();

Console.WriteLine("Indique o valor da resistência");
res = int.Parse(Console.ReadLine()); //valor que o usuario digita
}

string resistor = res.ToString() + "Ω";

int posE24 = int.Parse(resistor.Substring(0, 2)); //dois primeiros caracteres
foreach (int l in listares)
{
if (l == posE24) //vereficar se existe dentro da lista
{
pos = true;
}
}
if (pos == false) //caso de falso a vereficação volta para o inicio
{
res = 0;
goto inicio;
}
Console.WriteLine(posE24); //imprime a posE24 so para vereficares que esta correto
Console.ReadKey();
}
}
}
 
Eu não quero ser mete-nojo, nas já repararam que o TO apenas quer solução para apresentar ao prof e assim safar-se na cadeira/disciplina que está a frequentar?

O que vai acontecer - na melhor das hipóteses - é ele chumbar, repetir e aprender qualquer coisa. Na pior pode ser vosso colega e apesar de ter conhecimentos (na teoria, claro) não vai saber nada. Nem de JAVA nem de algoritmia.

Ajudar sim, mas fazer por outro, não.
 
Eu não quero ser mete-nojo, nas já repararam que o TO apenas quer solução para apresentar ao prof e assim safar-se na cadeira/disciplina que está a frequentar?

O que vai acontecer - na melhor das hipóteses - é ele chumbar, repetir e aprender qualquer coisa. Na pior pode ser vosso colega e apesar de ter conhecimentos (na teoria, claro) não vai saber nada. Nem de JAVA nem de algoritmia.

Ajudar sim, mas fazer por outro, não.
Agree!

Dai a minha abordagem e a do Seeba ter sido mais numa de guiar o raciocinio!
 
Back
Topo