Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Infa_ekzamen.doc
Скачиваний:
76
Добавлен:
09.06.2015
Размер:
2.16 Mб
Скачать

27.Использование классов,различные способы инициализации.

Принципы различный способов реализации:

typedef unsigned int, tint; class Tmoney {public: // чтобы можно было использовать cout<<t.summa; double summa; double round (const double &r) {double t = fabs(r);

t = (t – floor(t) < 0.5)? floor(t): cell(t); return (r<0)? -t: t;}; void init (const doudle &t) // метод инициализации: Void Tmoney::Init (const double &t) {summa = round (t*100);}

int main {char c1; Tmoney t, p, s, z; t.Init (100.55); p.Init (1000.66); // инициализация методом (t.summa = 100.55;)

Tmoney x = t; // инициализация другой переменной (x.summa = t.summa); cout<<s.summa<<”/t”<<p.summa<<”/t”; s.Init (0.0); z.Init (0.0); // обнуление s.summa = 0.0 и z.summa = 0.0; cout<<x.summa<<”t”<<s.summa<<”t”<z.summa<<”t”; c1 = cin.get(); return 0;}. Пример 2: int main() {Tmoney t, p, s, z; t.Init (100.55); p.Init (100.66); Tmoney x = t;

z = t.AddMoney(p); // z.summa = t.summa + p.summa; z.DisplayMoney(); s.Init (0.0); z.Init (0.0); // обнуление s.summa и z.summa; s = t.AddMoney(p); s.DisplayMoney(); t.AddMoney(p).DisplayMoney(); // суммирование и вывод s.summa + p.summa;

s = t.DivByNum(2); s.DisplayMoney(); z = p.MultByNum(3.15); z.DisplayMoney(); s.ReadMoney(); s.DisplayMoney(); double d = p.DivMoney(s); cout<<d<<endl; return 0;} Рассмотрим еще вариант метода инициализации: Tmoney Tmoney::Init (const double &t) {summa = round (t*100); return *this;} Кроме этих методов инициализации можно записать: Tmoney t= z.Init (200.00); // инициализация 2-х объектов: z и t; Это значит, что остается правильной конструкция t.Init (200.00) Операторы t.AddMoney(p).DisplayMoney() работает так: вычисляется сумма полей объектов p и t (создается временный объект) и сразу выводятся на экран.

28.Использование классов,работа с массивами и указателями на объекты.

С массивами объектов можно работать также,как и с массивами других объектов:

Пример. Int main() {Tmoney a[5],sa;//объявление массива a и переменной sa;

for (int i=0;i<5;i++) // инициализация элементов массива; a[i].Init(i);

for (int i=0;i<5;i++) a[i].DisplayMoney(); // вывод элементов массива;

sa.Init(0.0); // обнуление sa.summa = 0; for (int i=0;i<5;i++) sa = sa.AddMoney(a[i]); // суммирование элементов массива; sa.DisplayMoney(); // вывод вывод полученной суммы на экран; sa.Init(0.0); for (int i=0;i<5;i++) sa = a[i].AddMoney(sa); sa.DisplayMoney(); // 2-ой вариант; return 0;}

Работа с указателями на объекты. int main() {Tmoney *pt = new Tmoney(), *pp, *ps; // объявление указателей; pp = new Tmoney(); ps = new Tmoney(); // создание объектов; pt → Init(1000.24); pt → DisplayMoney(); // инициализация и вывод; pp → Init(2000.25); pp → DisplayMoney(); ps → Init(0.0); ps → DisplayMoney(); ps = (*pt).AddMoney(*pp); // сложение; ps → DisplayMoney(); ps → ReadMoney(); ps → DisplayMoney(); // ввод и вывод; delete ps; delete pt; delete pp; return 0;}

Для работы с указателями используется операция доступа ( → ) и операция разыменования ( * ). Простые скобки после имени конструктора можно не писать, но при наличии ( ) созданный объект инициализируется нулями, а при их отсутствии значения полей данных не определены.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]