Figury geometryczne w TP

0

Witam!
Na forum jestem nowy, więc proszę o wyrozumiałość.
Mam do napisania w sumie pięć programów w Turbo Pascalu. Mają to być figury geometryczne.

  1. Kwadrat o boku 5, "niezamalowany", ma być narysowany przy pomocy gwiazdek (*).
  2. Prostokąt o bokach 5 i 6, też "niezamalowany" i też ma się składać z *.
  3. Trójkąt prostokątny, obojętnie jakie wymiary, "niezamalowany" i składający się z *.
  4. Trzy trójkąty równoramienne o obojętnych wymiarach układające się w kształt choinki, ma być "zamalowana" i też z *.
  5. Trojkąt równoramienny o obojętnych wymiarach, "zamalowany", z *.

Z tym "zamalowanym" i "niezamalowanym" chyba kumacie o co chodzi (wypełniony i niewypełniony).
Mam w tym celu użyć poznanych dotąd instrukcji (if, case of, pętla for).
Nie oczekuję od Was całego kodu, lecz proszę o wytłumaczenie mi, jak ma to mniej więcej wyglądać.
Z góry dzięki za pomoc i pozdrawiam.

0
  1. Kwadrat o boku 5, "niezamalowany", ma być narysowany przy pomocy gwiazdek (*).
*****
*   *    <-- musiałem trochę skrócić, aby to wyglądało, jak kwadrat
*****
  1. Prostokąt o bokach 5 i 6, też "niezamalowany" i też ma się składać z *.
*****
*   *
*   *
*   *
*   *
*   *
*****
  1. Trójkąt prostokątny, obojętnie jakie wymiary, "niezamalowany" i składający się z *.
*
**
* *
*   *
*    *
*******
  1. Trzy trójkąty równoramienne o obojętnych wymiarach układające się w kształt choinki, ma być "zamalowana" i też z *.
     **
    ****
   ******
  ********
     **
    ****
   ******
  ********
 **********
     **
    ****
   ******
  ********
 **********
************
  1. Trojkąt równoramienny o obojętnych wymiarach, "zamalowany", z *.
    **
   ****
  ******
 ********
**********

To jakoś tak powinno wyglądać :D

A tak na serio:
Programik do prostokąta (nudzi mi się, więc ten masz [green] ):

Program NudziMiSie;
Var Szer, Wys, X, Y, I, Temp: Integer;
Begin
 Write('Szerokosc --> ');
 ReadLn(Szer);
 Write('Wysokosc --> ');
 ReadLn(Wys);
 Temp := Wys;
 Wys  := Szer;
 Szer := Temp;
 For X := 1 To Szer Do
 Begin
  For Y := 1 To Wys Do
  Begin
   if ((X = 1) Or (X = Szer)) Or (Y = 1) Then
    Write('*');
   if (Y = Wys) And ((X <> 1) And (X <> Szer)) Then
   Begin
    For I := 1 To Wys-2 Do
     Write(' ');
    Write('*');
   End;
   End;
  WriteLn;
 End;
 ReadLn;
End.

A teraz do kwadratu:

Program NudziMiSie;
Var Szer, X, Y, I, Temp: Integer;
Begin
 Write('Bok -->');
 ReadLn(Szer);
 For X := 1 To Szer Do
 Begin
  For Y := 1 To Szer Do
  Begin
   if ((X = 1) Or (X = Szer)) Or (Y = 1) Then
    Write('*');
   if (Y = Szer) And ((X <> 1) And (X <> Szer)) Then
   Begin
    For I := 1 To Szer-2 Do
     Write(' ');
    Write('*');
   End;
   End;
  WriteLn;
 End;
 ReadLn;
End.

Nie chciało mi się pisać objaśnień, ale kod jest oryginalny (wow, porywające 5 minut pisania :D ).
Sprawdzone pod Delphi ;)

A skoro trójkąt o obojętnie jakich wymiarach, to masz:

Program Trojkat;
Begin
 WriteLn('    **');
 WriteLn('   ****');
 WriteLn('  ******');
 WriteLn(' ********');
 WriteLn('**********');
 ReadLn;
End;

To mój pierwszy taki długi post...

0

Patryk27
Dzięki wielkie!

Jakbyście jeszcze powiedzieli, jak napisać pozostałe programy, byłbym strasznie wdzięczny.
Pozdrawiam.

0

Myśląc moim tokiem myślenia:
'dowolne wymiary', więc:
Zadanie 3:

