Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Somma diagonali matrice

    Ciao a tutti, vorrei una mano per risolvere questo esercizietto

    Data una matrice quadrata, restituire un array che contiene la somma di tutte le diagonali della matrice.
    E' un po astruso per i miei gusti.

    int[] a = new int[m.length*2 - 1];

    Questo sarà l'array da restituire e m.length*2 - 1 è il numero di diagonali della matrice.
    Non postatemi la soluzione, aiutatemi solo a ragionare

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Somma diagonali matrice

    Originariamente inviato da Javino89
    Ciao a tutti, vorrei una mano per risolvere questo esercizietto

    Data una matrice quadrata, restituire un array che contiene la somma di tutte le diagonali della matrice.
    E' un po astruso per i miei gusti.

    int[] a = new int[m.length*2 - 1];

    Questo sarà l'array da restituire e m.length*2 - 1 è il numero di diagonali della matrice.
    Non postatemi la soluzione, aiutatemi solo a ragionare
    O ho capito male io o il calcolo per il numero delle diagonali è sbagliato... Una 2x2 ha 2 diagonali ma 2x2-1 fa 3, una 3x3 ha 6 diagonali ma 3x2-1 fa 5... la regola è un'altra e scrivendosi vari esempi è facilmente intuibile.

    Comunque ci sono vari modi per il calcolo, probabilmente tutti con due cicli annidati.
    Il primo modo che mi verrebbe in mente sarebbe ciclare sulle entrate della prima riga, e per ogni elemento eseguire un altro ciclo che si muova in diagonale fino alla fine. Poi fare la stessa cosa per la prima colonna, partendo ovviamente dal secondo elemento per non ripetere la stessa diagonale...
    Questo per fare le diagonali diciamo parallele a quella principale, poi quelle perprendicolari nello stesso modo...

    Ci potrebbero essere modi più efficienti e forse più semplici, è un modo come un altro.

  3. #3
    una 2x2 ha 3 diagonali..

    00 01

    10 11

    1) 10
    2) 00 11
    3) 01

    Ci vuole un ciclo per scorrere l'array da riempire con le somme, e almeno 2 cicli per scorrere la matrice per diagonali.

    Edit: oddio forse mi sto ingannando O.o spèèè

    Edit2: hai ragione, ho confuso le diagonali..

    Edit3: per ovviare al problema array posso creare una lista alla quale aggiungo le somme di ogni diagonale e poi trasportare gli elementi dalla lista all'array. Ovviamente è meno efficiente xD

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Javino89
    una 2x2 ha 3 diagonali..

    00 01

    10 11

    1) 10
    2) 00 11
    3) 01

    Ci vuole un ciclo per scorrere l'array da riempire con le somme, e almeno 2 cicli per scorrere la matrice per diagonali.

    Edit: oddio forse mi sto ingannando O.o spèèè

    Edit2: hai ragione, ho confuso le diagonali..

    Edit3: per ovviare al problema array posso creare una lista alla quale aggiungo le somme di ogni diagonale e poi trasportare gli elementi dalla lista all'array. Ovviamente è meno efficiente xD
    Ah beh se consideri diagonali anche gli elementi singoli il tuo conto è giusto, io contavo solo quelle di almeno due elementi.
    Se vuoi puoi anche usare un ciclo che scorra l'array dei risultati, ma non è necessario.

    EDIT: no usare una lista è inutile, visto che sai già la lunghezza del tuo array

  5. #5
    Lasciamo perdere un attimo questo conto. Devo sommare tutte le diagonali, quindi quelle sopra la principale e quelle sotto, più quelle perpendicolari. Mio dio t__t

    codice:
    .
    .
    .
    for(int i=0; i<m.length; i++)
    {
        for(int j=i+1, x=0; (j<m.length-1) && (x<m.length); j++, x++)
        {
    .
    .
    .
    potrebbe essere già qualcosa

    Devo ficcarci le somme parziali e metterle nell'array, e mi serve anche un indice per spostarmi nell'array t_t

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.