• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie wzoru z gwiazdek w konsoli przeglądarki za pomocą pętli zagnieżdżonych

VPS Starter Arubacloud
0 głosów
1,760 wizyt
pytanie zadane 6 lutego 2017 w JavaScript przez svyatogor92 Użytkownik (670 p.)

Witajcie,

Na kurs JS mam do wykonania na jutro pewne zadanie i nie wiem jak sobie z nim poradzić, oto polecenie:

Napisz program rysujący na podstawie wartości zmiennej n następujący schemat (tutaj dla n = 5):

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

Użyj do tego pętli zagnieżdżonych, a w wewnętrznej pętli dodaj if sprawdzający odpowiedni warunek (jeżeli i + j jest nieparzyste, to ma być gwiazdka).

 

Pomożecie? :)

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)

Bardzo klarownie jest napisane co trzeba zrobić w celu wyświetlenia tego 'rysunku'. Czego nie rozumiesz w tym opisie ?

Użyj do tego pętli zagnieżdżonych, a w wewnętrznej pętli dodaj if sprawdzający odpowiedni warunek (jeżeli i + j jest nieparzyste, to ma być gwiazdka).

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)

Na podstawie polecenia zrobiłem coś takiego:

var n = 5;
var sum = i+j;

for(i = 0; i <= 5; i++) {
  for(j = 0; j <= 5; j++){
    if(sum % 2 == 0) {
    console.log("*");
    } else {
    console.log(" ");
  }
  }
}

i konsola chrome wywala błąd: zadanie5.js:2 Uncaught ReferenceError: i is not defined at zadanie5.js:2

i nie wiem dlaczego.

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)

Zgubiłeś słowo kluczowe var przed i = 0; i j = 0;. Nie wiem również dlaczego definiujesz sum poza pętlą a nie w pętli. Kolejny problem z tym kodem jest taki iż console.log wyświetla za każdym razem znak nowej linij. Aby to naprawić można albo najpierw stworzysz ciąg reprezentujący jedną linijkę i dopiero użyć console.log albo użyć czegoś innego niż console.log.

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)
nie no koniecznie musi być console.log.

Jak stworzyć taki ciąg reprezentujący jedną linijkę?
komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)

zmodyfikowałem:

var n = 5;

for(var i = 0; i <= n; i++) {
  for(var j = 0; j <= n; j++){
    var sum = i+j;
    if(sum % 2 == 0) {
    console.log("*");
    } else {
    console.log(" ");
    }
  }
}

Konsola wyrzuca teraz:

*
zadanie5.js:9  
zadanie5.js:7 *
2zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
2zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
2zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
2zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
2zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *
zadanie5.js:9  
zadanie5.js:7 *

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)
edycja 6 lutego 2017 przez vector
for(i = 0; i <= n; i++) {
  var line = "";
  for(j = 0; j <= n; j++){
    if(sum % 2 == 0) {
      line += "*";
    } else {
      line += " ";
    }
  }
  console.log(line);
}

Specjalnie zostawiłem poprzednie błędy abyś mógł je samodzielnie poprawić. Takie małe ćwiczenie.

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)
var n = 5;

for(var i = 0; i <= 5; i++) {
  var line = "";
  for(var j = 0; j <= 5; j++){
    var sum = i+j;
    if(sum % 2 == 0) {
      line += "*";
    } else {
      line += " ";
    }
  }
  console.log(line);
}

Konsola daje:


zadanie5.js:13 * * *
zadanie5.js:13  * * *
zadanie5.js:13 * * *
zadanie5.js:13  * * *
zadanie5.js:13 * * *
zadanie5.js:13  * * *

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)

Hint: Zastanów się ile razy wykonuje się pętle w zależności od n.

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)

No tyle razy jaką wartość ma n, czyli:

var n = 5;

for(var i = 0; i <= n; i++) {
  var line = "";
  for(var j = 0; j <= n; j++){
    var sum = i+j;
    if(sum % 2 == 0) {
      line += "*";
    } else {
      line += " ";
    }
  }
  console.log(line);
}

ale to nadal daje:

zadanie5.js:13 * * * 
zadanie5.js:13  * * *
zadanie5.js:13 * * * 
zadanie5.js:13  * * *
zadanie5.js:13 * * * 
zadanie5.js:13  * * *

Czyli nie tylko jedną linię za dużo, ale także w pierwszej, trzeciej i piątej o jedną * za dużo na początku.

 

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)

No tyle razy jaką wartość ma n

tylko jedną linię za dużo 

No czyli jednak nie tyle razy jaką wartość ma n 

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)

Ach rozumiem- chodzi o to, że dla i <= n i n = 5 wykonuje się 6 razy bo od 0 do 5.
Poprawiłem:

var n = 5;

for(var i = 0; i < n; i++) {
  var line = "";
  for(var j = 0; j < n; j++){
    var sum = i+j;
    if(sum % 2 == 0) {
      line += " ";
    } else {
      line += "*";
    }
  }
  console.log(line);
}

Z tym, że jak pewnie widzisz zamieniłem if (sum % 2 == 0) {line += "*"} na {line += "*"}, czyli teraz dla sum parzystej jest puste pole a dla nie parzystej jest *, czyli odwrotnie niż w poleceniu prawda?

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)

zawsze możesz zmienić numerację i tudzież j na [1, 2, ..., n].

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)

Chodzi o:

var n = 5;
 
for(var i = 0; i < =n; i--) {
  var line = "";
  for(var j = 0; j < =n; j--){
    var sum = i+j;
    if(sum % 2 == 0) {
      line += " ";
    } else {
      line += "*";
    }
  }
  console.log(line);
}

aby zmienić numeracje i oraz j?

1
komentarz 6 lutego 2017 przez vector Dyskutant (9,200 p.)
for(var i = 1; i <= n; i++) {
  var line = "";
  for(var j = 0; j < n; j++){

lub

for(var i = 0; i < n; i++) {
  var line = "";
  for(var j = 1; j <= n; j++){

 

komentarz 6 lutego 2017 przez svyatogor92 Użytkownik (670 p.)
Teraz wszystko działa :)
Dziekuję Ci bardzo! :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
4 odpowiedzi 2,476 wizyt
pytanie zadane 20 lipca 2015 w C i C++ przez Decol Użytkownik (560 p.)
0 głosów
2 odpowiedzi 150 wizyt
pytanie zadane 15 lipca 2015 w PHP przez DL TD Nałogowiec (36,710 p.)
0 głosów
1 odpowiedź 294 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...