Sabe algum desafio, então desafie!

15 respostas
X

Saber programar não é só saber a sintaxe da linguagem, isso é um fato!
Uma coisa que reparei no fórum que varias vezes as pessoas se engancha na lógica… Quem nunca se enganchou na lógica né?!
Mais a única forma de melhorar a lógica é praticando… concorda?

Então criei esse tópico com intenção de ajudar as pessoas a trabalhar com lógica, fazendo sua cabeça pensar… creio que isso poderar ajudar bastante futuramente…
Mais para isso dá certo todos tem que participar, postando desafios para para as pessoas que frequentar o tópico fazer… mais claro tem que está disposto a acompanhar os tópicos e ajudando nas duvidas…
Como isso acho que todos vão ganhar um pouco de conhecimento a mais… Tanto em lógica quando na sintaxe…

Espero que gostem da ideia e participem… =D


Aqui vai meu desafio:
O programa vai " ler " o numero 1 e 2.

Quando for digitado o numero 1 o programa terá que:
Ler um nº binário(usar String para ler o nº) e escrever seu valor em decimal.
EX: “1110” -> 14

Quando for digitado o numero 2 o programa terá que:
Ler um nº decimal e escrever seu valor em binário(usar String para escrever o nº)
EX: 14 -> “1110”

15 Respostas

douglaskd

a

D
import javax.swing.JOptionPane;

public class Conversor {

    public static void main(String[] args) {
        int opc = 1;
        while (opc != 0) {
            try {
                String aux;
                opc = Integer.parseInt(JOptionPane.showInputDialog(null, "Entre com a opção:\n1 - Binário para decimal\n2 - Decimal para binário\n0 - para sair"));
                switch (opc) {
                    case 1:
                        aux = JOptionPane.showInputDialog(null, "Entre com o binário");
                        if (aux.matches("^[0-1]*$")) {
                            JOptionPane.showMessageDialog(null, Integer.parseInt(aux, 2));
                        } else {
                            JOptionPane.showMessageDialog(null, "Entrada inválida");
                        }
                        break;
                    case 2:
                        int aux2 = Integer.parseInt(JOptionPane.showInputDialog(null, "Entre com o decimal"));
                        JOptionPane.showMessageDialog(null, Integer.toBinaryString(aux2));
                    default:
                        break;
                }
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        }
    }
}
ViniGodoy

Isso não é meio trivial demais para um desafio?

Sugestão: http://br.spoj.pl/problems/seletivas/

X

ViniGodoy:
Isso não é meio trivial demais para um desafio?

Sugestão: http://br.spoj.pl/problems/seletivas/

Sim concordo… Mesmo sendo assim 1 respondeu… E ninguém colocou novos desafios… :confused:
Vlw pela sugestão… :smiley:

Vingdel
Eu fiz assim, puxei mais pela lógica e conhecimento de como é a conversão:
import java.util.Scanner;

public class Bindec { 
	static Scanner entrada = new Scanner(System.in);

	public static void main (String[] args) {

		System.out.print("1: bin -> dec\n2: dec -> bin\n\nOpcao: ");
		int option = entrada.nextInt();
		switch(option){
			case(1):
				System.out.print("Digite um numero binario: ");
				System.out.println(bd(entrada.next()));
				break;
			case(2):
				System.out.print("Digite um numero decimal: ");
				System.out.println(db(entrada.nextInt()));
				break;
		}
	}
	public static int bd(String bin){
		int dec = 0, aux;
		for(int i = 0; i < bin.length(); i++){
			aux = Integer.parseInt(bin.substring(i, i+1));
			if(aux == 1)
				dec += Math.pow(2, bin.length()-1-i);
		}
		return dec;
	}

	public static String db(int dec){
		String bin = "";
		int resto;
		do{
			resto = dec % 2;
			dec = dec / 2;
			bin = resto+bin;
		}while(dec != 0);
		return bin;
	}
}
Mas nunca mais faço assim depois que vi no código do danilovicente que o java faz isso por mim... hehehe

Abraço!

rafael.luc

Aqui um desafio, um objeto chamado “valor” deve receber tanto dados boolean, int e String e montar o final de uma ArrayList.

Ficaria assim:

id(int) - função(int) - valor(boolean, int ou String)

Quem define o tipo de dado e a função, função 1 para boolean, função 2 para int e função 3 para String. Não vale atribuir 3 nomes diferentes para “valor” como valor1, valor2 e valor3, deve-se chamar apenas valor.

Boa sorte :smiley:

D
Vingdel:
Eu fiz assim, puxei mais pela lógica e conhecimento de como é a conversão:
import java.util.Scanner;

public class Bindec { 
	static Scanner entrada = new Scanner(System.in);

	public static void main (String[] args) {

		System.out.print("1: bin -> dec\n2: dec -> bin\n\nOpcao: ");
		int option = entrada.nextInt();
		switch(option){
			case(1):
				System.out.print("Digite um numero binario: ");
				System.out.println(bd(entrada.next()));
				break;
			case(2):
				System.out.print("Digite um numero decimal: ");
				System.out.println(db(entrada.nextInt()));
				break;
		}
	}
	public static int bd(String bin){
		int dec = 0, aux;
		for(int i = 0; i < bin.length(); i++){
			aux = Integer.parseInt(bin.substring(i, i+1));
			if(aux == 1)
				dec += Math.pow(2, bin.length()-1-i);
		}
		return dec;
	}

	public static String db(int dec){
		String bin = "";
		int resto;
		do{
			resto = dec % 2;
			dec = dec / 2;
			bin = resto+bin;
		}while(dec != 0);
		return bin;
	}
}
Mas nunca mais faço assim depois que vi no código do danilovicente que o java faz isso por mim... hehehe

Abraço!

HAHA o java nos acostuma muito mal né hsahush lembro quando estava começando fiz isso em C.

D

rafael.luc:
Aqui um desafio, um objeto chamado “valor” deve receber tanto dados boolean, int e String e montar o final de uma ArrayList.

Ficaria assim:

id(int) - função(int) - valor(boolean, int ou String)

Quem define o tipo de dado e a função, função 1 para boolean, função 2 para int e função 3 para String. Não vale atribuir 3 nomes diferentes para “valor” como valor1, valor2 e valor3, deve-se chamar apenas valor.

Boa sorte :smiley:

Você poderia ser um pouco mais claro no seu desafio pois ficou um pouco confuso.

Lucas_Abbatepaolo

ViniGodoy:
Isso não é meio trivial demais para um desafio?

Sugestão: http://br.spoj.pl/problems/seletivas/

Muito interessante…

rafael.luc

danilovicente:
rafael.luc:
Aqui um desafio, um objeto chamado “valor” deve receber tanto dados boolean, int e String e montar o final de uma ArrayList.

Ficaria assim:

id(int) - função(int) - valor(boolean, int ou String)

Quem define o tipo de dado e a função, função 1 para boolean, função 2 para int e função 3 para String. Não vale atribuir 3 nomes diferentes para “valor” como valor1, valor2 e valor3, deve-se chamar apenas valor.

Boa sorte :smiley:

Você poderia ser um pouco mais claro no seu desafio pois ficou um pouco confuso.

O id seria o índice, a função define de que tipo sera o valor, os dados ficariam assim:

id -função - valor
1 1 true
2 1 false
3 2 123
4 2 500
5 3 “carlos”
6 3 “roberto”

Vingdel

rafael.luc:
Aqui um desafio, um objeto chamado “valor” deve receber tanto dados boolean, int e String e montar o final de uma ArrayList.

Ficaria assim:

id(int) - função(int) - valor(boolean, int ou String)

Quem define o tipo de dado e a função, função 1 para boolean, função 2 para int e função 3 para String. Não vale atribuir 3 nomes diferentes para “valor” como valor1, valor2 e valor3, deve-se chamar apenas valor.

Boa sorte :smiley:

rafael.luc, boa tarde!

Comédia você, transformou sua dificuldade em um desafio para o pessoal resolver… HAHAHAHA
Dá uma olhada no seu tópico lá que dei uma resposta, acho que vai te ajudar.

Abraço!

rafael.luc
Vingdel:

rafael.luc, boa tarde!

Comédia você, transformou sua dificuldade em um desafio para o pessoal resolver... HAHAHAHA
Dá uma olhada no seu tópico lá que dei uma resposta, acho que vai te ajudar.

Abraço!

Não, embora seja no programa que estou adicionando um script, foi de la que eu tirei pois não sei como foi feito.

De uma olhada:

@Override
	public void setPointValue(DataPointRT dataPoint, PointValueTime valueTime,
			SetPointSource source) {
		String tag = ((OPCPointLocatorVO) dataPoint.getVO().getPointLocator())
				.getTag();
		Object value = null;
		if (dataPoint.getDataTypeId() == DataTypes.NUMERIC)
			value = valueTime.getDoubleValue();
		else if (dataPoint.getDataTypeId() == DataTypes.BINARY)
			value = valueTime.getBooleanValue();
		else if (dataPoint.getDataTypeId() == DataTypes.MULTISTATE)
			value = valueTime.getIntegerValue();
		else
			value = valueTime.getStringValue();

		try {
			opcMaster.write(tag, value);
		} catch (Exception e) {
			raiseEvent(
					POINT_WRITE_EXCEPTION_EVENT,
					System.currentTimeMillis(),
					true,
					new LocalizableMessage("event.exception2", vo.getName(), e
							.getMessage()));
			e.printStackTrace();
		}
	}
Vingdel

rafael.luc, tu já viu a explicação que eu dei lá no seu outro tópico?

rafael.luc

Sim ja postei la :slight_smile:

douglaskd

um desafio:

o usuário digita: 5+(4-8)/(57)(5+5+5) ou qualquer outra expressão usando apenas ( + - / * ) e parenteses

e aparece o resultado em baixo…bem simples…

não sei…talvez use arvore binária, precedencia de operadores, regex…só nao pode usar nenhuma API, tudo na unha…

Criado 5 de janeiro de 2012
Ultima resposta 6 de jan. de 2012
Respostas 15
Participantes 7