Autor Tema: Java generar cadena binaria tamaño n el usuario introduzca cuantos 1's quiere  (Leído 3349 veces)

viek66

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, busco ayuda, necesito hacer un programa en java en el que  necesito generar una cadena binaria de tamaño n donde el usuario introduzca cuantos 1's quiere visualizar en la cadena  :-\

¿Alguien me podría ayudar?
« Última modificación: 24 de Octubre 2020, 21:04 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:AYUDA CON UN EJERCICIO
« Respuesta #1 en: 02 de Noviembre 2019, 22:57 »
Así pensando rápido, se me ocurre que puedes crear un array de int con el tamaño n que te diga el usuario.
Ese array, por defecto, está lleno de 0.

Pues le preguntas cuántos 1's quiere el usuario mostrar y a continuación lo que haces es meter en ese array tantos 1's como haya indicado el usuario.

Para que sea más interesante, puedes colocar esos 1 en posiciones al azar dentro del array.
Puedes generar int al azar, ente 0 y n (el tamaño del array)
Con cada int generado, lo usas como puntero de posición para el array y preguntas si en esa posición hay un 0 o un 1.
Si hay un 0, metes un 1 y lo descuentas de la cantidad solicitada por el usuario.
Si no hay un 0, es decir, ya hay un 1 de una inserción anterior, pues no haces nada.

Esto lo haces dentro de un bucle hasta que la cantidad de 1's solicitada por el usuario haya llegado a 0.

Luego muestras en pantalla el contenido del array para mostrar la cadena binaria.

El resultado en pantalla sería algo así:

Citar
Indica longitud de la cadena binaria: 10
Indica cuantos 1's ha de tener la cadena: 6

Cadena generada:
1101110100

Aquí te dejo el código que he escrito yo. Lo ideal es que intentes hacerlo tú y si te atascas nos pidas ayuda para completarlo.

Pero si quieres ver el código hecho por mí, es decisión tuya.

Citar
import java.util.Scanner;

public class CadenaBin {

   public static void main(String[] args) {
      
      Scanner teclado = new Scanner(System.in);
      System.out.print("Indica longitud de la cadena binaria: ");
      int longitud = teclado.nextInt();
      System.out.print("Indica cuantos 1's ha de tener la cadena: ");
      int nUnos = teclado.nextInt();
      
      int[] cadena = new int[longitud];
      //La cadena ahora esta llena de ceros, meteremos 1's al azar
      while (nUnos > 0) {
         int pos = (int)(Math.random() * longitud);
         if (cadena[pos] == 0) {
            //Si hay un 0, podemos meter un 1
            cadena[pos] = 1;
            nUnos--;
         }
      }
      //Ya hemos metidos tantos 1 como pide el usuario, mostramos cadena
      System.out.println("\nCadena generada:");
      for (int valor : cadena)
         System.out.print(valor);
      
      teclado.close();
   }

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".