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

Trójkąt w Pascalu.

Object Storage Arubacloud
0 głosów
336 wizyt
pytanie zadane 9 stycznia 2017 w Inne języki przez Bind Nowicjusz (150 p.)

Cześć wszystkim! smiley

Pisząc mały programik, napotkałem pewien problem... Program ma "narysować" niewypełniony trójkąt. Ma on mieć tyle wierszy, ile wynosi liczba podana przez użytkownika. Mój problem polega na tym, że nie mogę dobrać odpowiednich warunków, które by go rysowały.

Np. dla N = 7, całość prezentuje się tak:
------*
-----* *
----**  *
---***   *
--****    *
-*****     *
*************

Jak widać, połowa trójkąta nadal pozostaje wypełniona. Czy warunki których użyłem są w porządku? A może sposób w jaki zabrałem się za program jest zły?

Poniżej wklejam kod źródłowy.

program Project1;

var i, j, k, n : byte;

begin
  write('Podaj N: ');
  readln(n);

  for i:=1 to n do
  begin
    for j:=n-i downto 1 do write('-');
    for k:=i*2-1 downto 1 do
      begin
        if (k=1) or (k>i) or (i=n) then write('*')
        else write(' ');
      end;
  writeln;
  end;

  readln;
end.

 

komentarz 9 stycznia 2017 przez Kolboch Bywalec (2,320 p.)
(k>i) <----- ten fragment odpowiada za drukowanie gwiazdek do połowy. Spróbuj naprawić :)
komentarz 9 stycznia 2017 przez Bind Nowicjusz (150 p.)

Nie mogę wpaść na nic sensownego. frown Mogę liczyć na jeszcze jakąś podpowiedź? smiley

1 odpowiedź

+1 głos
odpowiedź 10 stycznia 2017 przez Kolboch Bywalec (2,320 p.)
wybrane 10 stycznia 2017 przez Bind
 
Najlepsza

Na przyszłość analizuj szczegółowo co się dzieje w kodzie. Testuj i szukaj. Wyjątkowo pokaże gdzie miałeś błąd żebyś się nie zraził do programowania.

 

program Project1;
 
var i, j, k, n : byte;
 
begin
  write('Podaj N: ');
  readln(n);
 
  for i:=1 to n do
  begin
    for j:=n-i downto 1 do write('-');
    for k:=i*2-1 downto 1 do
      begin
        if (k = i*2 - 1) or (k = 1) or (i=n) then write('*')
        else write(' ');
      end;
  writeln;
  end;
 
  readln;
end.

Kluczowy był wspomniany już przeze mnie w komentarzu warunek K > i, który nie ma sensu bo nie chcesz drukować wszystkich gwiazdek tak długo jak K > i ale tylko pierwszą '*' dlatego drukujesz ją gdy k ma wartość początkową, czyli przypisane przez Cb i*2 - 1.
Przeanalizuj jeszcze raz i dokładnie wyłap błąd który miałeś !

komentarz 10 stycznia 2017 przez Bind Nowicjusz (150 p.)

Szkoda, że dopiero teraz ten problem wydaje się banalnie prosty. No nic, czeka mnie jeszcze dużo pracy... Bardzo dziękuję za pomoc i jak będę mógł, to chętnie się odwdzięczę. smiley Pozdrawiam. smiley

Podobne pytania

0 głosów
1 odpowiedź 410 wizyt
0 głosów
3 odpowiedzi 352 wizyt
pytanie zadane 14 marca 2016 w Inne języki przez Ann98 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 1 listopada 2015 w Inne języki przez UnnamedOcean Nowicjusz (170 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...