Skocz do zawartości

program w pascalu


Recommended Posts

Witam potrzabuję napisać program w pascalu który po pierwsze generował by mi tabliczke mnożenia w ładnych ramkach, a następnie po napisaniu np.: 2x2 aby podświetlał mi komórkę w tabelce zawierającą wynik, niestety nie wiem od czego zacząć... Sprawa pilna!!!

Link to post
Share on other sites

może powinieneś zacząć od tego:

uses crt;
var i,j:integer;
tab:array[1..10,1..10] of integer;

begin
clrscr;
for i:=1 to 10 do
  begin
     for j:=1 to 10 do
       begin
          tab[i,j]:=i*j;
           write(tab[i,j]:4);
       end;
    writeln;
  end;
readln;
end.

Dawno sie już niebawiłem od czasu liceum także mogą być delikatne błedy

Link to post
Share on other sites

Jeśli chodzi o rysowanie w pascalu, to chyba będziesz musiał wejść w jakąś bibliotekę graficzną, jak chociażby ncurses. Ostatnio grzebałem w pascalu jakieś 5 lat temu, albo i dalej, więc za dużo niestety nie pomogę od strony technicznej.

 

A tak w ogóle to ma być to aplikacja konsolowa, czy okienkowa?

Link to post
Share on other sites

To ma być aplikacja konsolowa, zapomniałem dodać...

narazie wydziubdałem coś takiego:

program tabliczka_mnozenia;
uses crt;
var
i,j:integer;
tab:array[1..10,1..10] of integer;

a, b:byte;
wyb:char;
label re;
begin
re:
repeat
clrscr;

for i:=1 to 10 do
  begin
     for j:=1 to 10 do
       begin
          tab[i,j]:=i*j;
           write(tab[i,j]:4);
       end;
    writeln;
  end;

  write('Podaj pierwsza liczbe: ');
  read(a);
  writeln;
  write('Podaj druga liczbe: ');
  read(b);
  If (a>10) or (b>10) or (a<=0) or (b<=0) then
  begin

   writeln('Za duze czynniki, przyjmuje liczby od 1 do 10');
   readln;
   readln;
   goto re
  end;
  writeln;
  write(tab[a,b]);
  writeln;
  Writeln('Czy chcesz zakonczyc program? (t/n lub T/N): ');
  read(wyb);
  readln;
  readln;
until (wyb='t') or (wyb='T');
halt;

end.
Nie jest to do końca to co trzeba: brak kilku funkcji (obramowanie oraz podświetlanie) i coś nie tak z pętlą (nie kończy programu po wciśnięciu t/T)...
Link to post
Share on other sites

Jeśli chodzi o tą pętlę na końcu, to chyba lepiej będzie zamiast niej zastosować warunek if. Wtedy powinno zadziałać. Pytasz przecież o jedną sytuację (aktualną) dotyczącą zamknięcia programu i ona się nie powtarza (chyba, że z kodu wyniknie inaczej)

Link to post
Share on other sites

@up: Próbowalem też if ale nie pomagało:d ale już wiem co tam było nie tak... Poprostu zmienną musiałem ustawić jako readkey, bo inne nie chcialy nadać wartości char...

Narazie jestem na takim poziomie nie jest to ukończone, ale już dosyć fajnie działa...

program tabliczka_mnozenia;
uses crt;
var
i,j:integer;
tab:array[1..10,1..10] of integer;

a, b:byte;
x,y, men:byte;   {x-kolor podświetlenia zaznaczonej komórki}{y- kolor tła tabelki}
o:char;

  procedure tabelka;                                        {wyswietlanie tabelki}
  begin
   clrscr;

   textbackground(y);
   if y=7 then textcolor(0);
   for i:=1 to 10 do
  begin


     for j:=1 to 10 do
       begin

          if (a=i) and (b=j) then
          begin
          textbackground(x);       {podswietlanie komorki}
          textcolor(15)
          end;
          tab[i,j]:=i*j;
           write('|',tab[i,j]:4,'|');
           textbackground(y);
           textcolor(0)
       end;                                                 {powrot do standartowego koloru}
    writeln;
  end;
   textbackground(0);
   textcolor(7);
   readln;
  end;
  procedure wstaw;                                              {wstaw liczby}
  begin
       write('Podaj pierwsza liczbe: ');
       read(a);
       writeln;
       write('Podaj druga liczbe: ');
       read(b);

  If (a>10) or (b>10) or (a<=0) or (b<=0) then
  begin

   writeln('Za duze czynniki, przyjmuje liczby od 1 do 10');
   tabelka;
   readln;
  end;
  end;

  procedure ustaw;                                              {wybor kolorow}
  begin
  writeln;        //to do: wypisac liste kolorow 0-7
  Writeln('Wybierz kolor wybranej komorki: ');
  read(x);
  writeln;
  Writeln('Wybierz kolor tla tabelki: ');
  read(y);
  writeln;
  Writeln('Gratuluje wyboru')
  end;

   procedure zakoncz;                                           {Wylanczanie}
  begin
   Writeln('Dowidzenia!!');
   delay(7000);
   halt
  end;

  procedure menu;                                               {menu}
  begin
    clrscr;
       WriteLn('Menu:');
 writeln(' 1. Wyswietl tabelke;');
 writeln(' 2. Podswietl wybrana liczbe;');
 writeln(' 3. Ustawienia;');
 writeln(' 4. Zakoncz');
 write('Twoj wybor [1-4]: ');
 readln(men);
  case (men) Of
   1 : tabelka;
   2 : wstaw;
   3 : ustaw;
   4 : zakoncz;
   else WriteLn('Nie wybrałeś niczego z listy :(');
  end; { Koniec instrukcji Case }

  end;

begin
   x:=4;
   y:=7;
   o:='0';
cursorbig;
repeat
menu;

until (o='t') or (o='T');

end.
Oceńcie to wg siebie czy jest dobrze i co przydało by się zmienić...
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...