Pages: 1 [2] 3   Go Down
Print
Author Topic: prova di oggi..  (Read 7110 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #15 on: 09-01-2009, 22:39:56 »

MisteroLupo ti sei convinto?

Ti sembra corretto il mio codice?
Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

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


« Reply #16 on: 09-01-2009, 23:46:20 »

Sì.. cavolo con "alla sinistra" ho inteso che fossero contigui, non ci ho proprio pensato.. spero che non mi tolga troppi punti per questo errore..
Comunque sì mi sembra giusto il tuo!
Logged
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #17 on: 10-01-2009, 10:14:46 »

Ho fatto l'esercizio di Vivynz ( col charAt e con un metodo )
Code:
public class Esercizio2
{
public static boolean treColUguali(String[][] A){

boolean aux=false;
int cont=0; // conta le colonne uguali

for (int c=0; c<A[0].length; c++){ // ciclo colonne
boolean ok = true;
for (int i=0; i<A.length-1; i++){ // ciclo righe
// stringhe nulle o lunghezze di stringhe differenti nella colonna ==> la colonna non è più uguale
if (A[i][c].length() != A[i+1][c].length() || A[i][c].length() ==0)
ok = false;
// se hanno la stessa lunghezza, vengono controllati i singoli caratteri
else
for (int j=0; j<A[i][c].length(); j++)
// se 2 caratteri non sono uguali ==> la colonna non è più uguale
if (A[i][c].charAt(j) != A[i+1][c].charAt(j))
ok = false;
}

// se non ci sono state alterazioni della boolean significa che la colonna è uguale e la conto
if (ok) cont++;
}

// almeno 3 colonne uguali ==> problema risolto....
if (cont >=3) return true;

return aux;
}

public static void main (String[] args)
{
String[][] s={{"cane","gatto","pippo", "palla"},{"cane","gatto","pluto", "palla"},{"cane","gatto","topo", "palla"}};

for (int i=0; i< s.length; i++){
System.out.println();
for (int j=0; j<s[i].length; j++)
System.out.print(s[i][j] + "\t");
}

boolean b=treColUguali(s);

System.out.println("\n\n" + b);
}
}
« Last Edit: 10-01-2009, 11:32:48 by Crasher » Logged

Diventa ciò che sei nato per essere
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #18 on: 10-01-2009, 11:02:08 »

ciao A tutti ,
scusa crascher ma tu hai inteso le colonne uguali nel seguente modo:
1  2  4  3
1  2  5  3
1  2  7  3
1  2  8  3

e invece il professore mi ha detto che dovevo intendere nel seguente modo:

1  1  2  1
2  2  3  2
3  3  4  3
5  5  8  5
e quindi confrontare i caratteri delle stringhe della riga corrispondenti alle tre colonne...tu hai inteso ogni colonna uguale per conto suo..
a proposito qualcuno può vedere il codice dell'esercizio come quello di vivynz che ho postato prima?grazie
« Last Edit: 10-01-2009, 11:05:00 by Giovi89 » Logged
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #19 on: 10-01-2009, 11:19:15 »

Dal mio codice:
Code:
int[][] A = {{3,3,9},
{3,5},
{9,46,74}};

A parte che il testo nn dice che la matrice debba essere frastagliata, ma neppure quadrata, come ha detto il prof... quindi bisogna considerla frastagliata per evitare problemi... Smiley

Cmq abbiamo capito entrambe alla stessa maniera Wink

3*3 = 9 ==> restituisce true;
seconda riga  la salta x la mancanza di 3 colonne (nel codice c'è questo controllo)
9*46=74 ==> falso, ma la prima riga è vera, quindi ho sempre true!
Wink

Per il secondo esercizio guarda quello postato da me sopra il tuo post.
EDIT: Giovi... io e tu abbiamo avuto un compito diverso  [Emoticon] Asd
« Last Edit: 10-01-2009, 11:31:26 by Crasher » Logged

Diventa ciò che sei nato per essere
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #20 on: 10-01-2009, 12:45:37 »

dove sono reversengineer e Fr3d3R!K ??non partecipano adesso che servono??ihihi  [Emoticon] Asd
mi accodo alla richiesta di Giovi89..date un'occhiata ai codici??mi dite se è troppo disastroso??
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.
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #21 on: 10-01-2009, 13:01:01 »

Vivynz, il tuo codice del secondo esercizio, va in loop al terzo ciclo for... quindi il programma non fa quanto richiesto dalla traccia... bisogna vedere che metro di giudizio utilizza il cincotti per poter dare una opinione sul possibile disastro  boh
« Last Edit: 10-01-2009, 13:09:05 by k1r4 » Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #22 on: 10-01-2009, 13:05:50 »

grazie me ne ero accorta  volevo sapere se era tutto sbagliato o comunque corregendo alcune cose può funzionare..
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.
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #23 on: 10-01-2009, 13:09:09 »

.
« Last Edit: 10-01-2009, 16:08:58 by k1r4 » Logged

Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #24 on: 10-01-2009, 14:05:03 »

@Vivynz

non capisco se vuoi avere true x 3 righe uguali (da come si capisce nel tuo codice) o 3 colonne uguali (come richiesto nel testo).

cmq, come ha detto k1r4 il problema del loop è nel terzo for

for(int c1=c+1;(c1<A[0].length-1)&&!stop;c1++)

// restituisce false;
String[][] s={{"cane","gatto","palla"},{"cane","gatto","palla"},{"cane","gatto","palla"}};

// restituisce true;
String[][] s={{"cane","cane","cane"},{"gatto","gatto","gatto"},{"palla","palla","palla"}};

Smiley
« Last Edit: 10-01-2009, 14:06:43 by Crasher » Logged

Diventa ciò che sei nato per essere
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #25 on: 10-01-2009, 14:25:55 »

eccomi ero un pò impegnato. Comunque io avevo (ebbene si devo darmi anche io programmazione 1 pur essendo al secondo anno ) la prova di andrea cannella per la cronaca.
Però è curioso come molte persone anche qui chiedano se le righe/colonne erano da considerarsi contigue (il prof. Gallo l'avrà detto 5 volte durante la prova), e comunque non c'era scritto quindi potevano anche non esserlo...
Per Vivynz: ora casomai gli dò un'occhiata ma se quello di k1r4 funziona puoi prendere spunto dal suo.
Io i miei esercizi li avrei fatti pure giusti, ma ho dimenticato parentesi e simili "per strada" (proverbiali errori di distrazione che commetto dalla nascita)  testate testate testate .
Questo sono i sorgenti dei miei due:
Numero 1 (la proprietà era uguale x*y=z ma mi ricordo che era per righe)
Code:
public static boolean ProdottoComponenti(int[][] A)
{
int r,c,c1,c2,cont=0;
for(c=0;c<A[0].length-1;c++)
{
for(r=0;r<A.length;r++)
{
c1=c+1;
for(c2=c1+1;(c2<A[r].length) && (flag==false);c2++)
{
if(A[r][c]*A[r][c1]==A[r][c2])
{
cont++;
return true;
}
}
c1++;
}
}
return false;
}
ed il numero 2 (dove dovevo vedere se le 'a' erano maggiori in numero delle 'b'):
Code:
public static boolean lettereMaggiori(String[][] A, int j)
{
int r,h,contA=0,contB=0;
for(r=0;r<A.length;r++)
{
if(j>=A[r].length)
continue;
else
{
for(h=0;h<A[r][j].length();h++)
{
if(A[r][j].charAt(h)=='a')
contA++;
if(A[r][j].charAt(h)=='b')
contB++;
}
}
}
if(contA>contB)
return true;
return false;
}
Per quello delle tre colonne uguali, anche io avevo inteso leggendo il post che ci dovevano essere tre colonne (per intero) uguali. Ma eventualmente il codice non era complesso, ma quasi uguale al primo esercizio (cambia la condizione ma i cicli uguali restano).
Saluti!
« Last Edit: 10-01-2009, 14:27:51 by Fr3d3R!K » Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
ɹǝǝ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 #26 on: 10-01-2009, 14:38:24 »

dove sono reversengineer e Fr3d3R!K ??non partecipano adesso che servono??ihihi  [Emoticon] Asd
Il primo esercizio l'hai risolto correttamente.

Nella tua classe Esercizio2, invece, ci sono vari problemi, alcuni di distrazione altri un po' più gravi:
- riga 12:
Code:
for(int c1=c+1;(c<A[0].length-1)&&!stop;c1++)
dev'essere invece
Code:
for(int c1=c+1;(c1<A[0].length-1)&&!stop;c1++)

- riga 18: in
Code:
if((A[r][c].charAt(k)!=A[r][c1].charAt(k))||(A[r][c].charAt(k)!=A[r][c2].charAt(k)))//non è detto che esistano A[r][c2].charAt(k) né A[r][c1].charAt(k)
nessuno ti garantisce che A[r][c1] né che A[r][c2] abbiano almeno k caratteri. Ciò potrebbe sollevare una java.lang.IndexOutOfBoundsException.
Quello più grave è il seguente:
nel ciclo for esterno fissi una certa colonna c.
Poi controlli che per ogni riga esista una coppia di colonne diverse che contengano la stessa stringa della colonna fissata precedentemente, però potrebbe essere una coppia di colonne diversa da quella che fu trovata nella iterazione della/e precedente/i riga/e.
Ciò è errato poiché un controesempio come:
Code:
String[][] s={{"abcd", "abcd", "abcd", "lmno"},
              {"1234", "1234", "blab", "1234"}};
restituirebbe true, poiché fissata la prima colonna, ci sono due colonne che hanno la stessa stringa che c'è nella prima colonna, solo che per la prima riga tali colonne sono la seconda e la terza, mentre per la seconda riga sono la seconda e la quarta!
 

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
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #27 on: 10-01-2009, 15:24:46 »

dove sono reversengineer e Fr3d3R!K ??non partecipano adesso che servono??ihihi  [Emoticon] Asd
Il primo esercizio l'hai risolto correttamente.

come fai a dire che l'ha risolto correttamente? i numeri devono essere contigui o no?? 
Logged

ɹǝǝ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 #28 on: 10-01-2009, 15:44:48 »

Secondo la specifica del testo i numeri non devono necessariamente essere contigui, e in quel caso è corretto. Se poi i numeri devono essere contigui, e questa informazione non mi è stata data, in quel caso è errato.

Va meglio così ?
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
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #29 on: 10-01-2009, 16:06:04 »

se vi vedesse il prof. Gallo vi ucciderebbe evil
per l'n-esima volta: i numeri NON è necessario che siano contigui in quanto NON c'è scritto nel testo. Il programma dovrebbe dare true anche in questo caso:
Quote
1 5 2 8 7 2 --> true perchè l'elemento alla posizione 0,0 (il primo 1) moltiplicato l'elemento alla posizione 0,2 (il primo 2) risulta uguale all'elemento alla posizione 0,6 (il secondo 2), in quanto 1*2=2
« Last Edit: 10-01-2009, 16:09:57 by Fr3d3R!K » Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Pages: 1 [2] 3   Go Up
Print
Jump to: