Autor Tema: AYUDA CON UN EJERCICIO  (Leído 202 veces)

viek66

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
AYUDA CON UN EJERCICIO
« : 01 de Noviembre 2019, 06:05 »
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?

Kabuto

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 257
    • Ver Perfil
Re:AYUDA CON UN EJERCICIO
« Respuesta #1 : 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();
   }

}

 

Esto es un laboratorio de ideas...
Aprender a programar

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".