Program Zadanie3;
Begin
 WriteLn('*');
 WriteLn('**');
 WriteLn('* *');
 WriteLn('*   *');
 WriteLn('*    *');
 WriteLn('*******');
 ReadLn;
End.


Program Zadanie4;
Begin
 WriteLn('     **');
 WriteLn('    ****');
 WriteLn('   ******');
 WriteLn('  ********');
 WriteLn('     **');
 WriteLn('    ****');
 WriteLn('   ******');
 WriteLn('  ********');
 WriteLn(' **********');
 WriteLn('     **');
 WriteLn('    ****');
 WriteLn('   ******');
 WriteLn('  ********'); 
 WriteLn(' **********');
 WriteLn('************');
 ReadLn;
End.


Program Zadanie5;
Begin
 WriteLn('    **');
 WriteLn('   ****');
 WriteLn('  ******');
 WriteLn(' ********');
 WriteLn('**********');
 ReadLn;
End.

Ale wątpię...
Chociaż zadanie wykonane poprawnie ;)
No, ponieważ: figury zostaną narysowane, a i będą miały 'dowolne' wymiary :D

0

Patryk27
Niestety, ale te programy muszą zostać napisane z użyciem instrukcji wymienionych wcześniej. Więc Twój tok myślenia jest błędny, aczkolwiek dzięki za pomoc.

0

Przecież te zadania nie są takie trudne. Wystarczy tylko chwilę pomyśleć. A ja i tak znowu się dziwię dlaczego wybrałeś taką uczelnie
czy kierunek gdzie będziesz musiał mieć do czynienia z programowaniem, skoro nie ogarniasz tematu. I jeżeli sobie z tym zaliczeniem
nie radzisz to takie rzeczy trzeba zlecić w dziale Offtopic - Praca, a ktoś zrobi całość za Ciebie - za opłatą. I ten kod jest jak widać w
Delphi, bo nie używam FreePascala, a stary TP ma toporną klawiszologie do edytowania, lecz i pod nim poniższy kod się skompiluje.

ZAD 4:

program modo_zad4;

{$APPTYPE CONSOLE}

function WysrodkujSpacjami(Tekst : string; Maksimum : Byte) : string;
var
  I : Byte;
  S : string;
begin
  S := '';
  for I := 1 to Maksimum - Length(Tekst) div 2 do
    S := S + #32;
  WysrodkujSpacjami := S + Tekst;
end;

const
  Ile_Linii = 3;
  Ile_Choinek = 3;
var
  S : string;
  I, X : Byte;
begin
  S := '';
  for I := 1 to Ile_Choinek do
  begin
    for X := 1 to Ile_Linii do
    begin
      S := S + '**';
      Writeln(WysrodkujSpacjami(S, Ile_Linii));
    end;
    S := '';
  end;
  Readln;
end.

ZAD 5:

program modo_zad5;

{$APPTYPE CONSOLE}

function WysrodkujSpacjami(Tekst : string; Maksimum : Byte) : string;
var
  I : Byte;
  S : string;
begin
  S := '';
  for I := 1 to Maksimum - Length(Tekst) div 2 do
    S := S + #32;
  WysrodkujSpacjami := S + Tekst;
end;

const
  Ile_Linii = 5;
var
  I : Byte;
  S : string;
begin
  S := '';
  for I := 1 to Ile_Linii do
  begin
    S := S + '**';
    Writeln(WysrodkujSpacjami(S, Ile_Linii));
  end;
  Readln;
end.

I tak wiem. Miałem nie odwalać roboty za leniuchów, ale też mialem chwilę czasu, no i tym sposobem zaliczenie odbębnione. Przy następnym znowu
za Ciebie trzeba będzie pisać, a Ty po skończeniu tej uczelni pewnie będziesz się uwaząl za zajebistego programistę i informatyka od wszystkiego ;/

0

Uczęszczam do Technikum Informatycznego, do pierwszej klasy (tak tak, jestem jeszcze młody). Z programowaniem spotkałem się dopiero w tej szkole. Poszedłem tam po to, by się tego programowania nauczyć.
Pech chciał, że przez 2 tygodnie byłem nieobecny na lekcjach, na których nauczyciel te instrukcje tłumaczył. Przyszedłem po nieobecności ciemny jak tabaka w nocy, toteż moja prośba o wyjaśnienie.

Mimo małego nieporozumienia dziękuję za okazywaną pomoc.
Pozdrawiam.

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