Pages: 1 [2]   Go Down
Print
Author Topic: esercizi o testi esami precedenti  (Read 3829 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #15 on: 31-12-2008, 12:06:32 »

grazie..si tranne qualche dettaglio l'ho fatto allo stesso modo  almeno ogni tanto mi funziona qualcosa  I
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.
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #16 on: 02-10-2010, 14:56:02 »

ciao, scusa per l'assenza ma ho avuto problemi con il pc e non sono potuto venire sul forum, comunque io avrei postato il sorgente così almeno anche gli altri hanno un eventuale soluzione con cui confrontarsi. Ad esempio il programma io l'ho fatto nel seguente modo:
EDIT: OTTIMIZZATO IL CODICE SORGENTE CON L'ELIMINAZIONE DI METODO ED ARRAY AUSILIARI
Code:
public static long[][] OrdinaColonne(long[][] A)
{
int r,c;
long[][] B=new long[A.length][A[0].length];
for(r=0;r<A.length;r++)
for(c=0;c<A[r].length;c++)
B[r][c]=A[r][c];
for(r=0;r<B.length-1;r++)
for(c=1;c<B[r].length;c+=2)
for(int i=0;i<B.length-1;i++)
for(int j=i+1;j<B.length;j++)
if(B[i][c]>B[j][c])
{
long temp=B[i][c];
B[i][c]=B[j][c];
B[j][c]=temp;
}
return B;
}
e (ovviamente) funziona, come si vede dall'output (ho aggiunto alcune colonne per vedere se effettivamente ordina tutte le colonne dispari correttamente):
Saluti!
Mi sembra che qst esercizio forse nn sia corretto xk ho provato a compilare ma in uscita mi da solo una matrice di zeri!!
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #17 on: 02-10-2010, 15:05:58 »

Hai sbagliato tu. L'esercizio quando e` stato scritto era corretto (e lo dimostra come puoi vedere l'immagine allegata).
Logged

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

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #18 on: 03-10-2010, 12:02:13 »

Hai sbagliato tu. L'esercizio quando e` stato scritto era corretto (e lo dimostra come puoi vedere l'immagine allegata).
Prova tu... qst è il codice basta compilarlo:
Code:
public static void Stampa(long[][]v){
for(int x=0; x<v.length; x++){
for(int y=0; y<v[x].length; y++)
System.out.print(v[x][y]+" ");
System.out.println("");
}
}
public static long[][] OrdinaColonne(long[][] A)
{
int r,c;
long[][] B=new long[A.length][A[0].length];
for(r=0;r<A.length;r++){
for(c=0;c<A[r].length;c++){
B[r][c]=A[r][c];
for(r=0;r<B.length-1;r++){
for(c=1;c<B[r].length;c+=2){
for(int i=0;i<B.length-1;i++){
for(int j=i+1;j<B.length;j++){
if(B[i][c]>B[j][c])
{
long temp=B[i][c];
B[i][c]=B[j][c];
B[j][c]=temp;
}

           }
     }
           }
              }
                 }
}

    return B;
}
public static void main(String[]args){
long [][] m={{2,6,4,5},           
    {1,7,0,11},
                     {3,7,7,1},
     {5,8,5,0}};
                long [][] B=OrdinaColonne(m);
Stampa(B);
    }
    }
boh
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #19 on: 03-10-2010, 13:22:23 »

il problema stava nel passare i valori da A a B la nuovo matrice nel codice c' era scritto:
Code:
long[][] B=new long[A.length][A[0].length];
for(r=0;r<A.length;r++){
for(c=0;c<A[r].length;c++){
B[r][c]=A[r][c];
io l' ho risolto togliendo i for e scritto semplicemente
Code:
long[][] B=new long[A.length][A[0].length];
B=A;
ora mi gira correttamente!  I
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #20 on: 29-01-2011, 13:22:32 »

Ciao ragazzi rispolvero questo vecchio ma complesso esercizio.

Ho visto la soluzione postata da Fr3d3R!K ma non riesco a capirne il ragionamento quindi ho provato a risolverlo a modo mio ma naturalmente non funziona xD.

Vi posto di seguito il codice, fatemi capire dove sbaglio! 

Code:
public static int [][] Es (int [][] A )
{
int [][] B = new int [A.length][A[0].length];
int temp = 0;

for (int c = 0 ; c<A[0].length ; c++)
{
for (int r=0; r<A.length; r++)
{
for (int rr=r+1; rr<A[r].length; rr++)
{
if (c%2==0)
{
B[r][c]=A[r][c];
}
else
{
if (A[r][c]<A[rr][c])
{
B[r][c]=A[r][c];
}
else
{
temp= A[r][c];
B[r][c]=A[rr][c];
A[rr][c]=temp;
}
}
}
}
}
return B;
}

Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #21 on: 29-01-2011, 15:04:14 »

attento: vedi che quando passi un oggetto come paramatro formale, esso viene referenziato per indirizzo, il che significa che lo puoi modificare. e qui la matrice A in input nn la devi modificare. con lo swap che fai, cioè la parte di codice in cui usi la variabile temp, modifica la matrice di partenza. quindi invece di ingarbugliarti in errori che potrebbero compromettere il risultato fai quello che è stato postato da friedrik, cioè riempire la nuova matrice e poi modificare quella stessa. perchè nemmeno il controllo che fai risulta corretto per determinare qual è il più piccolo.
Logged

"Che la Forza sia con Te"
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #22 on: 29-01-2011, 17:08:48 »

Grazie per la risposta Steph!
Effettivamente non è stata una brillante idea andare a modificare la matrice originale xD

Ho provato quindi ad utilizzare il codice postato sempre da Fr3d3R!K che naturalmente funziona solo che mi sono sorti dei dubbi su alcune parti:

Code:
for(r=0;r<B.length-1;r++)
Code:
for(int i=0;i<B.length-1;i++

Il primo for qua sopra che scopo ha? funziona anche senza... anche perchè successivamente creiamo 2 righe su cui lavorare e l'indice r non viene utilizzato nello swap!
Ed infine... perchè è stato utilizzato il length-1 invece che il normale length? Anche senza il -1 funziona il prog!

giusto x curiosità eh! non sto criticando xD

Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #23 on: 29-01-2011, 19:12:20 »

il ciclo r secondo me nn serve e si potrebbe scrivere c<B[0].length tanto è una matrice. cmq l'algoritmo dovrebbe essere il selectionsort se nn erro. in ogni caso i deve essere minore di B.length-1 così sei sicuro di far partire anche la j perchè se i arriva a essere solo minore di B.length inizializza la j, controlla la condizione e nn entra nel ciclo quindi hai fatto un passaggio inutile. diciamo che è fatto in modo di nn perdere tempo inutile.
Logged

"Che la Forza sia con Te"
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #24 on: 29-01-2011, 19:40:23 »

bene! grazie x le delucidazioni Steph!  ok
Logged
Pages: 1 [2]   Go Up
Print
Jump to: