Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: viek66 en 01 de Noviembre 2019, 06:05

Título: Java generar cadena binaria tamaño n el usuario introduzca cuantos 1's quiere
Publicado por: viek66 en 01 de Noviembre 2019, 06:05
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?
Título: Re:AYUDA CON UN EJERCICIO
Publicado por: Kabuto 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();
   }

}