Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Parola diagonale

  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    Parola diagonale

    Ciao sono alle prime armi con java
    e sono incappata in un problema piuttosto semplice:
    scrivere un programma che legge da standard input una parola e la spampi in maiuscolo su diagonali parallele di 4 lettere ciscuna.
    es programmazione

    codice:
    P        R      A        N
        R        A       Z         E
            O        M     I
                 G        M        O

    Ho provato a sviluppare il tutto con il seguente codice:

    codice:
    public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            System.out.println("inserisci una parola");
            String f=sc.nextLine();
            int x=f.length();
            String q=f.toUpperCase();
            for(int d=0;d<4;d++){//riga
                for(int s=0;s<=d;s++) //colonna
                
                        System.out.print(" ");
                        System.out.println(q.charAt(d));
    
            }
        }
    }

    solo che mi stampa solo le prime 4 lettere parallele.
    Ringrazio tutti x la disponibilità
    Ultima modifica di LeleFT; 22-12-2014 a 13:57 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Infatti devi ragionarci un po' su... hai due for: il primo scorre le righe, il secondo (interno) scorre le colonne. Ora, sulla prima riga non hai le prime 4 lettere... hai la prima lettera, poi la quinta, poi la nona, ecc.. Quindi, il for più interno non deve semplicemente scorrere la stringa, ma deve andare a pescare le lettere in posizione d, d+4, d+8, ecc.

    Inoltre, devi tenere anche conto della spaziatura... la prima riga comincerà dalla colonna 0, la seconda dalla colonna 1, ecc.

    Una cosa semplice ma efficace che si può fare è costruire una matrice che costituirà l'intera "area di stampa" in cui, inizialmente, tutte le posizioni sono valorizzate a spazio... quindi andare a valorizzare ciascuna posizione con il carattere corretto. E solo infine mandare in stampa la matrice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.