Pages: [1] 2 3   Go Down
Print
Author Topic: Prove 25/2/08  (Read 7094 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
simOne_fLuo
Guest
« on: 25-02-2009, 11:15:34 »

ragazzi sono appena tornato io avevo questo compito..:

1)Un aereo si muove in una superficie toroidale rappresentata da una matrice S di nxn interi occupando di volta in volta una posizione di S. L'aereo si sposta alternando un movimento orizzontalr da sinistra a destra ad uno verticale dal'alto in basso; se l'aereo si trova nella posizione (i,j) l'ampiezzadello spostamento successivo è data da S[i,j] se quest'ultimo è positivo. Se S[i,j] contiene valore zero si tratta di un aeroporto in cui l'aereo atterra, se contiene un valore negativo si tratta di un tifone che fa precipitare l'aereo. Scrivere un metodo che prenda in input S e restituisca il numero di spostamenti compiuti da un ereo cha parte dal centro di S.

2)Scrivere 1 metodo che prenda in input un array A di byte, e restituisca un array bidimensionale frastagliato B di stringhe la cui lunghezza delle righe è data dai valori di A. Si riempia B con delle stringhe casuali da 5 a 8 caratteri in cui ogni singolo carattere è 'p' con probabilità 2/3, 'a' con probabilità 1/6 e 'k' con probabilità 1/6.

Il 2° non era ala fine impossibile ma il primo bello tosto..
« Last Edit: 25-02-2009, 11:20:07 by simOne_fLuo » Logged
pemix
Matricola
*
Offline Offline

Gender: Male
Posts: 33


Visitate il mio sito web: www.pemix.it


WWW
« Reply #1 on: 25-02-2009, 12:31:58 »

Questo è come l'ho fatto io, ma ogni tanto va a ciclo infinito. Qualcuno sà dove sbaglio?o se è giusto?

Testo del compito:
Un aereo si muove in una superficie toroidale rappresentata da una matrice S di nxn interi occupando di volta in volta una posizione di S. L'aereo si sposta alternando un movimento orizzontalr da sinistra a destra ad uno verticale dal'alto in basso; se l'aereo si trova nella posizione (i,j) l'ampiezzadello spostamento successivo è data da S[i,j] se quest'ultimo è positivo. Se S[i,j] contiene valore zero si tratta di un aeroporto in cui l'aereo atterra, se contiene un valore negativo si tratta di un tifone che fa precipitare l'aereo. Scrivere un metodo che prenda in input S e restituisca il numero di spostamenti compiuti da un ereo cha parte dal centro di S.
Code:
public class esercizio1
{
 public static void main(String[]args)
  {
    int n=600;
    int S[][]=new int[n][n];
    for(int i=0;i<S.length;i++)
    {
      for(int j=0;j<S[i].length;j++)
      {
        S[i][j]=(int)(Math.random()*100);
      }
    }
    System.out.println(metodo(S));
  }
 public static int metodo (int S[][])
  {
    int spostamenti=0;
    int movimentoalternato=0;
    int ampiezza=0;
    int n=S.length/2;
    int x=n/2;
    int y=n/2;
    boolean stop=false;
    while(stop==false)
    {
      if(movimentoalternato==0)
      {
        if(S[x][y]==0){stop=true;break;}
        if(S[x][y]< 0){stop=true;break;}
        if(S[x][y]> 0)
        {
         ampiezza=0;
         ampiezza=S[x][y];
         x+=ampiezza;
         if(x>n){x=(x-n);}
         spostamenti++;
         movimentoalternato=1;
        }
      }
      if(movimentoalternato==1)
      {
        if(S[x][y]==0){stop=true;break;}
        if(S[x][y]< 0){stop=true;break;}
        if(S[x][y]> 0)
        {
         ampiezza=0;
         ampiezza=S[x][y];
         y+=ampiezza;
         if(y>n){y=(y-n);}
         spostamenti++;
         movimentoalternato=0;
        }
      }
    }
    return spostamenti;
  }
}
« Last Edit: 25-02-2009, 15:06:20 by pemix » Logged
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #2 on: 25-02-2009, 12:38:23 »

