Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Chi mi aiuta a capire...

    Perche' non mi va questo esercizio

    /* dato numeri casuali interi da 1 a 10 contenuti in un array di 100 posizioni ,
    visualizzare mediante istogramma (usando desgli *)
    il numero totale dei numeri usciti,
    es
    1: ********
    2:***************
    ..
    10:***********
    */

    public class Esercizio1
    {
    public static void main(String[] F4nt4si4)
    {
    final int cost=100;
    int i=0;
    int casuali[]= new int[cost];//1


    while (i<cost)
    { casuali[i]=(int) (1+Math.random()*10); //2

    i++;
    }


    i=1;
    String conter[]= new String[11]; //3
    while (i<11)
    { conter[i]="";
    i++;
    }
    boolean sentinella=true;

    int m=0;

    while ( m<cost)
    {
    i=1;

    do{
    if (i==casuali[m])
    {conter[i]+="*"; //4
    sentinella=false;}

    i++;
    }while(i<11 && sentinella );
    m++;

    }

    i=1;
    for (;i<11; i++)
    System.out.print(i+": "+conter[i]+"\n"); // 5









    }
    }


    Commenti:
    1//alloco 100 posizioni
    2//inizializzo ogni indice con una volore
    casuale che va da 1 a 10
    3//alloco un array di tipo stringa lo inizializzo e poi faccio corrispondere ogni inidice(da 1 a 10)
    con il conteggo degli asterischi dei valori casuali dell'array
    casuali.
    4//praticamente se all'indice i
    corrisponde il valore della
    posizione m (array casuali) concateno un asterisco all'array conter con indice i
    5// dovrebbe stampare per ogni indice
    i corrispettivi * memorizzati in precendeza, ma non mi funziona

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    codice:
    public class Esercizio1 { 
      public static void main(String[] args) { 
        final int cost=100; 
        int i=0; 
        int casuali[]= new int[cost]; 
    
        while (i<cost) { 
          casuali[i]=(int) (1+Math.random()*10);
    
          i++; 
        } 
    
        i=0; 
        String conter[]= new String[11]; 
        
        while (i<11) { 
          conter[i]=""; 
          i++; 
        } 
    
        boolean sentinella=true; 
        int m=0; 
    
        i=1; //Lo devi definire sopra altrimenti tuttew le 
               volte lo incerementi e poi lo ridefinisci 
               uguale a 1
    
        while ( m<cost) { 
    
          do { 
            if (i==casuali[m]) {
            conter[i]+="*"; 
            sentinella=false;
          } 
    
          i++; 
    
          while(i<11 && sentinella ); 
          m++; 
        } 
      
        i=1; 
        for (i; i<11; i++) 
        System.out.print(i+": "+conter[i]+"\n");
      } 
    }
    Prova così...

  3. #3
    Non funziona
    Esaminiamo questo ciclo
    codice:
      i=1;   //Lo devi definire sopra altrimenti tuttew le 
               //volte lo incerementi e poi lo ridefinisci 
               //uguale a 1
    
        while ( m<cost) { 
    
          do { 
            if (i==casuali[m]) {
            conter[i]+="*"; 
            sentinella=false;
          } 
    
          i++; 
    
          }while(i<11 && sentinella ); 
          m++; 
         }
    Scusa io faccio il confronto ....
    allora il ciclo while ( m<cost) mette in iterazione quello nidato per 100 volte e ogni volta quello interno viene eseguito 10 volte
    "i" deve partire da 1 perche' confronta ogni posizione (che va da 0 a 99) dell'array casuali che contiene valori casuali da 1 a 10.
    quindi non appena "i" e' uguale all'elemento dell'array casuali concateno l'indice dell'aray di tipo string di un "*"
    cosi ogni indice che va da 1 a 10 tiene conto di quanti 1 ... 2... 3 ..10 sono stati usciti nell'aray casuali!
    Se mi fai mettere
    i=1; //Lo devi definire sopra altrimenti tuttew le
    //volte lo incerementi e poi lo ridefinisci
    //uguale a 1
    il ciclo
    do {
    if (i==casuali[m]) {
    conter[i]+="*";
    sentinella=false;
    }

    i++;
    dopo un paio di iterazioni si trova "i" a 11 e cosi non viene mai eseguito
    mentre se metto
    codice:
     
        while ( m<cost) { 
     i=1;   //ogni volta che il cilo principale viene eseguito
               //"i" e' definito a 1 cosi puo' iniziare a fare il 
             // fino a confronto a quando trova il valore esatto.
               
          do { 
            if (i==casuali[m]) {
            conter[i]+="*"; 
            sentinella=false;
          } 
    
          i++; 
    
          }while(i<11 && sentinella ); 
          m++; 
         }

    Ma non mi funziona perche'?????????

  4. #4
    adesso funziona, ho messo un iterazione al posto della selezione
    codice:
    /* dato numeri casuali interi da 1 a 10 contenuti in un array di 100
    posizioni ,
    visualizzare mediante istogramma (usando desgli *)
    il numero totale dei numeri usciti, 
    es
    1: ********
    2:***************
    ..
    10:***********
    */
    public class Esercizio1 
    	{ 
      public static void main(String[] args) 
    	  { 
        final int cost=100; 
        int i=0; 
        int casuali[]= new int[cost];  
    
        while (i<cost) { 
          casuali[i]=(int) (1+Math.random()*10);
    
          i++; 
        } 
    
        i=1; 
        String conter[]= new String[11]; 
        
        while (i<11) {  
          conter[i]=""; 
          i++; 
        } 
    
        boolean sentinella=true; 
        int m=0; 
    
         
        while ( m<cost) { 
    i=1; 
        while (i!=casuali[m]) { 
            i++;      
            
     	   
          } 
    
          conter[i]+="*";
    
         
          m++; 
         }
                                 
      
        i=1; 
        for (; i<11; i++) 
        System.out.print(i+": "+conter[i]+"\n"); 
      } 
    }
    A quanto pare la selezione if mi faceva uscire dal giro.-....
    non l'ho capito tanto bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.