gogo3000 136 Napisano 19 Października 2010 Udostępnij Napisano 19 Października 2010 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!!! Cytuj Link to post Share on other sites
Dementor 269 Napisano 19 Października 2010 Udostępnij Napisano 19 Października 2010 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 Cytuj Link to post Share on other sites
gogo3000 136 Napisano 19 Października 2010 Autor Udostępnij Napisano 19 Października 2010 To jest dobre, tylko nie wiem jak zrobić obramowanie oraz podświetlenie konkretnej komórki. Wie moze ktoś jak na to poradzić? Cytuj Link to post Share on other sites
mosiek 4 Napisano 19 Października 2010 Udostępnij Napisano 19 Października 2010 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? Cytuj Link to post Share on other sites
gogo3000 136 Napisano 19 Października 2010 Autor Udostępnij Napisano 19 Października 2010 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)... Cytuj Link to post Share on other sites
Gość kubajka Napisano 19 Października 2010 Udostępnij Napisano 19 Października 2010 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) Cytuj Link to post Share on other sites
gogo3000 136 Napisano 20 Października 2010 Autor Udostępnij Napisano 20 Października 2010 @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ć... Cytuj Link to post Share on other sites
mosiek 4 Napisano 21 Października 2010 Udostępnij Napisano 21 Października 2010 Działa, jest git, więcej IMO do takiego prostego programu nie trzeba Gdyby ktoś chciał przetestować, to tu jest link do skompilowanej binarki http://www.onlinecompiler.net/userfiles/IR67qni9.exe Swoją drogą, fajna strona http://www.onlinecompiler.net/ Cytuj Link to post Share on other sites
gogo3000 136 Napisano 23 Października 2010 Autor Udostępnij Napisano 23 Października 2010 A jakieś błędy ukryte udało się znaleźć? Cytuj Link to post Share on other sites
Recommended Posts
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ą.