Pages: [1] 2 3   Go Down
Print
Author Topic: AIUTO:TOROIDALE  (Read 6541 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« on: 05-03-2009, 20:48:21 »

/*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 bene questo esercizio:cosa c'entra il toroidale con la matrice? testate
Logged

djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #1 on: 05-03-2009, 21:21:44 »

Temo che l'esercizio sia stato scritto di fretta, o abbia subito varie modifiche.
Direi che il movimento sulla matrice non è toroidale, ma a zig zag. Probabilmente la parola "toroidale" è avanzata.
Inoltre, se l'aereo parte dal centro, sicuramente non toccherà mai tre quarti della matrice, ma si sposterà soltanto nel quadrante in basso a destra (dato che i movimenti che può fare sono soltanto verso il basso e verso destra).
Infine, chi ci assicura che l'aereo riesca ad atterrare (o precipitare) prima che la matrice finisca?

Ma tu non farci caso, risolvi e basta. Capita che i problemi siano un po' traballanti, usa il buon senso =)
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #2 on: 05-03-2009, 21:23:09 »

grazie,e non ho capito il secondo esercizio che parla dei byte
Logged

atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #3 on: 05-03-2009, 21:24:54 »

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.

è questo cry
Logged

Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #4 on: 05-03-2009, 21:27:17 »

No no ti spiego io...toroidale è una superficie praticamente simile alla terra.
Devi far conto che la matrice nn finisca da nessun lato praticamente...mi spiego meglio.
Supponiamo d'avere una amtrice 5x5. L'aereo parte dal centro e si muove una volta a dx e poi verso il basso...una volta raggiunta l'estremità (dx o giù) l'aereo compirà il prossimo passo dall'inizio della matrice. Se si trova nella posizione 4,4 (quindi ultima colonna ultima riga) se si sposta di 1 locazione a destra apparirà nella posizione 4,0 (prima colonna ultima riga). Spero d'averti chiarito il problema...una soluzione l'ho fatta con una collega martedì in facoltà...nn è x niente difficile solo che bisogna stare attenti a tutti i vari casi =)
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #5 on: 05-03-2009, 21:30:12 »

può essere una soluzione ma non del tutto soddisfacente,io mi kiedo come in 1 ora si possano fare tutte ste teorie bu
Logged

Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #6 on: 05-03-2009, 21:31:48 »

Ti do qualche suggerimento. Non ricordo di preciso come l'ho fatto...ma ho: prima calcolato il centro, poi messo un ciclo while infinito all'inizio (xkè se nella matrice ci sn tutti numeri positivi st'aereo nn si ferma mai), poi un if x capire se il valore era minore o uguale a 0, un for x fargli eseguire le mosse dovute =) spero d'esserti stato d'aiuto
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #7 on: 05-03-2009, 21:35:45 »

Sul secondo che difficoltà hai?
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #8 on: 06-03-2009, 00:18:17 »

dobbiamo convertire i byte in int?
Logged

Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #9 on: 06-03-2009, 08:01:10 »

E xkè devi convertirli? A te interessa che la lunghezza delle stringhe che devi andare a mettere nella matrice che ritorni sia di quel valore la, che sarà sicuramente intero. Al massimo puoi mettere un controllo x capire se ci sn numeri negativi...ma dipende come scrivi il metodo nn è nemmeno necessario
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #10 on: 06-03-2009, 10:57:56 »

e le probabilità?
Logged

Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #11 on: 06-03-2009, 11:33:38 »

Può farle con una math.random moltiplicata x 6
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #12 on: 06-03-2009, 11:42:15 »

ho impostato così l'esercizio,però non so riempire ogni singola cella con i caratteri casuali
Code:
import java.util.Random;
/* 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.*/
public class eser2
  {
  public static String [][] metodo(byte [] A)
    {
    int r,c,i=0;
   
    String [][]B=new String [20][20];
    for(i=0;i<A.length;i++)
      {
      for(r=0;r<B.length;r++)
        {
        String temp="";
        for(c=0;c<A[i];c++)
          {
          B[r][c]="";
         for(k=0;k<B[r][c];k++)
            {           
          temp+=(char)(int) (Math.random() * 10);

          B[r][c]=temp;
   
 
Logged

Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #13 on: 06-03-2009, 12:10:11 »

Ma lo sai che nn c'ho capito nulla. Xkè usi il ciclo esterno con le i? E a che ti serve temp? e xkè la math.random * 10? (ke oltretutto una volta che la casti a char ti ritorna caratteri completamente strani)
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #14 on: 06-03-2009, 12:51:43 »

Che ficata, ho appena scoperto che il feed rss mi segnala soltanto il 20% circa dei post nuovi, per questo mi perdo tutte le discussioni.

Aaah, toroidale in quel senso. Io avevo capito a ciambella.
Bisogna ammettere che è un significato di toroidale un po' immaginato.

@atrix0ne
il tuo array non è frastagliato, è 20x20.
Con ordine:
L'array B deve avere lunghezza pari a quella di A.
Ogni riga di B deve avere lunghezza pari al valore di A nella posizione corrispondente.
Poi per ogni posizione di B decidi la lunghezza della stringa, scegliendo un valore casuale tra 5 ed 8.
Per ogni carattere della stringa, scegli una lettera, secondo le probabilità che dice il testo.
Logged
Pages: [1] 2 3   Go Up
Print
Jump to: