Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2013, 20:38   #1
lika1129970
Пользователь
 
Регистрация: 22.03.2013
Сообщений: 28
Восклицание Объекты и классы

нужна помощь..
есть пример программы, мне нужна помощь в переписывание кода под задание.. получилось так что пришел новый преподаватель дал пример этой проги и задание и сказал, что нужно сделать до Пт.. времени мало, а разбираться времени мало.. помогите пожалуйста)

вот пример проги:
const int MAXPAPER = 100;
const int MAXINK = 50;
const float ERRORPROB = 0.05;
enum PrinterState {OFF, READY, NOINK, NOPAPER, ERROR};
const char PrinterStateName[5][10] = {"OFF", "READY", "NOINK", "NOPAPER", "ERROR"};
class Printer
{
bool Power;
int State;
int Paper;
float Ink;
// приватний метод, що встановлює заданий стан
// метод призначено для внутрішнього використання іншими методами
// (користувач не може самовільно змінити стан принтера:
// для цього необхідно використовувати доступні методи)
void SetState (int);
public:
void Reset (void);
void TurnOn (void);
void TurnOff (void);
bool GetPower (void) {return Power;}
int LoadPaper (int);
int UnloadPaper (int);
int GetPaper (void) {return Paper;}
int LoadInk (int);
int GetInk (void) {return Ink;}
int Print (int, int);
int GetState (void);
const char* const GetStateName () {return PrinterStateName[State];}
};
// вміст файлу printer.cpp
#include <stdlib.h>
#include “printer.hpp”
void Printer::Reset (void)
{
Power = false;
SetState (OFF);
Paper = 0;
Ink = 50;
}
void Printer::TurnOn (void)
{
if (!Power)
{
Power = true;
SetState (READY);
}

randomize ();
}
void Printer::TurnOff (void)
{
if (Power)
{
Power = false;
SetState (OFF);
}
}
int Printer::LoadPaper (int Sheets)
{
if (Sheets < 0) return 0;
int NewPaper = Paper + Sheets;
if (NewPaper > MAXPAPER)
{
Paper = MAXPAPER;
return MAXPAPER - Sheets;
}
Paper = NewPaper;
return Sheets;
}
int Printer::UnloadPaper (int Sheets)
{
if (Sheets < 0) return 0;
int OldPaper = Paper;
int NewPaper = Paper - Sheets;
if (NewPaper < 0)
{
Paper = 0;
return OldPaper;
}
Paper = NewPaper;
return Sheets;
}
int Printer::LoadInk (int Drops)
{
if (Power) return 0;
if (Drops < 0) return 0;
int NewInk = Ink + Drops;
if (NewInk > MAXINK)
{
Ink = MAXINK;
return MAXINK - Drops;
}
Ink = NewInk;
return Drops;
}
void Printer::SetState (int NewState)
{
State = NewState;
}
int Printer::Print (int Sheets, int Fill)
{

if (!Power || State != READY) return 0;
if (Sheets < 0 || Fill < 0 || Fill > 100) return 0;
int LuckSheets;
if (random (100) < ERRORPROB * 100) LuckSheets = random (Sheets);
else LuckSheets = Sheets;
int PosSheetsByInk = Ink * 50 / Fill, PosPaper;
if (PosSheetsByInk < LuckSheets)
{
PosPaper = PosSheetsByInk;
SetState (NOINK);
}
else if (Paper < LuckSheets)
{
PosPaper = Paper;
SetState (NOPAPER);
}
else
{
PosPaper = LuckSheets;
SetState (READY);
}

if (State == NOINK) Ink = 0;
else Ink -= PosPaper * Fill / 50;
UnloadPaper (PosPaper);
if (LuckSheets < Sheets) SetState (ERROR);
return PosPaper;
}
int Printer::GetState (void)
{
return State;
}
// вміст файлу testprn.cpp
#include <conio.h>
#include <stdio.h>
#include “printer.hpp”
// основна програма
void main ()
{
Printer Canon;
Canon.Reset ();
do
{
clrscr ();
printf ("--------Object-oriented printer model--------\n");
printf ("---------------------------------------------\n");
printf ("----Select one of these options [e - exit]---\n");
printf ("[0 - Turn off] [1 - Turn on] [2 - Load paper]\n");
printf ("[3 - Unload paper] [4 - Load ink] [5 - Print]\n");
printf ("---------------------------------------------\n");
gotoxy (1, 8);
printf ("State of printer:\n");
printf ("Power: %d State: %s ", Canon.GetPower (), Canon.GetStateName());
printf ("Paper: %d Ink: %d", Canon.GetPaper(), Canon.GetInk());
int key = getch ();
gotoxy (1, 7);
switch (key)
{
case '0': Canon.TurnOff (); break;
case '1': Canon.TurnOn (); break;
case '2':
{
int Sheets;
printf ("Input the number of sheets to load: ");
scanf ("%d", &Sheets);
Canon.LoadPaper (Sheets);
break;
}
case '3':
{
int Sheets;
printf ("Input the number of sheets to unload: ");
scanf ("%d", &Sheets);
Canon.UnloadPaper (Sheets);
break;
}
case '4':
{
int Drops;
printf ("Input the volume of ink to load: ");
scanf ("%d", &Drops);
Canon.LoadInk (Drops);
break;
}
case '5':
{
int Sheets, Fill;
printf ("Input the number of sheets and fill: ");
scanf ("%d%d", &Sheets, &Fill);
Canon.Print (Sheets, Fill);
break;
}
case 'e':
{
return;
}
default:
printf ("Invalid option! Press any key to continue...");
getch ();
}
} while (true);
}
lika1129970 вне форума Ответить с цитированием
Старый 14.10.2013, 20:39   #2
lika1129970
Пользователь
 
