Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: ciccio on 26-01-2009, 12:39:15



Title: PROVA DI OGGI (26-01)
Post by: ciccio on 26-01-2009, 12:39:15
Ragazzi ho appena finito di passare al comp il codice scritto oggi in classe. non ho avuto il tempo di copiare anche il testo, percui se qualcuno dovesse averlo...che magari lo inserisca nel topic così da renderlo + utile...

posto entrambi gli esercizi. il primo funziona così come l'ho fatto nel compito. Al secondo ho dovuto apportare una modifica (e si...esercizio sbagliato in aula... .doh .doh ) Spero siano utili...

ECCO IL PRIMO:

Code:
class prova1
{
public static int metodo (float[][] A, float[][] B)
{
int pesanti = 0;
for (int j = 0; j < A[0].length; j++)
{
int contaElementi = 0;
for (int i = 0; i < A.length; i++)
{
if (A[i][j] > B[i][j])
contaElementi++;
}
if (contaElementi > (A.length/2))
pesanti++;
}
return pesanti;
}

}

ED ECCO IL SECONDO CON TANTO  DI MAIN:

Code:
class prova2
{
public static boolean metodo (String[][] A)
{
for (int i = 0; i < A.length; i++)
{
for (int j = 0; j < A[i].length; j++)
{
for (int k = i; k < A.length; k++)
{
int h;
if (k == i)
{
h = j+1;
}
else
{
h = 0;
}
for (;h < A[k].length; h++)
{
int contaCaratteri = 0;
for (int c = 0; c < A[i][j].length(); c++)
{
for (int d = 0; d < A[k][h].length(); d++)
{

if (A[i][j].charAt(c) == A[k][h].charAt(d))
{
contaCaratteri++;
for (int f = c+1, g = d+1; f < A[i][j].length() && g < A[k][h].length(); f++, g++)
if (A[i][j].charAt(f) == A[k][h].charAt(g))
contaCaratteri++;
}
else
{
contaCaratteri = 0;
}

if (contaCaratteri == A[i][j].length())
return true;
}
}
}
}
}
}
return false;
}

public static void main(String[] args)
{
String [][] S = { {"xyxyxyxy", "inter",    "x_style"},
                       {"zebra", "vite"},
                       {"ugo",   "per", "pinguino", "impero"}
                     };


System.out.println(metodo(S));
}
}

DOMANDONE:

considerando che nel secondo esercizio ho dimenticato di inserire il for più interno (quello dentro l' if) e considerando che per il resto entrambi gli esercizi sono a mio parere giusti (se così non fosse correggetemi), secondo voi quanto mi da Cincotti?? (intendo dire in punti, non in pedate nel deretano... .smile)


Title: Re:PROVA DI OGGI (26-01)
Post by: hax on 26-01-2009, 12:59:10
se usa lo stesso metodo dell'altra volta del contare i for prima di correggere ti da 18 credo...


Title: Re:PROVA DI OGGI (26-01)
Post by: Mito on 26-01-2009, 13:15:50
Quote from: ciccio
DOMANDONE:

considerando che nel secondo esercizio ho dimenticato di inserire il for più interno (quello dentro l' if) e considerando che per il resto entrambi gli esercizi sono a mio parere giusti (se così non fosse correggetemi), secondo voi quanto mi da Cincotti?? (intendo dire in punti, non in pedate nel deretano... .smile)

Ancora, ad oggi, non ho capito il criterio di valutazione di un esercizio di Prima Parte.

Credo che il Porf., più che considerare ciò che produce l'output dell'esercizio in questione, consideri maggiormente il corretto (?) numero di cicli for inseriti. Secondo me, è più probabile prendere un voto alto in un esercizio al 90% errato (cioè che non produce l'output richiesto) ma col numero di cicli for corretto e, viceversa,  prenderne uno basso in un esercizio al 100% corretto ma col numero di cicli for (secondo il Prof.) maggiore o minore del previsto.

Ti faccio un esempio con un esercizio presente nella Prova in Itinere.
Code:
public class ProvaItinere
{
  //Esercizio 2
 
  //Scrivere un metodo che prenda in input una matrice A di stringhe, e restituisca un boolean
  //che indichi se esitono due colonne contigue di A in cui sia presente almeno una stringa comune
 
  public static boolean Esercizio2(String A[][])
  {
      for(int j=0;j<A.length;j++)
      {
        for(int i=0;i<A.length;i++)
        {
          for(int k=0;k<A.length;k++)
          {
            for(int h=j+1;h<A.length;h++)
            {
              //System.out.println(A[i][j]+"=="+A[k][h]); //l'ho inserito così puoi renderti conto che effettivamente
                                                          //fa i controlli come da testo e funziona al 100% (credo)
         
              if(A[i][j].equals(A[k][h]))
              {
                return true;
              }
              else break;
            }
          }
        }
      }
      return false;
  }
 
  //Main Esercizio 2
  public static void main(String args[])
  {
    String A[][] = {{"abc","def","ghi"},
                    {"abcm","ac","o"},
                    {"pq","rstu","vz"}};
                   
    for(int i=0;i<A.length;i++)
    {
      for(int j=0;j<A[i].length;j++)
      {
      System.out.print(A[i][j]+"\t");
      }
      System.out.println();
    }
   
   
   
    boolean trovato = Esercizio2(A);
   
    System.out.println(trovato);
   
  }

Questo esercizio è corretto al 99% e nonostante ciò i punti attribuitomi sono stati 5 su 15 solo per il numero di cicli for, uno in più a detta del Prof.

Inutile dire che non sono d'accordo con il punteggio (...e più in generale con il criterio di valutazione degli esercizi).

Quindi se applica lo stesso criterio di valutazione della Prova in Itinere, credo che il voto si aggiri intorno al 18 (come dice il collega hax). Fai te...


Title: Re:PROVA DI OGGI (26-01)
Post by: ciccio on 26-01-2009, 13:43:47
rispondo a Mito.
si in effetti io nella seconda prova in itinere ho preso 18...un esercizio giusto e nell'altro mancava un ciclo for. praticamente ho rinunciato a un 18 per un "ipotetico".......18!! che fralaltro non è neppure detto....

Il discorso è che non solo in queste due prove mancava un ciclo for a esercizio, ma l'output non era neanche corretto!!!
Così come l'esercizio che hai postato tu, è corretto solo se la matrice del parametro formale è quadrata...altrimenti non "vede" le 'j' > A.length    ma nel testo che hai postato tu non c'era scritto che doveva essere quadrata...

cmq ok, spero almeno nel 18 .poverinoi

ciao


Title: Re:PROVA DI OGGI (26-01)
Post by: Mito on 26-01-2009, 14:05:22
rispondo a Mito.
si in effetti io nella seconda prova in itinere ho preso 18...un esercizio giusto e nell'altro mancava un ciclo for. praticamente ho rinunciato a un 18 per un "ipotetico".......18!! che fralaltro non è neppure detto...

Infatti io non ho detto che tu prenderai 18. Ho detto che se applica lo stesso criterio di valutazione della Prova in Itinere, credo che il voto si aggiri intorno al 18 per quel discorso dei "cicli for".

Ad essere sincero, quando l'ho fatta io mi aspettavo un voto >= 23 (caso limite); e invece...

Poi non so i testi della prova di oggi, quindi non saprei...   .whistling
Quote from: ciccio
Così come l'esercizio che hai postato tu, è corretto solo se la matrice del parametro formale è quadrata...altrimenti non "vede" le 'j' > A.length    ma nel testo che hai postato tu non c'era scritto che doveva essere quadrata...

Credo che non funzioni (o meglio "funziona" ma non del tutto) solo nel caso in cui la matrice è 2x3 (non controlla l'ultima colonna).

Il punto è: 10 punti in meno considerando che:

1) esercizio giusto al 99% (o giù di lì) e non si ha il compilatore davanti...  .penso
2) solo per il numero di cicli for...

Personalmente, non sono d'accordo sul criterio. Ormai però è andata. Ciao.


Title: Re:PROVA DI OGGI (26-01)
Post by: Fr3d3R!K on 26-01-2009, 14:10:07
sarebbe una bella pensata mettere pure i testi degli esercizi .wink .whistling
P.S. ma perchè invece di discuterne qui sui metodi di correzione (che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto) non chiedete lumi al professore stesso? mi sembra la soluzione migliore, lamentarsi qui sul forum (credo) non porti a molti risultati (il voto rimane lo stesso e voi rimanete col dubbio). Poi siete liberi di ignorare il mio consiglio ovviamente, consiglio dato quanto più amichevolmente possibile. Chiedete sempre quando non avete chiaro qualcosa! .wink
Saluti. .ciaociao


Title: Re:PROVA DI OGGI (26-01)
Post by: Mito on 26-01-2009, 14:12:20
sarebbe una bella pensata mettere pure i testi degli esercizi .wink .whistling
P.S. ma perchè invece di discuterne qui sui metodi di correzione (che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto) non chiedete lumi al professore stesso? mi sembra la soluzione migliore, lamentarsi qui sul forum (credo) non porti a molti risultati (il voto rimane lo stesso e voi rimanete col dubbio). Poi siete liberi di ignorare il mio consiglio ovviamente, consiglio dato quanto più amichevolmente possibile. Chiedete sempre quando non avete chiaro qualcosa! .wink
Saluti. .ciaociao

Nel mio caso, già fatto e risposta uguale (...numero di cicli for) a quanto scritto precedentemente (terzo post). .wink


Title: Re:PROVA DI OGGI (26-01)
Post by: fabliux on 26-01-2009, 14:24:47
sarebbe una bella pensata mettere pure i testi degli esercizi .wink .whistling
P.S. ma perchè invece di discuterne qui sui metodi di correzione (che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto) non chiedete lumi al professore stesso? mi sembra la soluzione migliore, lamentarsi qui sul forum (credo) non porti a molti risultati (il voto rimane lo stesso e voi rimanete col dubbio). Poi siete liberi di ignorare il mio consiglio ovviamente, consiglio dato quanto più amichevolmente possibile. Chiedete sempre quando non avete chiaro qualcosa! .wink
Saluti. .ciaociao

Eccoti qui il primo Fr3d3R!K

Code:
/*Scrivere un metodo che prenda in input due array bidimensionali A e B
di float delle stesse dimensioni nxm, e restituisca il numero di righe pesanti di A.
Una riga di r di A si dice pesante se contiene un numero pari di elementi ed esiste
una riga p in B tale che ogni elemento di posizione dispari di r è maggiore del successivo
elemento (di posizione pari) di p.
Es.: r = [4,7,2,9,18,7] e p = [12,3,2,1,19,17], r è pesante perchè 4>3, 2>1 e 18>17.*/


vedi se puoi aiutarmi te per questo esercizio.........................grazie mille  :-ciao


Title: Re:PROVA DI OGGI (26-01)
Post by: ciccio on 26-01-2009, 14:29:15
sarebbe una bella pensata mettere pure i testi degli esercizi .wink .whistling
P.S. ma perchè invece di discuterne qui sui metodi di correzione (che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto) non chiedete lumi al professore stesso? mi sembra la soluzione migliore, lamentarsi qui sul forum (credo) non porti a molti risultati (il voto rimane lo stesso e voi rimanete col dubbio). Poi siete liberi di ignorare il mio consiglio ovviamente, consiglio dato quanto più amichevolmente possibile. Chiedete sempre quando non avete chiaro qualcosa! .wink
Saluti. .ciaociao

hai perfettamente ragione Fr3d3R!K, accetto il tuo consiglio, il discorso è che non credo ci sia niente da chiedere al professore...che come dici tu
Quote
(che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto)
.

il professore è lui. penso che al massimo potrei chiedere maggiori spiegazioni sul metro di valutazione, ma il voto rimarrebbe quello...
grazie per la dritta comunque!  ciao


Title: Re:PROVA DI OGGI (26-01)
Post by: Vivynz on 26-01-2009, 15:05:58
ecco i miei...sembrano essere giusti all'apparenza ma sono sicura al 100% che adesso spunta qualche errore gravissimo che fa riscendere il voto in giù...spero di non aver buttato inutilmente il vecchio voto della prova in itinere  .smile
Code:
/*Scrivere un metodo che prenda in input due array bidimensionali A e B di float delle stesse
dimensioni nxm e restituisca il numero di colonne pesanti di A.Una colonna di A si dice pesante
se almeno il 50% dei suoi elementi è maggiore dei corrispondenti elementi presenti nella
corrispondente colonna di B*/
public class newEsercizio1
{
public static int colonnePesanti(float[][] A,float[][] B)
{
int pesanti=0;
int n=A.length;
int m=A[0].length;
for(int c=0;c<m;c++)
{
int cont=0;
for(int r=0;r<n;r++)
if(A[r][c]>B[r][c])
cont++;
if(cont>=A.length/2)
pesanti++;
}
return pesanti;
}
public static void main (String[] args)
{
float[][] A={{1,7,9,34},{43,25,16,89},{37,91,44,65},{13,67,48,59}};
float[][] B={{65,24,97,24},{56,74,24,67},{65,53,12,32},{4,6,2,3}};
System.out.println(colonnePesanti(A,B));
}
}

Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di stringhe,
e restituisca un boolean che indichi se esiste una stringa di A che sia una sottostringa di
un'altra stringa di A*/
public class newEsercizio2
{
public static boolean sottostringa(String[][] A)
{
for(int r=0;r<A.length;r++)
for(int c=0;c<A[r].length;c++)
for(int r1=0;r1<A.length;r1++)
for(int c1=0;c1<A[r1].length;c1++)
{
if((A[r][c].length()>=A[r1][c1].length())&&(r!=r1||c!=c1))
{
int h=0;
int cont=0;
boolean salta=false;
for(int k=0;k<A[r1][c1].length()&&!salta;k++)
{
boolean cambia=false;
while(h<A[r][c].length()&&!cambia&&!salta)
{
if(A[r1][c1].charAt(k)==A[r][c].charAt(h))
{
cont++;
cambia=true;
}
else
if(cont!=0)
salta=true;
h++;
}
}
if(cont==A[r1][c1].length())
return true;
}
}
return false;
}
public static void main (String[] args)
{
String[][] a={{"abcd","ef"},{"ghil","mno","pqxyzr","stuvz"},{"xyz"}};
System.out.println(sottostringa(a));
}
}


Title: Re:PROVA DI OGGI (26-01)
Post by: MisteroLupo on 26-01-2009, 17:40:18
Vivynz io avevo il tuo stesso compito e il primo esercizio l'ho fatto identico ma l'ho diviso in due metodi, un ciclo for per metodo.
Il secondo esercizio l'ho fatto più semplice. Ho chiesto all'assistente del prof. Cincotti quanti caratteri dovesse avere una substring e lui ha detto che può essere anche di un carattere. Quindi ho semplicemente cercato un carattere che occorre in due stringhe diverse..


Title: Re:PROVA DI OGGI (26-01)
Post by: Fr3d3R!K on 26-01-2009, 17:52:48
hai perfettamente ragione Fr3d3R!K, accetto il tuo consiglio, il discorso è che non credo ci sia niente da chiedere al professore...che come dici tu
Quote
(che a mio avviso dovrebbero invece essere prerogativa esclusiva del professore che in quanto tale può decidere se e come un esercizio sia corretto)
.
se non c'è nulla da chiedere non ci sono molti motivi che giustificano le lamentele, perchè non ci sono questioni da chiarire, non credi? .wink
Per quanto riguarda gli esercizi: appena ho 5 minuti li faccio entrambi e li posto, comunque il secondo è curioso come esercizio mentre il primo è molto semplice...
@MisteroLupo: non devi cercare un carattere, la sottostringa PUO' essere di un carattere (qualora la stringa che tu cerchi sia di un carattere), ma non è detto che sia così. Devi controllare che nella stessa struttura ci sia una stringa che è già contenuta in un'altra (sottostringa) ad esempio:
("abc","chn","..."...),("abcde",...) --> TRUE
Un metodo sarebbe cercare tutti i caratteri della prima stringa nella seconda, e restituire true se ci sono.


Title: Re:PROVA DI OGGI (26-01)
Post by: ciccio on 26-01-2009, 18:22:27
se non c'è nulla da chiedere non ci sono molti motivi che giustificano le lamentele, perchè non ci sono questioni da chiarire, non credi? .wink
Per quanto riguarda gli esercizi: appena ho 5 minuti li faccio entrambi e li posto, comunque il secondo è curioso come esercizio mentre il primo è molto semplice...

hehe... infatti Fr3d3R!K io non mi stavo lamentando, ho solo espresso il mio rammarico di non essere riuscito ad alzare il mio punteggio e addirittura di averlo messo a rischio. sono solo amareggiato per questo, non ho niente da chiarire (anche perchè se il prof ha una laurea e io no ci sarà un motivo... |-O), pur continuando a non gradire il suo metodo di correzzione...che non me ne voglia  :pray :pray:)(:
CIAO .ciaociao


Title: Re:PROVA DI OGGI (26-01)
Post by: MisteroLupo on 26-01-2009, 19:07:17
allora ho sbagliato di nuovo  .bah


Title: Re:PROVA DI OGGI (26-01)
Post by: Vivynz on 27-01-2009, 10:28:36
Quote
@MisteroLupo: non devi cercare un carattere, la sottostringa PUO' essere di un carattere (qualora la stringa che tu cerchi sia di un carattere), ma non è detto che sia così. Devi controllare che nella stessa struttura ci sia una stringa che è già contenuta in un'altra (sottostringa) ad esempio:
("abc","cde","..."...),("abcde",...) --> TRUE
Un metodo sarebbe cercare tutti i caratteri della prima stringa nella seconda, e restituire true se ci sono.
questo è quello che ho cercato di fare io  .smile


Title: Re:PROVA DI OGGI (26-01)
Post by: Fr3d3R!K on 27-01-2009, 11:10:48
ho modificato l'esempio sopra perchè è ambiguo, in quanto così sembrerebbe che tutte le stringhe di una riga debbano essere sottostringa della seconda e non è quello che il testo richiede.