Pages: [1] 2   Go Down
Print
Author Topic: Esercizi Prova in itinere 17/12/09  (Read 3714 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
ubuntu_90
Matricola
*
Offline Offline

Gender: Male
Posts: 10



« on: 17-12-2009, 13:50:16 »

Posto il primo esercizio della prova in itinere:

- Es.01
Scrivere un metodo che prenda in input una matrice di byte, e restituisca un boolean che indichi se esistono in A due numeri distinti tali che uno sia multiplo dell'altro.

Scrivete i vostri metodi compreso di main, così da verificare la correttezza del programma. 
  Grazie anticipatamente 
Logged

Al mondo ci sono solo 10 tipi di persone: chi comprende il sistema binario e chi no!
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #1 on: 17-12-2009, 14:39:15 »

Ecco i miei esercizi:
Code:
public class ProvaInItinere
{
public static byte[][] Genera(int H, int W, byte minValue, byte maxValue)
{
byte[][] ret = new byte[H][W];

for (int y = 0; y < ret.length; y++)
for (int x = 0; x < ret[y].length; x++)
ret[y][x] = (byte)(minValue + (byte)(Math.random() * (maxValue - minValue + 1)));

return ret;
}

public static void Stampa(byte[][] m)
{
for (int y = 0; y < m.length; y++)
{
for (int x = 0; x < m[y].length; x++)
System.out.print(m[y][x] + "\t");

System.out.println("");
}
}

public static boolean Esercizio1(byte[][] A)
{
for (int i1 = 0;  i1 < A.length; i1++)
for (int j1 = 0; j1 < A[i1].length; j1++)
for (int i2 = 0;  i2 < A.length; i2++)
for (int j2 = 0; j2 < A[i2].length; j2++)
if (A[i1][j1] != A[i2][j2] &&
    A[i1][j1] % A[i2][j2] == 0)
{
System.out.println("("+j1+";"+i1+") - ("+j2+";"+i2+")");
return true;
}

return false;
}

public static String[][] Genera(int W, int H, int minLen, int maxLen, char minChar, char maxChar)
{
String[][] ret = new String[H][W];

for (int y = 0; y < ret.length; y++)
for (int x = 0; x < ret[y].length; x++)
{
final int randL = minLen + (int)(Math.random() * (maxLen - minLen + 1));
ret[y][x] = "";

for (int l = 0; l < randL; l++)
ret[y][x] += (char)(minChar + (char)(Math.random() * (maxChar - minChar + 1)));
}

return ret;
}

public static void Stampa(String[][] m)
{
int maxLen = 0;
for (int y = 0; y < m.length; y++)
for (int x = 0; x < m[y].length; x++)
if (m[y][x].length() > maxLen) maxLen = m[y][x].length();

for (int y = 0; y < m.length; y++)
{
for (int x = 0; x < m[y].length; x++)
{
System.out.print("\"" + m[y][x] + "\"");
for (int t = 0; t < maxLen - m[y][x].length(); t++) System.out.print(" ");
System.out.print("        ");
}

System.out.println("");
}
}

public static String[][] Esercizio2(String[][] S)
{
String[][] ret = new String[S.length][];

for (int y = 0; y < ret.length; y++)
{
ret[y] = new String[S[y].length];
for (int x = 0; x < ret[y].length; x++)
{
final int l = S[y][x].length();
if (l == 8) ret[y][x] = S[y][x].substring(0, l);
if (l > 8) ret[y][x] = S[y][x].substring(l - 8, l);
if (l < 8) ret[y][x] = Inserisci(S[y][x], 8 - l, '=');
}
}

return ret;
}

public static String Inserisci(String S, int n, char ch)
{
String ret = "";

for (int i = 0; i < n; i++)
ret += ch;

ret += S;
return ret;
}

public static void main(String[] args)
{
/*final byte[][] A = Genera(8, 8, (byte)1, (byte)127);

Stampa(A);
if (Esercizio1(A))
System.out.println("La matrice ha almeno due numeri multipli");
else
System.out.println("La matrice non ha nessuna coppia di numeri multipli");*/

final String[][] S = Genera(3, 3, 5, 12, 'A', 'Z');
Stampa(S);
System.out.println("\n------------------------------\n");
Stampa(Esercizio2(S));
}
}
crea un file .java e compilalo, è funzionante
 
Logged
stallclinton
Matricola
*
Offline Offline

Posts: 61


« Reply #2 on: 17-12-2009, 14:39:25 »

Code:
int a = 0;
int b = 0;
int division;
byte[] m= {10, 20, 2,6,12};
int n= m.length;

while(a < n){
b = 0;
while(b < n){
division = m[b]%m[a];
if(division == 0){ System.out.println(m[b]+" è un multiplo di "+m[a]); }
b++;
}
a++;
}

L'ho rifatto a casa in pochi minuti, ma sul foglio ho sbagliato, non riesco a gestire il codice con la penna Sad

@XDnl= non ci credo che hai scritto tutto quel codice con la penna, comunque chiedeva solo il metodo quindi parti dal fatto che hai già l'array.
« Last Edit: 17-12-2009, 14:43:43 by stallclinton » Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #3 on: 17-12-2009, 14:45:53 »

Infatti al compito ho scritto solo i metodi Esercizio1, Esercizio2 ed Inserisci!
Ma se non ho visto male è stato chiesto: "Scrivete i vostri metodi compreso di main, così da verificare la correttezza del programma. ". Quel codice l'ho scritto ora a casa, ed è privo di errori sintattici (spero anche logici  [Emoticon] Asd), cosi' da poter provare la correttezza del programma.
« Last Edit: 17-12-2009, 14:48:33 by XDnl » Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #4 on: 17-12-2009, 14:46:51 »

Per quelli che hanno fatto l'esame alle 10:30 com'erano i metodi?
Logged
stallclinton
Matricola
*
Offline Offline

Posts: 61


« Reply #5 on: 17-12-2009, 14:49:00 »

@XDnl: Scusa la critica ma c'è troppo codice :S
Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #6 on: 17-12-2009, 14:51:12 »

Ecco "il succo" del codice postato prima
Code:
public static boolean Esercizio1(byte[][] A)
{
for (int i1 = 0;  i1 < A.length; i1++)
for (int j1 = 0; j1 < A[i1].length; j1++)
for (int i2 = 0;  i2 < A.length; i2++)
for (int j2 = 0; j2 < A[i2].length; j2++)
if (A[i1][j1] != A[i2][j2] &&
   A[i1][j1] % A[i2][j2] == 0) return true;

return false;
}

public static String[][] Esercizio2(String[][] S)
{
String[][] ret = new String[S.length][];

for (int y = 0; y < ret.length; y++)
{
ret[y] = new String[S[y].length];
for (int x = 0; x < ret[y].length; x++)
{
final int l = S[y][x].length();
if (l == 8) ret[y][x] = S[y][x].substring(0, l);
if (l > 8) ret[y][x] = S[y][x].substring(l - 8, l);
if (l < 8) ret[y][x] = Inserisci(S[y][x], 8 - l, '=');
}
}

return ret;
}

public static String Inserisci(String S, int n, char ch)
{
String ret = "";

for (int i = 0; i < n; i++)
ret += ch;

ret += S;
return ret;
}
Tutto il resto serviva per generare matrici casuali (e per stamparle!)....
« Last Edit: 17-12-2009, 14:53:43 by XDnl » Logged
stallclinton
Matricola
*
Offline Offline

Posts: 61


« Reply #7 on: 17-12-2009, 14:56:30 »

Non so non mi quadra tantissimo, forse è l'approccio diverso.
Io sto imparando (migrando) ora Java e già mi sta antipatico, è troppo severo secondo me.
Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #8 on: 17-12-2009, 14:58:04 »

Da quale linguaggio "provenivi"?
Comunque nel codice che hai postato tu, hai dichiarato un array di byte e non una matrice.
Nel testo chiedeva di gestire una matrice di byte.
(Java mi fa innervosire un po' con i cast di tipo, è troppo "severo" come dici tu)
Quando ha detto il prof che avrebbe pubblicato i risultati? Ero distratto e non ho sentito  testate
« Last Edit: 17-12-2009, 15:13:30 by XDnl » Logged
stallclinton
Matricola
*
Offline Offline

Posts: 61


« Reply #9 on: 17-12-2009, 15:14:34 »

Php (Orientato agli oggetti) che è meno severo, sinceramente mi da' molte soddisfazioni, java era nato per il web ma tutti i siti che vedo prediligono altro e non Java (può darsi sia una mia impressione), certo è interessante la storia ma ripeto è troppo severo e macchinoso.

Ecco cosa non mi quadrava, gli array, praticamente doveva essere una cosa del tipo T[][] e non T[].
Comunque sono entrato in una forte confusione, poi il fatto di farlo a penna m'innervosisce.

Cosa buffa, sul compito non c'è scritto di farlo in JAVA.

ps dopo natale...
Logged
Dario2020
Matricola
*
Offline Offline

Posts: 51


« Reply #10 on: 17-12-2009, 15:52:24 »

Ciao ragazzi qualcuno mi sà dira com'era il secondo esercizio?
Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #11 on: 17-12-2009, 16:00:15 »

Quelli che hanno fatto l'esame delle 10:30 avevano questi metodi?


Code:
class Metodo1
{
public static boolean metodo(byte[][] A)
{
for(int i=0; i<A.length; i++)
for(int j=0; j<A[i].length; j++)
for(int h=0; h<A.length; h++)
for(int k=0; k<A[h].length; k++)
{
   if( (A[i][j] != A[h][k]) && (A[i][j]%A[h][k]==0) ) return true;
}
return false;
}

//MAIN
public static void main(String args[])
{
byte[][] A = {{11, 3, 13},
      {23, 19, 29},
      {31, 37, 6}};

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



Code:
class Metodo2
{
public static String[][] metodo(String[][] S)
{
String[][] C = new String[S.length][S[0].length];

for(int i=0; i<S.length; i++)
{
for(int j=0; j<S[i].length; j++)
{
String str="";

//CASO S[i][j].length() == 8

if(S[i][j].length()==8)   C[i][j]= S[i][j];

//CASO S[i][j].length() < 8

if(S[i][j].length()<8)

for(int a=0;  a<8-S[i][j].length(); a++){ str+='='; } str+= S[i][j]; C[i][j] = str;

//CASO S[i][j].length() > 8

if(S[i][j].length()>8) {str= S[i][j].substring(S[i][j].length()-8); C[i][j]= str;}
}

} return C;
}

//MAIN
public static void main(String args[])
{
String[][] S = {{"mele", "pere", "angurie"},
        {"mandarini", "limoni", "ciliegie"},
        {"albicocche", "ananas", "pesche"}};

String[][] C= metodo(S);
for(int a=0; a<C.length; a++)
{
System.out.print("\n");
for(int b=0; b<C[a].length; b++)
System.out.print(C[a][b]+"         \t");
}
}
}

Logged
stallclinton
Matricola
*
Offline Offline

Posts: 61


« Reply #12 on: 17-12-2009, 16:03:13 »

Scrivere un metodo che prenda in input una matrice S di stringhe, e restituisca una copia S' di S in cui ogni stringa di lunghezza x:
-Resta identica, se x = 8;
-Subisce l'inserimento a sinistra di (8-x) caratteri "=", se x < 8;
-Subisce l'eliminazione dei primi (x-8) caratteri, se x>8



---
Una domanda, se questa prova è andata male? che accade...
« Last Edit: 17-12-2009, 23:19:19 by stallclinton » Logged
ivantee
Guest
« Reply #13 on: 17-12-2009, 23:49:52 »

Quelli che hanno fatto l'esame delle 10:30 avevano questi metodi?

si esatto 
Logged
isuccia89
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 481



« Reply #14 on: 18-12-2009, 10:27:38 »

Una domanda, se questa prova è andata male? che accade...

niente... questa prova è stata fatta per togliere la prima parte d'esame... se va male la devi fare...
Logged

Se incontrerai qualcuno persuaso di saper tutto e di esser capace di far tutto non potrai sbagliare, costui è un imbecille! (Confucio)
Pages: [1] 2   Go Up
Print
Jump to: