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

Przy pomocy pętli wydrukuj na ekranie

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:

  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:

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:

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

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

System.out.println();

i chodzi.

1

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

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

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

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

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

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 ;)

#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
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:

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:

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

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

System.out.println();

i chodzi.

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

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?

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 :)

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