Pages: [1]   Go Down
Print
Author Topic: BISOGNO DISPERATO DI UN ESERCIZIO DELL'ULTIMA PROVA  (Read 721 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 06-05-2009, 09:26:26 »

Scusate il titolo ma è importante, io e un altro ragazzo abbiamo provato a risolvere l'ultimo esercizio dell'ultima prova di programmazione:



Quote
/*Scrivere un metodo che prenda in input due array bidimensionali di stringhe frastagliati S ed S1 identici nella
struttura, e restituisca un indice j che indichi se entrambe le colonne j-esime di S ed S1 (anche non complete)
sono tali che tutte le s tringhe in esse terminano con lo stesso carattere(comune ad entrambe le colonne).
Se non esistono tali colonne allora j=-1 */


Non riusciamo a risolverlo, il ragazzo perchè non gli va con i frastagliati e io perchè mi funziona solo se le colonne sono complete, mentre l'esercizio chiede altro, siccome è importante, vi chiedo di darci una mano con la soluzione, io ho provato nell'intervento precedente a darne alcune, ma tutte errate, aiuto!!
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 06-05-2009, 10:30:07 »

Code:
    //ipotesi: S ed S1 hanno la stessa identica struttura E hanno almeno una riga
    public static int metodo (String [][] S, String [][]S1)
    {
        //calcola la lunghezza massima delle righe di S
        int maxC = -1;
        for (int y = 0; y < S.length; y++)
            if (S [y].length > maxC)
                maxC = S [y].length;
       
        boolean search = false;
        int c;
        for (c = 0; c < maxC && !search; c++)       //va avanti solo se search è stato falsificato (cioè se nel corpo di questo FOR la colonna j-esima non è ancora stata trovata) e ovviamente si è entro il range valido per c
        {
            int symbol = -1;        //carattere non esistente, utile per l'inizializzazione di symbol: uso un int invece di char per usare anche -1
            search = true;          //prevede una ricerca con successo
           
            for (int r = 0; r < S.length && search; r++)    //per tutte le righe (sempre se ancora ha senso fare la ricerca
                if (c < S [r].length)                   //se la colonna 'c' è presente nella riga 'r' (non è sempre detto poiché gli array sono frastagliati)
                {
                    if (symbol == -1)                                       //se il simbolo non è ancora stato scelto
                        symbol = S [r][c].charAt (S [r][c].length () - 1);  //scegliamo quello che troviamo in fondo alla prima stringa disponibile

                    //search sarà vero se il simbolo (scelto precedentemente, anche qualche ciclo prima di ora magari) è uguale a entrambi gli ultimi caratteri delle stringhe in colonna 'c' di riga 'r'
                    search = (symbol == S [r][c].charAt (S [r][c].length () - 1) && symbol == S1 [r][c].charAt (S1 [r][c].length () - 1));
                }
        }
       
        //se "search" era stato reso FALSE dentro il precedente ciclo FOR vuol dire che fino all'ultimo indice (maxC - 1)
        //non è stata trovata una colonna che soddisfacesse la condizione per la quale avremmo restituito un j != -1
        //ma se è rimasto true dopo l'inizializzazione interna, allora abbiamo letto tutte le righe trovando sempre vera tale condizione
        if (search)
            return c - 1;       //"c - 1" e non "c" poiché il ciclo FOR mi ha incrementato "c" prima di tornare a verificare la condizione di uscita
        else
            return -1;
    }
pc univ .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: