Pages: [1] 2   Go Down
Print
Author Topic: Altro Esercizio prima parte  (Read 2983 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« on: 09-02-2009, 10:55:26 »

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.*/

public class Gioca {
    public static void main (String[]args) {
        float [][] A = {{4, 7, 2, 9, 18, 7},
                         {0, 0, 0, 0, 0, 0},
                         {0, 0, 0, 0, 0, 0},
                         {0, 0, 0, 0, 0, 0},
                         {0, 0, 0, 0, 0, 0},
                         {0, 0, 0, 0, 0, 0}};
                         
        float [][] B = {{12, 3, 2, 1, 19, 17},
                         {12, 3, 2, 1, 19, 17},
                         {54, 66, 67, 85, 90, 99},
                         {99, 81, 81, 62, 88, 87},
                         {99, 80, 80, 62, 88, 87},
                         {99, 80, 80, 62, 88, 87}};
        System.out.println (metodo (A,B));
    }

static int metodo (float [][]A, float [][]B) {
    int pesanti=0;
    int n=A.length;
    int m=A[0].length;
    if (n % 2 == 0) {
         for (int c=0; c<m; c+=c+2) {
            int cont=0;
             for (int r=0; r<n; r++)
        if (A[r][c]>B[r][c+1])
            cont++;
   if (cont>=A.length/2)
    pesanti++;
   }
  }
  return pesanti;
 }
}

Mi sono fermata al contare quanti elementi della riga sono maggiori di quelli nella riga B, non capisco perchè invece di 3 me ne conta 2.. testate Sapete dirmi dove sbaglio?Grazie in anticipo.

EDIT:Ho modificato il codice perchè ho risolto il problema e ne è sorto un altro  mi ritorna zero nonostante c'è una riga pesante.
« Last Edit: 09-02-2009, 13:37:44 by ShiShi » Logged
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #1 on: 09-02-2009, 16:13:04 »

Nessuno ha idea di che errore può esserci?  testate
Logged
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #2 on: 10-02-2009, 10:17:10 »

for (int c=0; c<m; c+=c+2)

c+=c+2 significa c = c + (c+2)

quindi avrai:
1° for:
c=0 ==> colonna 0

2° for
c = 0+ (0+2) ==> colonna 2

3° for
c ora vale 2 ==> c = 2+ (2+2) ==> colonna 6

Così salti la colonna 4 che è pari!


Devi cambiarlo scrivendo:
c += 2

che equivale a

c = c+2

Smiley
Logged

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

Gender: Female
Posts: 256



« Reply #3 on: 10-02-2009, 16:57:04 »

Riguardavo il codice, contavo le colonne e non mi accorgevo dell'errore...ti ringrazo perchè per una stupidata stavo uscendo pazza 
Tra l'altro mi sono accorta che c'era un altro errore oltre a quello che mi hi fatto notare.
Posto l'esercizio ormai corretto nel caso servisse a qualcun altro 

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.*/

public class Gioca {
    public static void main (String[]args) {
        float [][] A = {{4, 7, 2, 9, 18, 7},
                         {4, 7, 2, 9, 18, 7},
                         {4, 7, 2, 9, 18, 7},
                         {0, 0, 0, 0, 0, 0},
                         {0, 0, 0, 0, 0, 0},
                         {4, 7, 2, 9, 18, 7}};
                         
        float [][] B = {{12, 3, 2, 1, 19, 17},
                         {12, 3, 2, 1, 19, 17},
                         {54, 66, 67, 85, 90, 99},
                         {99, 81, 81, 62, 88, 87},
                         {99, 80, 80, 62, 88, 87},
                         {12, 3, 2, 1, 19, 17}};
        System.out.println (metodo (A,B));
    }

static int metodo (float [][]A, float [][]B) {
    int pesanti=0;
    int n=A.length;
    int m=A[0].length;
    if (n % 2 == 0) {
        for (int r=0; r<n; r++) {
            int cont=0;
             for (int c=0; c<m; c+=2)
        if (A[r][c]>B[r][c+1])
            cont++;
   if (cont==A.length/2)
    pesanti++;
   }
  }
  return pesanti;
 }
}
Logged
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #4 on: 11-02-2009, 21:00:51 »

speriamo di superarla sta prova dei metodi Sad
Logged

zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #5 on: 11-02-2009, 23:33:15 »

speriamo di superarla sta prova dei metodi Sad

Speriamo di superarla sta prova di laboratorio 
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #6 on: 12-02-2009, 00:51:04 »

prima metodi e poi laboratorio  univ
Logged

zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #7 on: 12-02-2009, 01:25:51 »

prima metodi e poi laboratorio  univ

Beh io metodi l'ho già passato, mi aspetta il laboratorio gg 25!! Speriamo bene!  pc
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #8 on: 12-02-2009, 13:11:55 »

mi daresti una mano coi metodi? testate
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #9 on: 12-02-2009, 13:17:38 »

postate sul forum che ci sono tantissime persone che possono dare una mano!
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.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #10 on: 12-02-2009, 13:37:38 »

mi daresti una mano coi metodi? testate

Chiedi e ti sarà risposto  boh
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #11 on: 12-02-2009, 13:40:35 »

Chiedi e ti sarà risposto  boh
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.
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #12 on: 20-02-2009, 11:10:59 »

Ho svolto questo esercizio e credo sia giusto, il mio dubbio è se per colonna i-esima si intende una colonna a piacere scelta appunto con l'indice i.  boh

Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe ed un
indice i, e restituisca una copia S’ di S in cui ogni stringa presente nella colonna i-esima è stata
modificata scambiando il quinto carattere con l’ultimo, rispettivamente.*/

public class GiustoPrimo {
   public static void main (String[]args) {
      String[][]A = {{"palla", "pallCaaK", "palla"},
                        {"palla", "pallTH"},
                        {"palla", "pallUaaaaJ", "palla"}};
                A=metodo (A);
                for (int i=0; i<A.length; i++)
                   for (int j=0; j<A[i].length; j++)
            System.out.print (A[i][j]+"|");
        }

public static String[][] metodo (String[][]A) {
int h=1;
    if (A.length>=h)
     for (int r=0; r<A.length; r++)
        A[r][h] = metodo2 (A[r][h]);
        return A;
    }

public static String metodo2 (String A) {
    String tmp2="";
    String tmp="";
    char quinto= A.charAt(4);
    char ultimo= A.charAt(A.length()-1);
        for (int i=0; i<4; i++)
            tmp+= A.charAt(i);
        for (int j=5; j<A.length()-1; j++)
             tmp2+=A.charAt(j);
             tmp2+= quinto;
        tmp2 = tmp+ultimo+tmp2;
       return tmp2;
   }
}

Un altro dubbio è con questo testo
Code:
/*Scrivere un metodo che prenda come parametri formali due array di long D e V
della stessa dimensione e restituisca in output un array bidimensionale S
in cui la i-esima riga ha D[i] colonne ed ogni colonna contiene i corrispondenti
valori memorizzati in V. (N.B.: Si inizializzi S colonna dopo colonna).*/

non capisco..i due array D e V sono ad una dimensione no?E l'array bidimensionale S che restituisce come ha le righe?
Logged
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #13 on: 20-02-2009, 11:57:43 »

Allora....

Quote
Ho svolto questo esercizio e credo sia giusto, il mio dubbio è se per colonna i-esima si intende una colonna a piacere scelta appunto con l'indice i.  boh

per quanto riguarda il primo esercizio credo che tu abbia sbagliato qualcosina:

1)Il metodo deve prendere in input un array bidimensionale di stringhe ed un indice i, quindi la sua intestazione dovrebbe essere
Code:
public static String [][] metodo (String [][] A, int h);
per il resto è quasi corretto (ovvero ad ogni stringa della colonna h esegui metodo 2), ma devi anche stare attenta che l'indice h non sfori per ogni riga... quindi devi tramutare quel controllo
Code:
if(A.length >= h)
in
if(A[r].length >h)
ed eseguirlo ad ogni riga, ed oltretutto il testo richiede una copia dunque devi creare un copia di A

2)Su metodo2 si potrebbe ridire qualcosina, ad esempio:
 perchè ti crei due stringhe temporanee?
Potresti semplicemente utilizzare il metodo della classe String
Code:
cha[] toCharArray()
ed effettuare un mero scambio di indici (cioè semplicemente scambi la quinta posizione con l'ultima e viceversa).
In questo modo ti eviti quei for in metodo2

Quote
Un altro dubbio è con questo testo


/*Scrivere un metodo che prenda come parametri formali due array di long D e V
della stessa dimensione e restituisca in output un array bidimensionale S
in cui la i-esima riga ha D colonne ed ogni colonna contiene i corrispondenti
valori memorizzati in V. (N.B.: Si inizializzi S colonna dopo colonna).*/


non capisco..i due array D e V sono ad una dimensione no?E l'array bidimensionale S che restituisce come ha le righe?

Se la riga i-esima ha tante colonne quanto è il valore memorizzato in  D alla pos. i, mi sembra ovvio che le righe di S devono essere tante quanto la lunghezza di D.
 

Buono studio e fammi sapere!
Ciao
Dario
« Last Edit: 20-02-2009, 12:05:42 by Root » Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #14 on: 21-02-2009, 12:37:14 »

Code:
cha[] toCharArray()
Ho cercato di non usare il metodo della classe String. Spesso il prof vieta l'uso di alcuni metodi e così mi sto abituando a trovare prima l'alternativa. Grazie per l'aiuto e la spiegazione del secondo esercizio 
Logged
Pages: [1] 2   Go Up
Print
Jump to: