[Algoritmi Java] sono alle prime armi

Pietripaoli
Salve ragazzi, ho da poco approcciato a questo linguaggio di programmazione e ho alcuni problemi su due algoritmi che credo siano semplici. Premetto che andrebbe svolto senza utilizzare array perché li presenta in capitoli successivi.
Primo:
Dato un numero naturale n, stampare un quadrato (solo il bordo) di asterischi di lato n.

Secondo:
Dato un numero naturale n, stampare un triangolo rettangolo (solo il bordo) di asterischi di lato n.

Finché si tratta di farli "pieni" ci riesco, mentre ho problemi a fare solo il bordo e lasciare gli spazi dentro.

Risposte
minomic
Ciao, prendiamo il caso del quadrato: se il tuo numero è $n$ allora per la prima e l'ultima riga (lato superiore e inferiore) stampi $n$ asterischi. Per le altre righe in mezzo (che sono $n-2$) stampi un asterisco, quindi $n-2$ spazi, quindi un altro asterisco. Prova a buttare giù un po' di codice.

Pietripaoli
Sono arrivato a questo punto:
...
int lato = 10;
for (int i=0; i for(int j=1; j if (i==0 || i== (lato-1))
System.out.print ("*");
if (j==0 || j== (lato-1))
System.out.print ("*");
}
System.out.println (" ");
}
...

cosi facendo mi viene una sorta di C... precisamente così:

* * * * * * * * * *
*
*
*
*
*
*
*
*
* * * * * * * * * *

minomic
Ciao, prova questo:

public static void main(String[] args) {
		
		int lato = 10;
		
		// lato superiore
		for(int i=0; i<lato; i++) System.out.print("*");
		// a capo
		System.out.println();
		// altre "righe"
		for(int i=0; i<lato-2; i++) {
			System.out.print("*");
			for(int j=0; j<lato-2; j++) System.out.print(" ");
			System.out.print("*");
			System.out.println();
		}
		
		// lato inferiore
		for(int i=0; i<lato; i++) System.out.print("*");

	}

Pietripaoli
mitico!

minomic
;)
Però hai capito come funziona?

Pietripaoli
sì grazie mille

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.