Pages: 1 [2]   Go Down
Print
Author Topic: Esercizio di prova in itinere  (Read 5138 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #15 on: 23-11-2008, 19:46:04 »

Salve a tutti, sono riuscito a trovare una soluzione all'esercizio presente sulla prova in itinere del robot.
Ecco qui il codice da me scritto:

import javax.swing.*;
public class robot
{
   public static void main (String args[])
   {
      float energia=100F;      
      int x=0;
      int y=0;
      
      //COORDINATE DEI MOVIMENTI NELLA GRIGLIA
      while ((x>=-50 && x<=50)&&(y>=-50 && y<=50)&&(energia>1.4F))
      {
       int mov = (int) (1+Math.random()*3);
                                 //GENERA LA DIREZIONE CASUALE DEL ROBOT
       char c = (char) (Math.random()*('a'-'e')+'e');
       if (c=='a')
         c='n';
       else
         if (c=='b')
            c='s';
         else
            if (c=='c')
               c='e';
            else
               if (c=='d')
                  c='o';
                                 

       if (c=='n' && mov==1)
       {
              y+=1;
                   
         energia=energia-((energia*2F)/100F);
       }else
       if (c=='s' && mov==1)
       {
          y=y-1;
          
         energia=energia-((energia*2F)/100F);
       }else
       if (c=='e' && mov==1)
       {
          
          x=x+1;
         energia=energia-((energia*2F)/100F);
       }else
       if (c=='o' && mov==1)
       {
          
          x=x-1;
         energia=energia-((energia*2F)/100F);
       }
       if (c=='n' && mov==2)
       {
              y=y+2;
                   
         energia=energia-((energia*2.3F)/100F);
       }else
       if (c=='s' && mov==2)
       {
          y=y-2;
          
         energia=energia-((energia*2.3F)/100F);
       }else
       if (c=='e' && mov==2)
       {
          
          x=x+2;
         energia=energia-((energia*2.3F)/100F);
       }else
       if (c=='o' && mov==2)
       {
          
          x=x-2;
         energia=energia-((energia*2.3F)/100F);
       }
       if (c=='n' && mov==3)
       {
              y=y+3;
                   
         energia=energia-((energia*2.4F)/100F);
       }else
       if (c=='s' && mov==3)
       {
          y=y-3;
          
         energia=energia-((energia*2.4F)/100F);
       }else
       if (c=='e' && mov==3)
       {
          
          x=x+3;
         energia=energia-((energia*2.4F)/100F);
       }else
       if (c=='o' && mov==3)
       {
          
          x=x-3;
         energia=energia-((energia*2.4F)/100F);
       }
       System.out.println("La mossa generata dal robot è verso "+c);
       System.out.println("L'ampiezza del movimento generato è di "+mov+" caselle");
       System.out.println("il robot è alla posizione "+x+";"+y);
       System.out.println("l'energia residua è "+energia);
       System.out.println();
           }
      
   }
}


Vi prego di dirmi se può andare o no.
Grazie
« Last Edit: 23-11-2008, 19:57:44 by gam » Logged
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #16 on: 23-11-2008, 20:31:09 »

puoi farlo anche tu basta compilarlo.
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #17 on: 23-11-2008, 21:09:25 »

si si funziona compilandolo. Volevo solo avere un vostro parere nella stesura del programma
« Last Edit: 23-11-2008, 21:11:24 by gam » Logged
Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #18 on: 23-11-2008, 21:21:19 »

si si funziona compilandolo. Volevo solo avere un vostro parere nella stesura del programma

Come da prima .... TROPPI if ... e non è una questione di mi piacciono o non mi piacciono gli if annidati ma perchè far lavorare di più il nostro programma e appesantirlo con troppi controlli ?
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

Tra il dire e il fare c'è distanza di hamming 2.


« Reply #19 on: 25-11-2008, 16:38:37 »

Usiamolo il tag per i codici  [Emoticon] Rosik Asd
Logged
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #20 on: 26-11-2008, 14:47:47 »

puoi dirmi come si fa per favore?
Logged
Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #21 on: 26-11-2008, 14:57:53 »

il tastino con il cancelletto # ...
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
Bastard_Inside
Guest
« Reply #22 on: 28-11-2008, 16:24:57 »

Ecco qui l'esercizio provato e funzionante  ok :
Code:
/* per la direzione:
                    0=nord
                    1=sud
                    2=est
                    3=ovest
   per lo spostamento:
                      1 casella= -2%
                      2 caselle=-2.3%
                      3 caselle=-2.4%
*/
public class robot
{
    public static void main (String[] args)
    {
        int x_attuale=50;
        int y_attuale=50;
        int spost_x;
        int spost_y;
        int direzione;
        int spostamento;
        float energia=100;
        final int altezza_griglia=100;
        final int larghezza_griglia=100;
       
        while( (altezza_griglia-y_attuale)>=0 && (larghezza_griglia-x_attuale)>=0 && energia>1.4)
        {
            direzione = (int)(Math.random()*4);
            spostamento=1+(int)(Math.random()*3);
           
            switch (direzione)
            {
                case 0:
                    spost_x=0;
                    spost_y=spostamento;
                break;
                case 1:
                    spost_x=0;
                    spost_y=-spostamento;
                break;
                case 2:
                    spost_x=spostamento;
                    spost_y=0;
                break;
                default:
                    spost_x=-spostamento;
                    spost_y=0;
            }
           
            x_attuale += spost_x;
            y_attuale += spost_y;
           
            switch (spostamento)
            {
                case 1:
                    energia-=energia*2/100;
                break;
                case 2:
                    energia-=energia*2.3/100;
                break;
                default:
                    energia-=energia*2.4/100;
            }
        }
         System.out.println("la posizione del robot è "+ x_attuale+" " + y_attuale+ " energia rimasta = "+energia);
    }
}
Logged
TheSpecialOne
Apprendista Forumista
**
Offline Offline

Posts: 232



« Reply #23 on: 28-11-2008, 16:32:52 »

thanks! era un bel casino questo esercizio!
Logged
Bastard_Inside
Guest
« Reply #24 on: 28-11-2008, 16:52:51 »

thanks! era un bel casino questo esercizio!
e si abbastanza ! cmq pregu ;-P
Logged
Pages: 1 [2]   Go Up
Print
Jump to: