Przy pomocy pętli wydrukuj na ekranie

Wątek przeniesiony 2015-10-09 08:12 z Java przez bogdans.

0

Witam. Mam zadanie przed sobą, z którym walczę już kilka godzin. Generalnie napisałem kod, który w 80% spełnia treść zadania, lecz brakuje mi jednego elementu, bez którego nie mogę tego skończyć. Mógłbym wypisać 10 razy na konsole, ale to bez sensu. Treśc zadania brzmi :
Przy pomocy pętli wydrukuj na ekranie coś takiego:

1
11
111
1111
11111
111111
1111111
11111111
111111111
1111111111
Generalnie ma być to gwiazdeczka, ale coś tu nie działa, więc wrzucam jako 1.
Zadanie jest banalne, ale nigdzie nie mogę znalezć żadnego punktu zaczepienia.
Mój kod:

Kopiuj
  public static void main(String[] args) {
        // TODO code application logic here;
  
       
        for(int n = 1; n > 0; n--) 
        {
            System.out.print("*" + 6);
            for(int k = 0; k < 10;){
                System.out.println("*" );
                k++;
          
           
            }
        }

Każdy po spojrzeniu już wie, co wyświetli się na konsoli. Proszę o chociaż małą wskazówkę, bo dreczy mnie to banalne zadanie.

1

Kombinujesz całkiem dobrze. Potrzebujesz 2 pętle.
Następnie określasz poziom (powiedzmy wysokość = 10).
Następnie pierwszą pętle musisz wykonać 10 razy więc np:

Kopiuj
for(int i=0;i<wys;i++)

A drugą pętla iterujesz po wierszach więc każdy następny poziom (w zależności na którym jesteś) musisz rysować +1.
Więc powiedzmy tak:

Kopiuj
for(int j=0;j<n;j++)

A potem rysujesz. Po przejściu pętli z rekordami robisz "enter" czyli:

Kopiuj
System.out.println();

i chodzi.

1

Nie wiem jak ten kod spełnia 80% zadania.

Kopiuj
for(int n = 1; n > 0; n--)

Ta pętla jest bez sensu, bo działa dokładnie 1 raz.

Kopiuj
System.out.print("*" + 6);

Nie wiem co chciałeś osiągnąć, ale to wypisze gwiazdkę i 6.

Kopiuj
for(int k = 0; k < 10;){
    System.out.println("*" );

10 iteracji, za każdym razem wypisujesz jedną gwiazdkę.

Idea jest taka, że w każdej następnej iteracji masz wypisać coraz więcej gwiazdek. W pierwszej iteracji jedną, w drugiej dwie, itd.

0

Rok temu na święta w szkole robiliśmy coś podobnego w C++.
Generalnie od wprowadzonej liczby zależał poziom rysowanej choinki, cały kod rysuje choinkę 2-stronną , przeanalizuj, system działania jest prosty, przerzuć go na jave i tyle
mam nadzieję ze pomogłem ;)

Kopiuj
#include<cstdlib>
#include<iostream>
#include<conio.h>
using namespace std;

	int g = 0;
	int x = 0;
	
void ch( int w )
{
	int p, q;
	for ( p = 0; p < w; p++ ) cout << " ";
	for ( q = 1; q < g + x; q++ ) cout << "*";
	cout << endl;
	g++;
	x++;
	if ( w > 0 ) ch( w - 1 );
}
int main()
{
	int w;
	cout << "Program: Choinka" << endl;
	cout << "Podaj wielkosc choinki: ";
	cin >> w;
	ch( w );
	getch();
	g = 0;
	x = 0;
	main();
	return 1;
}
1
Kopiuj
int main(){
    cout << "Program: Choinka" << endl;
    cout << "Podaj wielkosc choinki: ";
    int w;
    cin >> w;
    
    string str = "*";
    
    for(int i=0;i<w;i++){
        for(int j=(w-i);j>0;j--)
            cout<<" ";
        cout<<str<<endl;
        str+="**";
        
    }   
    return 0;
}

int main()

Napisalem tak, niby dziala i bardziej przejrzyscie;)

1
eL napisał(a):

Kombinujesz całkiem dobrze. Potrzebujesz 2 pętle.
Następnie określasz poziom (powiedzmy wysokość = 10).
Następnie pierwszą pętle musisz wykonać 10 razy więc np:

Kopiuj
for(int i=0;i<wys;i++)

A drugą pętla iterujesz po wierszach więc każdy następny poziom (w zależności na którym jesteś) musisz rysować +1.
Więc powiedzmy tak:

Kopiuj
for(int j=0;j<n;j++)

A potem rysujesz. Po przejściu pętli z rekordami robisz "enter" czyli:

Kopiuj
System.out.println();

i chodzi.

W drugiej pętli w której rysujesz powinno być:

Kopiuj
for(int j=0; j<=i; j++)
0

Tak mnie zastanawia, czy choinki w ASCII robione nie w pętlach, ale na streamach by przeszły na zajęciach?

2

Po co dwie pętle?

Kopiuj
public static void main(String[] args)
{
     String s = "*";
     for(int i=0;i<10;i++)
     {
          System.out.println(s);
          s+="*";
     }
}
0

Po siedziałem i wyszło :)

for (int n = 0; n <= 10; n++) {

        for (int k = 0; k < n; k++) {

            System.out.print("*");

        }
        System.out.println("");
    }

Działa wszystko bez zarzutu :)
Dzięki wszystkim za pomoc :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.