"Все сообщения пользователя kate&lena"
Страницы: 1
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:27 Сообщение № |
Код на С++. Выделение и высвобождение памяти для двумерного и трехмерного массивов. #include <conio.h> #include <stdio.h> #include <malloc.h> #include <stdlib.h> int ***B; int **VA21; //----------creates an array-------------------------- void Alloc(int size1,int size2,int size3) { int i,j,k; VA21=(int**)malloc(size2*sizeof(int)); for(i=0; i<size2; i++) VA21[i]=(int*)malloc(size2*sizeof(int)); B=(int***)malloc(size1*sizeof(int)); for(i=0; i<size1; i++) B[i]=(int**)malloc(size2*sizeof(int)); for(j=0; j<size2; j++) for(k=0; k<size3; k++) B[j][k]=(int*)malloc(size3*sizeof(int)); } //----------delete an array-------------------------- void FreeMemory(int size1,int size2,int size3) { int i,j,k; for(j=size2-1;j>0;j--) for(k=size3-1;k>0;k--) free(B[j][k]); for(i=size1-1;i>0;i--) free(B[i]); for(i=0; i<size2; i++) free(VA21[i]); free(B); free(VA21); } |
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:23 Сообщение № |
[B]Код на С++ для выделения и высвобождения памяти для одно-, дву-, трех- мерных массивов #include <conio.h> #include <stdio.h> #include <malloc.h> #include <stdlib.h> int *V; int ***B; int **VA21; //----------creates an array(выделение памяти)-------------------------- void Alloc(int size1,int size2,int size3) { int i,j,k; V=(int*)malloc(size1*size2*size3*sizeof(int)); //одномерный массив VA21=(int**)malloc(size2*sizeof(int)); //двумерный массив for(i=0; i<size2; i++) VA21[i]=(int*)malloc(size2*sizeof(int)); B=(int***)malloc(size1*sizeof(int)); //трехмерный массив for(i=0; i<size1; i++) B[i]=(int**)malloc(size2*sizeof(int)); for(j=0; j<size2; j++) for(k=0; k<size3; k++) B[j][k]=(int*)malloc(size3*sizeof(int)); } //----------delete an array(высвобождение памяти)-------------------------- void FreeMemory(int size1,int size2,int size3) { int i,j,k; for(j=size2-1;j>0;j--) for(k=size3-1;k>0;k--) free(B[j][k]); for(i=size1-1;i>0;i--) free(B[i]); for(i=0; i<size2; i++) free(VA21[i]); free(V); free(B); free(VA21); } |
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:44 Сообщение № |
Необходимо написать класс для работы с графикой. Создать иерархию классов, описывающие точку, линию, прямоугольник, окружность, полином и функцию для перемещения фигур (с помощью клавиш "влево", "вправо" и т.д.). В итоге должна получиться перемещающаяся фигура - ЛАЙНЕР. |
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:46 Сообщение № |
Код на С++ #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream.h> //------------------------POINT------------------------------------------- class Point{ protected: int x, y; public: Point(); virtual void show(); virtual void hide(); virtual void move(int x, int y); }; Point::Point() { x = getmaxx()/2; y = getmaxy()/2; } void Point::show() { putpixel( x, y, WHITE); putpixel( x+1, y, WHITE); putpixel( x, y+1, WHITE); putpixel( x+1, y+1, WHITE); } void Point::hide() { putpixel( x, y, BLACK); putpixel( x+1, y, BLACK); putpixel( x, y+1, BLACK); putpixel( x+1, y+1, BLACK); } void Point::move(int x, int y) { hide(); this-> x += x; this-> y += y; show(); } //-------------------------LINIA------------------------------------------ class Linia:virtual public Point { protected: int dx, dy; public: void show(); void hide(); }; void Linia::show() { setcolor(WHITE); line( x, y, x+30, y+30); } void Linia::hide() { setcolor(BLACK); line( x, y, x+30, y+30); } //------------------------ARC--------------------------------------------- class Korpus:virtual public Linia { public: void show(); void hide(); }; void Korpus::show() { setcolor(WHITE); moveto(x,y); lineto(x,y-20); lineto(x+100,y-20); lineto(x+110,y-30); lineto(x+170,y-30); lineto(x+140,y); lineto(x,y); moveto(x+40,y-20); lineto(x+40,y-30); lineto(x+40,y-40); lineto(x+130,y-40); lineto(x+130,y-30); setcolor(DARKGRAY); line(x+100,y-50,x+100,y-100); setcolor(DARKGRAY); moveto(x+170,y-30); lineto(x+100,y-100); lineto(x,y-20); } void Korpus::hide() { setcolor(BLACK); moveto(x,y); lineto(x,y-20); lineto(x+100,y-20); lineto(x+110,y-30); lineto(x+170,y-30); lineto(x+140,y); lineto(x,y); moveto(x+40,y-20); lineto(x+40,y-30); lineto(x+40,y-40); lineto(x+130,y-40); lineto(x+130,y-30); line(x+100,y-50,x+100,y-100); moveto(x+170,y-30); lineto(x+100,y-100); lineto(x,y-20); } //-------------------------CIRCLE------------------------------------------ class Circle:virtual public Linia { public: void show(); void hide(); }; void Circle::show() { setfillstyle(SOLID_FILL,YELLOW); setcolor(YELLOW) ; pieslice(x+120,y-20,0,360,5); pieslice(x+140,y-20,0,360,5); circle(x+120,y-20,5); circle(x+140,y-20,5); } void Circle::hide() { setfillstyle(SOLID_FILL, BLACK); setcolor(BLACK); pieslice(x+120,y-20,0,360,5); pieslice(x+140,y-20,0,360,5); circle(x+120,y-20,5); circle(x+140,y-20,5); } //------------------------RECTANGLE-------------------------------------- class Rectangle:virtual public Linia { public: void show(); void hide(); }; void Rectangle::show() { setcolor(WHITE); rectangle(x+80,y-40,x+110,y-50); rectangle(x+70,y-40,x+80,y-70); } void Rectangle::hide() { setcolor(BLACK); rectangle(x+80,y-40,x+110,y-50); rectangle(x+70,y-40,x+80,y-70); } //--------------------------TITANIC------------------------------------------- class Titanic:virtual public Korpus,Circle,Rectangle { public: void show(); void hide(); }; void Titanic::show() { Korpus::show(); Circle::show(); Rectangle::show(); } void Titanic::hide() { Korpus::hide(); Circle::hide(); Rectangle::hide(); } void move_object(Point *p) { char c; setbkcolor(BLACK); clrscr(); cleardevice(); p->move(0,0); cout <<"-ESC- to exit"; while(c!=27) { c = getch(); switch(c) { case 75: p->move(-5,0); break; case 72: p->move(0,-5); break; case 77: p->move(5,0); break; case 80: p->move(0,5); break; default: break; } } } void menu() { int c; while(c!=7) { printf("MENU:\n"); cout << " -1- TOCHKA" << endl; cout << " -2- LINIA" << endl; cout << " -3- TRUBI" << endl; cout << " -4- ILLIUMINATORI" << endl; cout << " -5- KORPUS" << endl; cout << " -6- KORABLI" << endl; cout << " -7- EXIT" << endl<<endl; cout << "-->"; cin >> c; switch(c) { case 1: Point p; move_object(&p); break; case 2: Linia l; move_object(&l); break; case 3: Rectangle r; move_object(&r); break; case 4: Circle c; move_object(&c); break; case 5: Korpus k; move_object(&k); break; case 6: Titanic t; move_object(&t); break; default: break; } clrscr(); cleardevice(); } } void main() { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, "C:\\BC\\BGI"); //здесь укажите свой путь к BGI errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } menu(); closegraph(); } |
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:52 Сообщение № |
Часто нужно узнать код клавиши для дальнейшего его использования в проге, например, ESC или Enter. Как это сделать? |
Пользователь: kate&lena Сообщений: 6 Статус: Пользователь Зарегистрирован: 6 февраля 2009, 23:15 Был:17 февраля 2009, 0:35 | Дата: 16 февраля 2009, 23:53 Сообщение № |
Код на С++ #include <stdio.h>; #include <conio.h>; main () { int x,x2; clrscr (); puts ("Opredelenie kodov najimaemih klavish"); puts ("Chtobi viiti najmite ESC"); do { x=getch (); if (x!=0) { printf ("Najata klavisha"); if ((x!=0x7f)&&(x>0x1f)) printf (" '%c'",x); printf (" s kodom: %i или &h%x\n",x,x); } else printf ("Scan-code najatoi klavishi: %i или &h%x\n",x2=getch (),x2); } while (x!=27); } |
Страницы: 1