Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ma sbaglio o l'array bidimensionale viene riempito "verticalmente" e non "orizzontalmente"?
    Non sbagli, a livello programmatico potrebbe essere inteso in quel modo se per "verticalmente" intendi il fatto che la matrice sia definita (e letta) scorrendola prima per il primo indice e quindi per il secondo.
    Non farti però trarre in inganno; presumo sia stato impostato in questo modo per un motivo ben preciso: facendo riferimento alla struttura indicata dall'immagine, il primo indice identifica le colonne, mentre il secondo identifica le righe.
    Se ci riferissimo ad un sistema cartesiano, puoi notare che i due indici corrisponderebbero agli assi [x][y], che vengono convenzionalmente indicati proprio in questo preciso ordine per l'identificazione delle coordinate.
    Nel tuo caso il sistema è costituito da [colonna][riga]. Il primo indice fa quindi riferimento agli elementi, letti in orizzontale, da sinistra verso destra (cioè la posizione delle colonne per ogni singola riga) mentre, il secondo, fa riferimento alle righe, lette quindi in verticale, dall'alto verso il basso (cioè la posizione delle righe).
    Se ne deduce che per ottenere questa lettura sia necessario scorrere la matrice prima per il primo indice e quindi per il secondo.

    Come si inserisce quindi nei giusti punti il carattere di bordo riquadro "|" e poi si va a capo?
    Nel tuo caso, considera che i due indici della matrice fanno riferimento alle posizioni dei singoli spazi contenuti all'interno della cornice. La struttura in output occupa uno spazio complessivo 10x10, compresi i caratteri che costituiscono la cornice stessa, per cui il contenuto (rappresentato dall'array) è una matrice 8x8; considerando quindi che campo[0][0] costituisce il primo carattere "spazio", all'interno della cornice, nell'angolo in alto a sinistra.

    I caratteri che costituiscono la cornice non stanno quindi dentro l'array campo (o field o quel che è), in cui sono invece definiti solo i caratteri contenuti all'interno del riquadro (come già detto), ma il bordo, e relativi ritorno a capo, sono man mano aggiunti alla stringa output attraverso i vari cicli, andando sempre a costruirla da sinistra verso destra e dall'alto verso il basso.

    Spero sia più chiaro adesso, o quantomeno spero di non averti confuso maggiormente le idee
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Non sbagli, a livello programmatico potrebbe essere inteso in quel modo se per "verticalmente" intendi il fatto che la matrice sia definita (e letta) scorrendola prima per il primo indice e quindi per il secondo.
    Non farti però trarre in inganno; presumo sia stato impostato in questo modo per un motivo ben preciso: facendo riferimento alla struttura indicata dall'immagine, il primo indice identifica le colonne, mentre il secondo identifica le righe.
    Se ci riferissimo ad un sistema cartesiano, puoi notare che i due indici corrisponderebbero agli assi [x][y], che vengono convenzionalmente indicati proprio in questo preciso ordine per l'identificazione delle coordinate.
    Nel tuo caso il sistema è costituito da [colonna][riga]. Il primo indice fa quindi riferimento agli elementi, letti in orizzontale, da sinistra verso destra (cioè la posizione delle colonne per ogni singola riga) mentre, il secondo, fa riferimento alle righe, lette quindi in verticale, dall'alto verso il basso (cioè la posizione delle righe).
    Se ne deduce che per ottenere questa lettura sia necessario scorrere la matrice prima per il primo indice e quindi per il secondo.


    Nel tuo caso, considera che i due indici della matrice fanno riferimento alle posizioni dei singoli spazi contenuti all'interno della cornice. La struttura in output occupa uno spazio complessivo 10x10, compresi i caratteri che costituiscono la cornice stessa, per cui il contenuto (rappresentato dall'array) è una matrice 8x8; considerando quindi che campo[0][0] costituisce il primo carattere "spazio", all'interno della cornice, nell'angolo in alto a sinistra.

    I caratteri che costituiscono la cornice non stanno quindi dentro l'array campo (o field o quel che è), in cui sono invece definiti solo i caratteri contenuti all'interno del riquadro (come già detto), ma il bordo, e relativi ritorno a capo, sono man mano aggiunti alla stringa output attraverso i vari cicli, andando sempre a costruirla da sinistra verso destra e dall'alto verso il basso.

    Spero sia più chiaro adesso, o quantomeno spero di non averti confuso maggiormente le idee


    Ma quindi non é una regola generale che la prima coppia di parentesi rappresenta l indice di riga e la seconda coppia l indice di colonna?

    Grazie

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da pianca90 Visualizza il messaggio
    Ma quindi non é una regola generale che la prima coppia di parentesi rappresenta l indice di riga e la seconda coppia l indice di colonna?
    Negli array multi-dimensionali, l'accesso espresso con array[a][b][c] ..... [n] l'indice a è la prima dimensione, b è la seconda dimensione, ecc...
    Nel caso di array bidimensionali (2 dimensioni), quindi l'indice a è la "riga" e l'indice b è la "colonna". A due dimensioni è così ed è anche facile da pensare. Per più dimensioni, è chiaramente più difficile immaginare idealmente la struttura. A 3 dimensioni è un "cubo" di dati, a 4 è .... un array di cubi (o un cubo di array ;P ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Nel caso di array bidimensionali (2 dimensioni), quindi l'indice a è la "riga" e l'indice b è la "colonna".

    Non sembra essere così però nel problema da me postato....eppure l'esercizio viene eseguito correttamente.


    Andbin riesci a dare una motivazione per questo?


    Grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    E il bello è che funziona anche invertendo gli indici i e j all'interno dei cicli....anzi, secondo me è così che dovrebbe funzionare...solo così...

  6. #6
    La risposta è questa:
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Nel tuo caso, considera che i due indici della matrice fanno riferimento alle posizioni dei singoli spazi contenuti all'interno della cornice. La struttura in output occupa uno spazio complessivo 10x10, compresi i caratteri che costituiscono la cornice stessa, per cui il contenuto (rappresentato dall'array) è una matrice 8x8; considerando quindi che campo[0][0] costituisce il primo carattere "spazio", all'interno della cornice, nell'angolo in alto a sinistra.

    I caratteri che costituiscono la cornice non stanno quindi dentro l'array campo (o field o quel che è), in cui sono invece definiti solo i caratteri contenuti all'interno del riquadro (come già detto), ma il bordo, e relativi ritorno a capo, sono man mano aggiunti alla stringa output attraverso i vari cicli, andando sempre a costruirla da sinistra verso destra e dall'alto verso il basso.
    Prova a rendere il contenuto leggibile, es:
    codice:
    int c = 47;
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++)
            campo[i][j] = (char) ++c;
    }
    e ad invertire gli indici (non dappertutto, ovviamente)

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Quote Originariamente inviata da andy_concept Visualizza il messaggio
    La risposta è questa:


    Prova a rendere il contenuto leggibile, es:
    codice:
    int c = 47;
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++)
            campo[i][j] = (char) ++c;
    }
    e ad invertire gli indici (non dappertutto, ovviamente)
    Già fatto...e come puoi leggere sopra funziona ugualmente...

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.