- WEiTI M3 - 2007 http://www.m3.pun.pl/index.php - PRM http://www.m3.pun.pl/viewforum.php?id=15 - Laborka 4 http://www.m3.pun.pl/viewtopic.php?id=26 |
zordon - 2007-03-31 12:58:38 |
Rozwiazanie zadania z debuggerem na loborke (bez uzycia debuggera bo tylko przeszkadzal:P) Kod:/* Program przykladowa do testowania srodowiska uruchomieniowego na lab. z * PRM. Program zawiera bledy. Zadaniem jest wylapac bledy, a nastepnie * wywolac zalaczone funkcje wg instrukcji Prowadzacego. Dla ambitniejszych: * napisac funkcje rysLinia, ktora uogolnialaby wszystkie funkcje o nazwach * zaczynajacych sie od slowa <rys>. J. Arabas */ #include <stdio.h> #define MAXX 5 #define MAXY 10 #define PELNE '*' #define PUSTE '.' /* sprawdza, czy argument x jest zawarty w przedziale domknietym [min,max] wartosc zwracana: -1 jesli x<min 0 jesli min<=x<=max 1 jesli x>max */ /* signed */char pozaZak (int x, int min, int max) { if (x<min) return -1; //x<min byl tu blad if (x>max) return 1;//x>max byl tu blad return 0; } /* Wypelnia pionowa linie w tablicy ekran znakami PELNE. Polozenie poczatkowe kreslonej linii: px, py Linia zawiera nZnak znakow, jesli "wystawalaby" poza tablice, ta wartosc jest przycinana do rozmiarow tablicy */ void rysPion (char ekran[MAXX][MAXY], int px, int py, int nZnak) { int x,y; int i; for (x=px, y=py, i=0; i<=nZnak; i++) { if (pozaZak(x,0, MAXX-1)) return; if (pozaZak(y,0, MAXY-1)) return; ekran[x][y]=PELNE; y++;Poziom } } /* Wypelnia pozioma linie w tablicy ekran znakami PELNE. Polozenie poczatkowe kreslonej linii: px, py Linia zawiera nZnak znakow, jesli "wystawalaby" poza tablice, ta wartosc jest przycinana do rozmiarow tablicy */ void rysPoziom (char ekran[MAXX][MAXY], int px, int py, int nZnak) { int x,y; int i; for (x=px, y=py, i=0; i<=nZnak; i++) { if (pozaZak(x,0, MAXX-1)) return; if (pozaZak(y,0, MAXY-1)) return; ekran[x][y]=PELNE; x++; } } /* Wypelnia ukosna w lewo linie w tablicy ekran znakami PELNE. Polozenie poczatkowe kreslonej linii: px, py Linia zawiera nZnak znakow, jesli "wystawalaby" poza tablice, ta wartosc jest przycinana do rozmiarow tablicy */ void rysUkosL (char ekran[MAXX][MAXY], int px, int py, int nZnak) { int x,y; int i; for (x=px, y=py, i=0; i<=nZnak; i++) { if (pozaZak(x,0, MAXX-1)) return; if (pozaZak(y,0, MAXY-1)) return; ekran[x][y]=PELNE; x--; y++; } } /* Wypelnia ukosna w prawo linie w tablicy ekran znakami PELNE. Polozenie poczatkowe kreslonej linii: px, py Linia zawiera nZnak znakow, jesli "wystawalaby" poza tablice, ta wartosc jest przycinana do rozmiarow tablicy */ void rysUkosP (char ekran[MAXX][MAXY], int px, int py, int nZnak) { int x,y; int i; for (x=px, y=py, i=0; i<=nZnak; i++) { if (pozaZak(x,0, MAXX-1)) return; if (pozaZak(y,0, MAXY-1)) return; ekran[x][y]=PELNE; x++; y++; } } /* --> Napisac samodzielnie podczas laboratorium*/ /* --> Obsluzyc sytuacje, gdy px, dx<0 */ /* Wypelnia dowolna linie w tablicy ekran znakami PELNE. Polozenie poczatkowe kreslonej linii: px, py. Argumenty dx, dy definiuja kierunek kreslenia Linia zawiera nZnak znakow, jesli "wystawalaby" poza tablice, ta wartosc jest przycinana do rozmiarow tablicy */ void rysLinia (char ekran[MAXX][MAXY], int px, int py, int dx, int dy, int nZnak) { printf ("\n***\n napisz mnie! \n***\n"); } /* Rysuje zawartosc ekranu na standardowym wejsciu */ void rysEkran (char ekran[MAXX][MAXY]) { int x,y; for (y=0; y<MAXY; y++) { //klamerki (bład tu byl) for (x=0; x<MAXX; x++) printf("%c", ekran[x][y]); printf("\n"); } //klamerki (bład tu byl) } /* Wypelnia ekran znakami PUSTE */ void czyscEkran (char ekran[MAXX][MAXY]) { int x,y; for (y=0; y<MAXY; y++) for (x=0; x<MAXX; x++) ekran[x][y] = PUSTE; } int main() { char ekran[MAXX][MAXY]; czyscEkran(ekran); rysPion(ekran, 4,2,5); rysEkran(ekran); return 0; } |
martus - 2007-03-31 13:14:34 |
nie wiem, o co chodzi, czy któś może dokładnie wyjaśnić, na czym ma polegać ta laborka? |
zordon - 2007-03-31 13:19:09 |
Laborka polega na tym by znalezc bledy w kodzie programu przy pomocy debuggera (lub bez:P)! i w tym kodzie zrodlowym razem z omelem i rafalem znalezlismy te bledy co tu sa wskazane w komentarzach! Tyle ze jest to kod zrodlowy ze strony jarabasa! |
p@weł - 2007-03-31 21:27:29 |
ale pojebane :D |
omel - 2007-04-02 19:53:47 |
To jest link do strony z laborka numer 4: |
Wojtek - 2007-04-02 20:13:34 |
http://www.ire.pw.edu.pl/~cpsp/dz_dydak/prm/lab4.htm |
zordon - 2007-04-02 20:19:48 |
Jest taki pomysl zeby jutro zrobic ta laborke na tych okienkach co to je mamy :P! Ja wezme laptopa i zrobie razem z omelem wszystko w tym debbugerze! Mam linuxa na laptopie i ten debbuger ddd wiec jak ktos bedzie chcial to zostanie na tych okienkach i zrobimy ta laborke zeby nikt juz nie mial watpliwosci typu to jest pojebane :P |
p@weł - 2007-04-02 23:38:05 |
void rysLinia (char ekran[MAXX][MAXY], int px, int py, int dx, int dy, int nZnak) |
wmichal - 2007-04-03 03:18:37 |
Trochę późno ale jest. |