Questo è il primo del secondo gruppo. Compilando non mi restituisce errori però mi torna 0 invece di uno. Ho chiesto al prof e in pratica i 5 elementi, 2 prima e 2 dopo dovevano essere Decrescenti...Non so dove ho sbagliato.
Ho letto il testo degli altri secondo me sono un pò più complessi 


Code:
/*Scrivere un metodo che prenda in input una matrice A di float, e restituisca il numero di
elementi bilanciati di A. Un elemento x di A si dice bilanciato se la sequenza ordinata
formata dai due elementi immediatamente a sinistra di x, l'elemento x e i due elementi
immediatamente a destra di x, è in ordine non-crescente.
N.B. : Gli elementi che non hanno sufficienti "vicini" non devono essere considerati.*/

public class Esame {
    public static void main (String [] args) {
         float [][] A = {{5,4,3,2,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1}};
            System.out.println (metodo (A));
        }

public static int metodo (float [][]A) {
    int bilanciati = 0;
    for (int r=0; r<A.length; r++) {
        for (int c=1; c<A[0].length-2; c+=2) {
            for (int c1=0; c1<A[0].length-1; c1++) {
    if ((A[r][c1] > A [r][c+1]) && (A[r][c] > A [r][c+2]) && (A[r][c1] > A [r][c1+1]) && (A[r][c1] > A [r][c1+2]) && (A[r][c1+2] > A [r][c]))
        bilanciati++;
        }
    }
}
return bilanciati;
 }
}
Logged
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #3 on: 25-02-2009, 12:48:01 »

E questo è il secondo...anche qui mi ritorna niente, stringa vuota. Bene....posso cominciare a disperarmi? testate

Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di stringhe,
e restituisca una stringa ottenuta concatenando i penultimi caratteri di tutte le stringhe
in A contenute nella colonna completa più a destra*/

public class Esame2 {
    public static void main (String [] args) {
        String[][]A = {{"abcd"},
                        {"mno", "pqrst", "il"},
                        {"uvz", "wy", "abcd"}};
            System.out.println (metodo (A));
        }

public static String metodo (String [][]A) {
    String tmp = "";
    for (int r=0; r<A.length; r++) {
        for (int r1=r+1; r1<A.length-2; r++) {
            if (A[r].length < A [r1].length-1)
        for (int c=0; c<A[r].length; c++) {
    tmp+= A[r][c].charAt(A[r][c].length()-2);
        }
    }
}
return tmp;
 }
}
               
Logged
simOne_fLuo
Guest
« Reply #4 on: 25-02-2009, 12:56:19 »

E questo è il secondo...anche qui mi ritorna niente, stringa vuota. Bene....posso cominciare a disperarmi? testate
              

hmm.. direi di si..
cmq stavolta il prof ha superato se stesso + difficili di sempre.. testate [Emoticon] Rosik Asd
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #5 on: 25-02-2009, 13:06:19 »

io ho fatto 2 for e 2 for
Logged

thomas89
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 341



« Reply #6 on: 25-02-2009, 13:06:48 »

ragazzi sono appena tornato io avevo questo compito..:

1)Un aereo si muove in una superficie toroidale rappresentata da una matrice S di nxn interi occupando di volta in volta una posizione di S. L'aereo si sposta alternando un movimento orizzontalr da sinistra a destra ad uno verticale dal'alto in basso; se l'aereo si trova nella posizione (i,j) l'ampiezzadello spostamento successivo è data da S[i,j] se quest'ultimo è positivo. Se S[i,j] contiene valore zero si tratta di un aeroporto in cui l'aereo atterra, se contiene un valore negativo si tratta di un tifone che fa precipitare l'aereo. Scrivere un metodo che prenda in input S e restituisca il numero di spostamenti compiuti da un ereo cha parte dal centro di S.

Non ho capito una cosa, l'aereo ho capito ke parte dal centro.. ma DOVE deve arrivare?
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #7 on: 25-02-2009, 13:26:37 »

Beeeeeeeeeeene..spero almeno di avere azzeccato i for, non riesco nemmeno a cercare di sistemarlo perchè non capisco più nulla al momento  cry
Logged
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #8 on: 25-02-2009, 13:31:04 »

Cari colleghi io per l' esercizio del compito riguardante l'aereo ho usato 2 for invece 4 per quello delle stringhe casuali? sono giusti?
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #9 on: 25-02-2009, 13:34:55 »

Questo è il primo del secondo gruppo. Compilando non mi restituisce errori però mi torna 0 invece di uno. Ho chiesto al prof e in pratica i 5 elementi, 2 prima e 2 dopo dovevano essere Decrescenti...Non so dove ho sbagliato.
Ho letto il testo degli altri secondo me sono un pò più complessi 


Code:
/*Scrivere un metodo che prenda in input una matrice A di float, e restituisca il numero di
elementi bilanciati di A. Un elemento x di A si dice bilanciato se la sequenza ordinata
formata dai due elementi immediatamente a sinistra di x, l'elemento x e i due elementi
immediatamente a destra di x, è in ordine non-crescente.
N.B. : Gli elementi che non hanno sufficienti "vicini" non devono essere considerati.*/

public class Esame {
    public static void main (String [] args) {
         float [][] A = {{5,4,3,2,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1},
                          {1,1,1,1,1}};
            System.out.println (metodo (A));
        }

public static int metodo (float [][]A) {
    int bilanciati = 0;
    for (int r=0; r<A.length; r++) {
        for (int c=1; c<A[0].length-2; c+=2) {
            for (int c1=0; c1<A[0].length-1; c1++) {
    if ((A[r][c1] > A [r][c+1]) && (A[r][c] > A [r][c+2]) && (A[r][c1] > A [r][c1+1]) && (A[r][c1] > A [r][c1+2]) && (A[r][c1+2] > A [r][c]))
        bilanciati++;
        }
    }
}
return bilanciati;
 }
}
non ci provare ora a sistemarlo perchè il cervello è fuori uso, possibilmente domani ti risulta tutto chiaro!cmq hai sbagliato alcune cose..perchè due cicli per le colonne?inoltre l'ordine è non crescente questo significa che l'elemento più a sinistra può essere maggiore o UGUALE  di quello a destra..e quindi le righe composte tutte ds uno contano anche ecco il codice corretto
Code:
public static int metodo (float [][]A)
{
    int bilanciati = 0;
    for (int r=0; r<A.length; r++)
        for (int c=2; c<A[0].length-2; c+=2)
if((A[r][c-2]>=A[r][c-1])&&(A[r][c-1]>=A[r][c])&&(A[r][c]>=A[r][c+1])&&(A[r][c+1]>=A[r][c+2]))
bilanciati++;  
return bilanciati;
 }
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #10 on: 25-02-2009, 13:38:12 »

evvai 2 cicli for giusti,quanto li valuta? evil
Logged

ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #11 on: 25-02-2009, 13:38:59 »

Sì infatti, per adesso non sono in grado di capirci più qualcosa...Ho fatto un altro for perchè credevo che A[r][c-1] non si potesse fare, in un esercizio non mi risultava ma mi sa era un altro l'errore allora.  testate testate testate testate
Leggendo anche il secondo come pensi sia andato il tutto?
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #12 on: 25-02-2009, 13:47:13 »

"azzeccando i for" e sbagliando qualcosina tipo parentesi e dichiarazione quanto si può prendere?
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #13 on: 25-02-2009, 13:51:51 »

stavo proprio vedendo il secondo..io l'avrei fatto così:
Code:
public static String metodo(String[][] A)
{
String tmp="";
int min=A[0].length;
for(int i=0;i<A.length;i++)
if(A[i].length<min)
min=A[i].length;
for(int r=0;r<A.length;r++)
tmp+=A[r][min-1].charAt(A[r][min-1].length()-2);
return tmp;
}
infatti se ci pensi la colonna completa più a destra ha come indice la lunghezza della riga più corta!tu invece nel tuo codice confronti le righe a 2 a 2 e se la prima è più corta della seconda aggiungi il carattere...
devo dire però che c'erano esercizi abbastanza complessi...
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #14 on: 25-02-2009, 13:52:55 »

"azzeccando i for" e sbagliando qualcosina tipo parentesi e dichiarazione quanto si può prendere?
dipende quanto li considera gravi il prof...e se la mancanza di una coppia di parentesi compromette tutto e allora è un bel probl 
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
Pages: [1] 2 3   Go Up
Print
Jump to: