Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Может ли работать программа, если там нет public. Помогите доделать программу! 
:(
    Опции темы
St0x
Дата 5.1.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.1.2006

Репутация: нет
Всего: нет



Помогите сделать задание по инфоматике. ПРОГУ ПИСАТЬ НЕ НАДО!!!
На уроке информатики препод задал задание на С++ в графическом режиме
на компиляторе Borland C++ 3.1 написать прогу, в которой две фигуры
(точка и окружность), перемещаясь в пространстве, не должны выходить
за пределы поля, очерчивающим прямоугольником, и реализовать с помощью
объектно-ориентированного программирования и используя виртуальные
функции.
Прогу я написал, но при здаче препод попросил меня, все места,
где использовались PUBLIC заменить на PROTECTED. Отсюда вопрос:
Может ли работать программа, если там нет ни одного PUBLIC.
Если да, то подскажите, как написать прогу.
Текст проги:
Код

#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <process.h>
#include <stdio.h>
#include <fstream.h>
#include <time.h>
#include <dos.h>
#include <bios.h>
#include <stdlib.h>

//class Klavishi
class Klavishi {
public:
virtual int show()=0;
virtual int hide()=0;
};

//class Point
class Point:virtual public Klavishi {
public:
int X1,Y1;//chenter to4ki dlia class Point
int x1,y1,x2,y2;//parametrii oblasti
Point (int a,int b) {X1=a;Y1=b;};//X1,Y1
int show ();//pokazat to4ky
int hide();//skriiti
int ramka_p();//pokazanie ramki
};

int Point::show () {
rectangle (X1,Y1,X1,Y1);
return 0;
};

int Point::hide () {
setcolor (0);
rectangle (X1,Y1,X1,Y1);
return 0;
};

int Point::ramka_p () {
int x1,y1,x2,y2;
x1=0;
y1=0;
x2=639;
y2=479;
setcolor (5);
rectangle (x1,y1,x2,y2);
return 0;
};

//class Circle
class Circle:virtual public Klavishi {
public:
int X2,Y2;//chenter to4ki dlia class Circle
int R;//radius okryznosti
Circle (int c,int d,int rad) {X2=c;Y2=d;R=rad;};//X2,Y2
int show ();
int hide();
};

int Circle::show() {
circle (X2,Y2,R);
return 0;
};

int Circle::hide () {
setcolor (0);
circle (X2,Y2,R);
return 0;
};

void main()
{
int gdriver=DETECT;
int gmode;
int errorcode;
initgraph(&gdriver, &gmode,"e:\\BORLANDC\\BGI\\");
errorcode=graphresult();
if(errorcode!=grOk)
  {
  printf("OLLIbka: %d\n", errorcode);
  puts("Sei4as nyzno nazhat <Enter>");
  getch();
  exit(1);
  }
int a=10;//na4alnaia koord to4ki X
int b=10;//na4alnaia koord to4ki Y
int c=75;//na4alnaia koord kryga X
int d=400;//na4alnaia koord kryga Y
int rad=50;//radius kryga
Circle koord_circle(c,d,rad);
char ch;
int t=2;//color to4ki
int tt=15;//color kryga
for (;;) {
Point koord_point(a,b);
setcolor(t);
koord_point.show();
Circle koord_circle(c,d,rad);
koord_circle.R;
setcolor(tt);
koord_circle.show();
koord_point.ramka_p();
ch=getch();
if (ch=='a') {koord_point.hide();a--;if (a<=1) {a=1;};Point koord_point(a,b);setcolor (t);koord_point.show();}
if (ch=='d') {koord_point.hide();a++;if (a>=639) {a=638;};Point koord_point(a,b);setcolor (t);koord_point.show();}
if (ch=='w') {koord_point.hide();b--;if (b<=1) {b=1;};Point koord_point(a,b);setcolor (t);koord_point.show();}
if (ch=='s') {koord_point.hide();b++;if (b>=479) {b=478;};Point koord_point(a,b);setcolor (t);koord_point.show();}
if (ch=='z') {setcolor (t=rand()%16);koord_point.show();}
if (ch=='q') {break;}
if ((int)ch==75) {koord_circle.hide();c--;if (c-koord_circle.R<=1) {c=1+koord_circle.R;};Circle koord_circle(c,d,rad);setcolor (tt);koord_circle.show();}
if ((int)ch==77) {koord_circle.hide();c++;if (638-c-rad<=0) {c=638-rad;};Circle koord_circle(c,d,rad);setcolor (tt);koord_circle.show();}
if ((int)ch==72) {koord_circle.hide();d--;if (d-koord_circle.R<=1) {d=1+koord_circle.R;};Circle koord_circle(c,d,rad);setcolor (tt);koord_circle.show();}
if ((int)ch==80) {koord_circle.hide();d++;if (478-d-rad<=0) {d=478-rad;};Circle koord_circle(c,d,rad);setcolor (tt);koord_circle.show();}
if (ch=='x') {setcolor (tt=rand()%16);koord_circle.show();}
if (ch=='t') {rad=rad-1;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (ch=='r'&&(c-rad>1)&&(d-rad>1)) {rad=rad+1;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (ch=='r'&&((c-rad==0)||(d-rad==0))) {rad=rad;c;d;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (ch=='r'&&((c+rad==639)||(d-rad==0))) {rad=rad-1;c;d;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (ch=='r'&&((d+rad==479)||(c-rad==0))) {rad=rad-1;c;d;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (ch=='r'&&((d+rad>=479)||(c+rad>=639))) {rad=rad;c;d;koord_circle.hide();Circle koord_circle(c,d,rad);}
if (koord_point.X1<=1) {koord_point.hide();koord_point.X1=2;koord_point.show();}
if (koord_point.Y1<=1) {koord_point.hide();koord_point.Y1=2;koord_point.show();}
     };
closegraph();
;}

PM MAIL   Вверх
volvo877
Дата 5.1.2006, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 1
Всего: 116



Цитата(St0x @ 5.1.2006, 00:42 Найти цитируемый пост)
Может ли работать программа, если там нет ни одного PUBLIC.
Может... friend-функции еще никто не отменял smile

Замени, как препод просил, все public на protected и объяви void main() другом классов Point и Circle... Все будет работать... Хотя это и извращение...

Это сообщение отредактировал(а) volvo877 - 5.1.2006, 12:20
PM MAIL   Вверх
TIGERоX
Дата 5.1.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


начинающий...
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.9.2005

Репутация: нет
Всего: 1



пример:
Код

class Foo{
   friend class Bar;//Bar становится доступно все!!
   protected:
       Foo(){}
};

class Bar{
    private:
       Foo *obj; 
    public:
       Bar() : obj(new Foo){}
       ~Bar(){delete obj;} 
};

void main(){
     Bar *o = new Bar;  //Вызывается конструтор obj
    delete o;
}


Это сообщение отредактировал(а) TIGERоX - 5.1.2006, 17:47
PM MAIL   Вверх
Partizan
Дата 5.1.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Товарищ, TIGERоX...Юзайте [code=cpp]


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
TIGERоX
Дата 5.1.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


начинающий...
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.9.2005

Репутация: нет
Всего: 1



Цитата(volvo877 @ 5.1.2006, 02:12)
Цитата(St0x @  5.1.2006,  00:42 Найти цитируемый пост)
Может ли работать программа, если там нет ни одного PUBLIC.
Хотя это и извращение...

этот прием часто использутся в классах, использующих шаблоны ;)
PM MAIL   Вверх
St0x
Дата 6.1.2006, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.1.2006

Репутация: нет
Всего: нет



Цитата

Все будет работать... Хотя это и извращение...

Точняк!!! У нас препод по инфе извращенец!!!
Последовал совету Шустрого, все ОК. Тему закрывать пока не буду, ибо сдавать лабу в понедельник. Вдруг там еще, что надо будет спросить.
PM MAIL   Вверх
threef
Дата 9.1.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



не думаю я, что ин просил тебя ВОВСЕ без public:. Просто в исходном примере у тебя public: все - и функции, и переменные. Видать, он имел в виду закрыть доступ к переменным класса. А ты перестарался, а тут все и рады.

PM MAIL   Вверх
Partizan
Дата 9.1.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Ну,знаешь....телепаты, как говорится, в отпуске....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.