Регистрация: 22.03.2013
Сообщений: 28
По умолчанию

а вот мое задание:
Пилосос з регулятором потужності
Властивості:
• стан електромережі (увімкн./вимкн.);
• стан двигуна (увімкн./вимкн.);
• стан індикатора переповнення контейнера пилу (увімкн./вимкн.);
• потужність (1000 … 1500 Вт);
• об’єм пилу в контейнері (0 … 2 л).
Метод Правила роботи метода
Підключення до електромережі -- Встановлює відповідний стан.
Відключення від електромережі--- Вимикає двигун.
Вмикання --- Вмикає двигун; якщо контейнер пилу заповнений більше ніж на 90 % вмикається індикатор переповнення; якщо рівень пилу досягає або перевищує 100 % двигун не вмикається.
Вимикання ------- Вимикає двигун; збільшує об’єм пилу в контейнері на величину, яка обчислюється за виразом:
V = S • k,
де V – об’єм пилу, л;
S – площа обробленої поверхні, м2;
k – коефіцієнт запиленості поверхні, л/м2.
Випорожнення контейнера пилу ------ Скидає рівень заповненості контейнера пилу до нуля.
lika1129970 вне форума Ответить с цитированием
Старый 14.10.2013, 21:31   #3
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

И в чем проблема? Вам уже подробно в задании описали свойства и методы класса.
Igor95 вне форума Ответить с цитированием
Старый 15.10.2013, 21:23   #4
lika1129970
Пользователь
 
Регистрация: 22.03.2013
Сообщений: 28
По умолчанию

помочь исправить код под задание.
lika1129970 вне форума Ответить с цитированием
Старый 16.10.2013, 08:27   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Переведите, пожалуйста, задание. Ничего не понял.

P.S. Забавные слова: потужності, властивості, двигун. Название классно звучит "Пилосос з регулятором потужності". Украинский - очень позитивный язык

Последний раз редактировалось 8Observer8; 16.10.2013 в 08:37.
8Observer8 вне форума Ответить с цитированием
Старый 16.10.2013, 18:58   #6
lika1129970
Пользователь
 
Регистрация: 22.03.2013
Сообщений: 28
По умолчанию

а вот мое задание:
Пылесос с регулятором мощности
Свойства:
• состояние электросети ( вкл . / Выкл .)
• состояние двигателя ( вкл . / Выкл .)
• состояние индикатора переполнения контейнера пыли ( вкл . / Выкл .)
• мощность (1000 ... 1500 Вт ) ;
• объем пыли в контейнере (0 ... 2 л) .
Метод Правила работы метода
Подключение к электросети - устанавливает соответствующее состояние .
Отключение от электросети --- Выключает двигатель.
Включение --- Включает двигатель; если контейнер пыли заполнен более чем на 90 % включается индикатор переполнения ; если уровень пыли достигает или превышает 100 % двигатель не работает.
Выключение ------- Выключает двигатель , увеличивает объем пыли в контейнере на величину , которая вычисляется по выражению:
V = S • k ,
где V - объем пыли , л ;
S - площадь обработанной поверхности , м2 ;
k - коэффициент запыленности поверхности , л/м2.
Стул контейнера пыли ------ Сбрасывает уровень заполненности контейнера пыли к нулю.
lika1129970 вне форума Ответить с цитированием
Старый 17.10.2013, 23:09   #7
lika1129970
Пользователь
 
Регистрация: 22.03.2013
Сообщений: 28
Злость

Ребята, помогите пожалуйста!
lika1129970 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КЛАССЫ И ОБЪЕКТЫ В С++ amneziya Помощь студентам 1 04.10.2011 20:32
классы и объекты vanek1 Помощь студентам 1 03.05.2011 23:58
С++ объекты и классы Шиншилка Помощь студентам 9 22.04.2011 20:19
Классы и объекты Valera Помощь студентам 8 22.04.2011 09:38
TurboPascal: объекты и классы ulala Помощь студентам 1 28.10.2009 17:20