1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[java]duvida

Discussão em 'Programação' iniciada por nasic, 6 de Maio de 2007. (Respostas: 9; Visualizações: 756)

  1. nasic

    nasic Power Member

    Boas...epa tou aqui com uma duvida parva...
    Eu quero imprimir uma sequencia deste genero:
    11111000001111100000

    em que o numero de 1's ou 0's é um valor dado.
    Obrigado
     
  2. FASC

    FASC Power Member

    Código:
    int n=10; /* número de uns e zeros */
    int k;
    
    k=2*n;
    
    while( true ){
      for ( int i = 0; i < k; i++ ) {
        if ( i > n )
          /* imprime os zeros */
        else
          /* imprime os uns */
      }
    }
    
    Isto provoca um ciclo infinito, mas dá para criares uma situação de escape. Utilizei apenas um ciclo for para optimizar, mas podiam ser 2 ciclos (um para os uns, outro para os zeros).
    Não compilei, mas deve funcionar.
     
    Última edição: 7 de Maio de 2007
  3. hYpe

    hYpe [email protected] Member

    Não deve compilar porque dentro dos parentisis, o for leva ponto e virgula, fora isso compila.

    De qq modo tiveste bem, porque eu ainda nao consegui perceber o q e' o rapaz quer... : p
     
  4. FASC

    FASC Power Member

    True. Já corrigi.

    O que ele quer (pelo que percebi) é que escreva no ecrã "n" uns e zeros, intercalados.

    Tipo:
    n=2 -> "11001100..."
    n=3 -> "111000111000..."

    And so on...
     
  5. nasic

    nasic Power Member

    ok...
    e se eu quiser que imprima ate um determinado numero?
    por exemplo 10
    Sequencias de 1 e 0 (tal cm fizeste) mas com a condição de aparecerem 10 numeros no ecran, ou seja

    1100110011
    qd o periodo for 2

    nao basta um simples while....
    alguem me ajuda?

    Obg
     
  6. FASC

    FASC Power Member

    Tipo... Mas qual é a dificuldade? Em vez do ciclo infinito, fazes:

    Código:
    int m=10; /* número máximo de números no ecrã */
    int n=10; /* número de uns e zeros */
    int k;
    
    k=2*n;
    m=m%k; /* divisão inteira */
    
    for ( int j = 1; j <= m ; j++ ){
      for ( int i = 0; i < k; i++ ) {
        if ( i > n )
          /* imprime os zeros */
        else
          /* imprime os uns */
      }
    }
    
    Espero não te estar a fazer a papinha toda... Era suposto PENSARES sobre isto.
     
    Última edição: 7 de Maio de 2007
  7. nasic

    nasic Power Member

    Isso nao esta a fazer bem aquilo que eu queria...
    eu queria imprimir, por exemplo, apenas 10 numeros no ecran mas em sequencias

    por exemplo: 1100110011 tem 10 numeros

    Peço desculpa, mas n estou a conseguir!
     
  8. FASC

    FASC Power Member

    Vê lá se tens a linha de código da divisão inteira como está no post. Eu alterei passados uns minutos.

    Isso que estás a fazer é para a escola ou para uso pessoal?
     
  9. nasic

    nasic Power Member

    Sim eu reparei que alteraste...mas mm assim n dá. O que faz é imprimir cada numero m vezes!

    É pessoal claro, estou me a iniciar nesta linguagem.

    obrigado
     
  10. FASC

    FASC Power Member

    Ok, já compilei e já resolvi os problemas:

    Código:
            int m=20; /* número máximo de números no ecrã */
            int n=3; /* número de uns e zeros */
            int k;
            
            k=2*n;
            m=m/k;
            
            for ( int j = 1; j <= m ; j++ ){
                for ( int i = 0; i < k; i++ ) {
                    if ( i >= n ) {
                        /* imprime os zeros */
                        System.out.print("0");
                    } else {
                        /* imprime os uns */
                        System.out.print("1");
                    }
                }
            }
     

Partilhar esta Página