Pages: [1] 2 3   Go Down
Print
Author Topic: PRIMA SOLUZIONE ALL'ESAME DI OGGI  (Read 7845 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« on: 07-04-2009, 12:55:49 »

Code:
public class one
  {
  public static boolean metodo(float [][]A)
    {
    float somma=0;
    float somma1=0;
    float somma2=0;
    float somma3=0;
    float perimetro=0;
    float max=0;
    int r=0;
    for(r=0;r<A.length;r++)
      {
      somma+=A[r][0];
      }
    for(int c=0;c<A[0].length;c++)
      {
      somma1+=A[0][c];
      }
    int c1=A[0].length-1;
    for(int r1=0;r1<A.length;r1++)
      {
      somma2+=A[r1][c1];
      }
    int r2=A.length-1;
    for(int c2=0;c2<A[0].length;c2++)
      {
      somma3+=A[r2][c2];
      }
    perimetro=somma1+somma2+somma3;
    for(r=0;r<A.length;r++)
      {
      for(int c=0;c<A[0].length;c++)
        {
        if(max<A[r][c])
          {
          max=A[r][c];
          }
        }
      }
    if(max==perimetro) return true;
    return false;
    }
         public static void main (String[]args)
  {
    int riga=3;
    int colonna=4;
    float m[][]= {   { 8,3,9,2},
                    { 1, 1,1,2},
                    { 1,1,1 ,1}

                  };
    int i,j;

    for(i=0;i<riga;i++)
      {
        System.out.println();
        for(j=0;j<colonna;j++)
          System.out.print(m[i][j]+" ");
      }

    System.out.println();

    System.out.println(metodo(m));
  }
}
io l'ho fatto cosi',ho sbagliato i " -1" e i numeri degli angoli li conto 2 volte
Logged

atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #1 on: 07-04-2009, 13:24:14 »

uffa si poteva fare cn 4 for  e io ne ho messi 6
Logged

TheUniversalMind
Forumista
***
Offline Offline

Gender: Male
Posts: 581



« Reply #2 on: 07-04-2009, 13:44:43 »

questo è il primo, io ho sbagliato nel dichiarare le variabili "somma" e "massimo" di tipo int. (come uno scemo, non mi sono reso conto che l'array era di float) spero proprio ke non mi vengano sottratti troppi punti

Code:
public class esercizio1esame
{
public static void main (String [] args)
{
float [][] A={{5,5,5,5,5},
      {5,1,300,1,5},
      {5,1,1,1,5},
      {5,5,5,5,5}};
     
System.out.println(metodo(A));
}

public static boolean metodo (float [][] A)
{
float somma=0;
float massimo=A[0][0];
for (int i=0;i<A.length;i++)
{
for (int j=0;j<A.length;j++)
{
if (i==0 || j==0)
{
somma+=A[i][j];
}
else if (i==A.length-1 || j==A.length-1)
{
somma+=A[i][j];
}

if (A[i][j]>massimo)
{
massimo=A[i][j];
if (massimo<somma)
{
return true;
}
}
}
}
return false;
}
}
Logged

Chuck Norris è riuscito a contare fino a \infty. Per ben due volte.
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #3 on: 07-04-2009, 13:59:15 »

questo è il primo, io ho sbagliato nel dichiarare le variabili "somma" e "massimo" di tipo int. (come uno scemo, non mi sono reso conto che l'array era di float) spero proprio ke non mi vengano sottratti troppi punti

Code:
public class esercizio1esame
{
public static void main (String [] args)
{
float [][] A={{5,5,5,5,5},
      {5,1,300,1,5},
      {5,1,1,1,5},
      {5,5,5,5,5}};
     
System.out.println(metodo(A));
}

public static boolean metodo (float [][] A)
{
float somma=0;
float massimo=A[0][0];
for (int i=0;i<A.length;i++)
{
for (int j=0;j<A.length;j++)
{
if (i==0 || j==0)
{
somma+=A[i][j];
}
else if (i==A.length-1 || j==A.length-1)
{
somma+=A[i][j];
}

if (A[i][j]>massimo)
{
massimo=A[i][j];
if (massimo<somma)
{
return true;
}
}
}
}
return false;
}
}

E siamo due gli scemi XD ora che leggo il tuo mi sono accorta che ho fatto lo stesso banale errore.
Comunque per il resto l'esercizio è quasi uguale al tuo, anche io ho usato due For 
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #4 on: 07-04-2009, 14:43:28 »

il secondo come lo avete fatto?
Logged

Serginho21
Guest
« Reply #5 on: 07-04-2009, 14:51:17 »

io ho usato 4 for per il primo
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #6 on: 07-04-2009, 14:52:55 »

il secondo è giusto cosi'?
Code:
public class esame2
  {
  public static int metodo(String S[][],String S1[][])
    {
   
for(j=0;j<S[i].length;j++)
  {
  i=0;
  car=S[i][j].charAt(S[i][j].length()-1);
   for(i=0;i<S.length;i++)
     {
     if(S[i].length<=j)
       else
     {
     if(S[i][j].charAt(S[i][j].length()-1)==car) vf=true;
       else
     {
     vf=false;
     break;
     }
   if(S1[i][j].charAt(S1[i][j].length()-1)==car) vf=true;
     else
   {
   vf=false;
   break;
   }
 }
}
}
if(vf==true)

  return j;
}
return -1;
}
}
Logged

djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #7 on: 07-04-2009, 15:10:58 »

Perché non postate il testo, così li risolvo pure io.
In un massimo di tre statement.
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #8 on: 07-04-2009, 15:23:07 »

Scrivere un metodo che dato un array di float in input,calcolare la somma degli elementi ke si trovano nel perimetro dell'array e confrontarlo col massimo elemento dell'array,se sono uguali return true altrimenti false. Era cosi' piu o meno
Logged

djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #9 on: 07-04-2009, 16:02:16 »

Ce l'ho fatta, ma me la sono vista brutta. Alla fine è un solo statement, il return.
Però ho dovuto usare il brutto trucchetto delle variabili locali in un array.
E' così confuso che non l'ho dovuto neppure offuscare ulteriormente.

Funziona, c'è anche il main per provarlo.
Code:
public class PerimetroEMassimo{
/*
 * Scrivere un metodo che dato una matrice di float in input, calcolare la somma degli elementi ke si trovano nel perimetro della matrice e confrontarla col massimo elemento della matrice, se sono uguali return true altrimenti false.
 */
  public static boolean perimetroUgualeAlMassimo(float[][] A,float...vars){
    return A.length==0||A[0].length==0?true:(vars.length==0)?perimetroUgualeAlMassimo(A,0,0,0,A[0][0]):(vars[0]==A.length)?(vars[2]==vars[3]):perimetroUgualeAlMassimo(A,vars[0]+(vars[1]==A[(int)vars[0]].length-1?1:0),vars[1]==A[(int)vars[0]].length-1?0:vars[1]+1,vars[2]+(vars[0]==0||vars[1]==0||vars[0]==A.length-1||vars[1]==A[(int)vars[0]].length-1?A[(int)vars[0]][(int)vars[1]]:0),Math.max(vars[3],A[(int)vars[0]][(int)vars[1]]));
  }
  public static void main(String[] args){
    System.out.println(perimetroUgualeAlMassimo(new float[][]{{1,1,1,1},{1,10,0,1},{1,1,1,1}}));
    System.out.println(perimetroUgualeAlMassimo(new float[][]{{2,2,2,2},{2,20,1,2},{2,2,2,2}}));
    System.out.println(perimetroUgualeAlMassimo(new float[][]{{1,1,1,1},{1,12,1,1},{1,1,1,1}}));
  }
}
Logged
TheUniversalMind
Forumista
***
Offline Offline

Gender: Male
Posts: 581



« Reply #10 on: 07-04-2009, 16:29:44 »

ho notato che quello fatto da me, ha qlke problemino, appena torno a casa, lo controllo.
questo è il secondo:
(alla fine, dove ho messo il "return" i;  a causa della fretta, non ho messo "cont==S.length", ma solo "cont==S.length"; per il resto mi sembra correttamente funzionante)
Code:
public class esercizio2esame
{
public static void main (String [] args)
{
String [][] S={{"ciccio","ashsah","asfhs"},{"pallo","weret"},{"orologio"}};
String [][] S1={{"asso","aassg","qweqq"},{"banco","wad"},{"tecnico"}};

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

public static int metodo (String [][] S,String [][] S1)
{
int cont=0;
for (int i=0;i<S.length;i++)
{
cont=0;
for (int j=0;j<S[i].length;j++)
{
for (int k=S[j][i].length()-1;k==S[j][i].length()-1;k++)
{
for (int z=S1[j][i].length()-1;z==S1[j][i].length()-1;z++)
{
if (S[j][i].charAt(k) == S1[j][i].charAt(z))
{
cont++;
if (cont==S[i].length)
{
return i;
}
}

}
}
}
}
return -1;

}
}
Logged

Chuck Norris è riuscito a contare fino a \infty. Per ben due volte.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #11 on: 07-04-2009, 17:17:22 »

ma il mio comè ?(secondo eser)
Logged

pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #12 on: 07-04-2009, 17:52:34 »

*Scrivere un metodo che prenda in input una matrica A di float,
e restituisca un boolean che indicihi se la somma degli elementi del perimetro di A
è maggiore del massimo in A.*/

class Esercizio1
{
   public static boolean metodo (float[][]A)
   {
      boolean ok=false;
      float max=0;
      float somma1=0;
      float somma2=0;
      float somma3=0;
      float somma4=0;
      float perimetro=0;
      
      for(int i=0; i<A.length; i++)
        for (int j=0; j<A[0].length; j++)
      {                                                           //trovo il massimo nella matrice//
         if(A[j]>max)             
            max=A[j];
      }
      System.out.println("Il massimo = "+max);
      
      
      // Scansiono la prima riga e ne sommo gli elementi
      for(int c2=0; c2<A[0].length; c2++)
           somma1+= A[0][c2];
      //Scansiono la prima colonna e ne sommo gli elementi
      for(int d2=1; d2<A.length; d2++)
           somma2+=A[d2][0];
                                                                  //Scansiono solamente il perimetro della matrice
      //Scansiono l'ultima riga e ne sommo gli elementi
      for(int e2=1; e2<A[0].length; e2++)
           somma3+=A[A.length-1][e2];
      //Scansiono l'ultima colonna e e ne sommo gli elementi
      for(int k2=1; k2<A.length-1; k2++)
           somma4+=A[k2][A[0].length-1];
      
      //Calcolo il perimetro sottraendo alle singole somme gli angoli della matrice (così calcolo correttamente il perimetro)
      perimetro=somma1+somma2+somma3+somma4;
      
      System.out.println(" Il Perimetro = "+perimetro);
      
      if(perimetro>max)
          ok=true;
     return ok;
   }
   
   
   
   
   public static void main (String [] args)
   {
      float [][] A={{2,2,2,1},
                {1,1,6,2},
                {2,1,1,2},
                {7,2,2,3}};
                 
      System.out.println(metodo(A));
   }
}
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #13 on: 07-04-2009, 18:02:36 »

anke io ho fatto cosi' se hai visto sopra,però dicono ke è meglio 4 for,ke ne pensi?
Logged

callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #14 on: 07-04-2009, 19:15:48 »

Code:
/*SCRIVERE UN METODO CHE PRENDA UNA MATRICE A DI FLOAT E RESTITUISCA UN BOOLEAN CHE INDICHI
SE LA SOMMA DEGLI ELEMENTI DEL PERIMETRO DI A E' MAGGIORE DEL MASSIMO ELEMENTO DI A*/
public class esercizio
{
  public static boolean metodo(float a [][])
  {
    float somma=0,h=0,verifica=0,altezza=0;
    float max=0,lato=0;
    for(int i=0;i<a.length;i++)
      for(int j=0;j<a[i].length;j++)
      {
        {
        if(a[i][j]>max)
          max=a[i][j];
        }
        if((i==0)||(i==a.length))//SE LA RIGA E' LA PRIMA O L'ULTIMA
          lato+=a[i][j];//FAMMI LA SOMMA DI TUTTI GLI ELEMENTI
        else
        if((j==0)||(j==a[0].length-1))
          {
          altezza+=a[i][j];
        }
      }
      verifica=lato+altezza;
      if(verifica>max)
      {
        System.out.println("il valore massimo e':"+max+ " mentre il perimetro e':"+verifica);
      return true;
      }
      return false;
  }
  public static void main(String args[])
{
float[][] A =  {  {1,1,2,1  },
                {38,2,34,1  },
                {4,3,2,1  },
                {1,1,0,1  }};
                 
    System.out.println(metodo(A));
  }
}

così è come l'ho fatto io dopo alcune modifiche apportate qui a casa visto che l'originale dava qualche erroruccio......(quindi suppongo di non essere passato ) vedete un pò che ve ne pare!
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Pages: [1] 2 3   Go Up
Print
Jump to: