Program już był kilka razy wałkowany, podobno było to jedno z zadań. Program pokazuje zmniejszającą się ramkę, wystarczy usunąć IFa aby uzyskać pełny prostokąt. Napisany przez Mariusza. Funkcje gotoxy można wyrzucić w wersji dla Windows (wtedy dodaj conio.h)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <iostream> #include <stdlib.h> #include <time.h> #define MAX 120 using namespace std; int gotoxy(int x, int y) { char essq[MAX]={0}; sprintf(essq, "\033[%d;%df", y,x); printf("%s", essq); return 0; } void zmniejsz (int x1, int y1, int x2, int y2) { int i,j,z; char znak; for (z=0; (z<y2-z-y1) && (z<x2-z-x1) ;z++){ system("clear"); for(j=y1+z; j<y2-z; j++) { gotoxy(x1+z,j); for(i=x1+z; i<x2-z; i++) { if((j==y1+z) || (j==y2-z-1) || (i==x1+z) || (i==x2-z-1)) //wyrzuc dla prostokata cout << "*"; else cout << " "; } } znak=getchar(); } } main () { int x1,x2,y1,y2; do { do { printf("Podaj wspolrzedne lewej gornej krawedzi: \n"); cout << "\t" << "x = "; cin >> x1; cout << "\t" << "y = "; cin >> y1; if ( (x1<=0) || (y1<=0) ) cout << "Bledne dane."; }while ( (x1<=0) || (y1<=0) ); do { printf("Podaj wspolrzedne prawej dolnej krawedzi: \n"); cout << "\t" << "x = "; cin >> x2; cout << "\t" << "y = "; cin >> y2; if ( (x2<=0) || (y2<=0) ) cout << "Bledne dane."; } while ( (x2<=0) || (y2<=0) ) ; if ((x1>=x2) || ( y1>=y2)) cout << "Bledne dane." << endl; } while ( (x1>=x2) || (y1>=y2) ); getchar(); zmniejsz(x1,y1,x2,y2); } |


Wpisy (RSS)