Wypełnianie tablicy dwuwymiarowej gwiazdkami

0

Cześć.

Jestem początkujący, programuję od około 2 tygodni. Postanowiłem napisać program, w którym użyję tablicy dwuwymiarowej, która będzie wypełniana gwiazdkami "*" w różny sposób. Udało mi się rozwikłać problem wypełnienia całej tablicy gwiazdkami, dzięki czemu otrzymuję kwadrat, udało mi się także wypełnić tablicę gwiazdkami otrzymując trójkąt(przekątna leci od lewego górnego rogu do prawego dolnego). Mam problem jak wypełnić tablice gwiazdkami aby powstał trójkąt(przekątna leci od prawego górnego rogu do lewego dolnego).

Proszę o jakąś wskazówkę. Poniżej kod:

 

import java.util.Scanner;

public class Gwiazdki {

	public static void main(String[] args) {		
		
		int x, y;
		Scanner odczyt = new Scanner(System.in);
		
		System.out.println("Podaj wymiary tablicy:");
		
		System.out.print("x: ");
		x = odczyt.nextInt();
		
		System.out.print("y: ");
		y = odczyt.nextInt();
		
		String[][] tab = new String[x][y];		
		
		for(int i=0; i<x; i++){
			for(int j=0; j<y; j++){
				
				tab[i][j] = "*";
				System.out.print(tab[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println();		
		
		for(int i=0; i<x; i++){
			for(int j=0; j<i+1; j++){
				
				
				System.out.print(tab[i][j] + " ");
			}
			System.out.println();			
		}
				
	}
} 
0

Jak ma lecieć od prawego górnego do prawego dolnego? Co to za przekątna?

0

Pomyliłem się, już poprawiłem treść pytania. Może pokażę na obrazku o co mi chodzi

1

No to mniej więcej jakaś taka pętla:

for(int i=0; i<x; i++){
    for(int j=0; j<y; j++){
        if(j < y - i - 1)
            System.out.print("  ");
        else
            System.out.print(tab[i][j] + " ");
    }
    System.out.println();
}
1
import java.util.Scanner;

public class Gwiazdki {

    public static void main(String[] args) {

        int x, y;
        Scanner odczyt = new Scanner(System.in);

        System.out.println("Podaj wymiary tablicy:");

        System.out.print("x: ");
        x = odczyt.nextInt();

        System.out.print("y: ");
        y = odczyt.nextInt();

        String[][] tab = new String[x][y];

        for(int i=0; i<x; i++){
            for(int j=0; j<y; j++){

                tab[i][j] = "*";
                System.out.print(tab[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println();

        for(int i=0; i<x; i++){
            for(int j=0; j<i+1; j++){


                System.out.print(tab[i][j] + " ");
            }
            System.out.println();
        }

        System.out.println("trzecia");

        for(int i=0; i<x; i++){
            for(int j=0; j<y - i; j++){
                System.out.print(tab[i][j] + " ");
            }
            System.out.println();
        }

    }
} 

Ok?

0

No właśnie nie, ale to też jest jedno z innych dobrych rozwiązań, ale z tego co widzę, to rozwiązanie może tkwić w odpowiednim sformułowaniu drugiej pętli for.

1 użytkowników online, w tym zalogowanych: 0, gości: 1