АЯиП отчеты по лабам (кроме 24) (отчет 28)

Посмотреть архив целиком

Лабораторная работа 28.

Программирование с использованием классов в С++. Наследование и композиция.


Задача: Разработать и реализовать диаграмму классов для описанных объектов предметной области, используя механизмы наследования и композиции. Проверить ее на тестовом примере, с демонстрацией всех возможностей разработанных классов на конкретных данных.

Даны:

Объект вещественное число, умеющий печатать свое значение и отвечать на запрос о значении своего числового поля, значении целой и вещественной частях числового поля.

Объект массив вещественных чисел переменной длины, которая определяется в процессе инициализации и для хранения длины используется специальное поле. Объект умеет выводить на печать значение своих элементов, возвращать размер массива, значение любого элемента по его индексу, среднее арифметическое целых и дробных частей своих элементов.


Диаграмма классов:


chislo


Mas1

+ a


- z[50]

+ n

Chislo (){};

~Chislo (){};

init()

samo ()

celoe () drob ()


Mas1 (){};

~Mas1 (){};

init();

printmas();

printsize();

printask();

srcel();

srdrob();






Текст программы:


Файл chislo.h


#ifndef _chislo_h_100508_

#define _chislo_h_100508_


class Chislo

{

public:

float a;

Chislo (){};

Chislo (float ax) {init (ax);};

void init(float ax) {a=ax;};

float samo (void) {return a;};

int celoe (void) {int a1=a; return a1;};

float drob (void) {int a1=a; return (a-a1);};

};


#endif


Файл mas.h


#ifndef _Mas1_h_100508_

#define _Mas1_h_100508_


class Mas1:public Chislo

{

private:

Chislo z[50];

public:

int n;

Mas1 (){};

Mas1 (int i){init();};

void init(void);

void printmas(void);

void printsize(void);

void printask(void);

void srcel(void);

void srdrob(void);


};


void Mas1::init(void)

{

int i;

for (i=1; i

{

printf ("Vvedite element %d: ",i);

scanf ("%f",&z[i-1].a);

}

}


void Mas1::printmas(void)

{

int i;

for (i=1; i

{

printf ("\nElement %d: ",i);

printf ("%f",z[i-1].a);

}

}


void Mas1::printsize(void)

{

printf("\nRazmernost massiva ravna: %d\n\n",n);

}


void Mas1::printask(void)

{

int i=0;

while ((i<1) | (i>n))

{

printf ("Vvedite nomer elementa, kotoriy nado vyvesti: ");

scanf ("%d",&i);

}

printf ("Vivodimiy element: %f\n",z[i-1].a);

}


void Mas1::srcel(void)

{

int i;

float sr=0,sum=0;

for (i=1; i

sum+=z[i-1].celoe();

sr=sum/n;

printf("\nSr.ar. celyh chastei elementov massiva: %f",sr);

}


void Mas1::srdrob(void)

{

int i;

float sr=0,sum=0;

for (i=1; i

sum+=z[i-1].drob();

sr=sum/n;

printf("\nSr.ar. drobnyh chastei elementov massiva: %f\n",sr);


}


#endif


Файл lab28.cpp


// lab28.cpp: определяет точку входа для консольного приложения.

//Разработать и реализовать диаграмму классов для описанных объектов предметной области,

//используя механизмы наследования и композиции. Проверить ее на тестовом примере,

//с демонстрацией всех возможностей разработанных классов на конкретных данных.

// Даны:Объект вещественное число, умеющий печатать свое значение и отвечать на запрос

//о значении своего числового поля, значении целой и вещественной частях числового поля.

//Объект массив вещественных чисел переменной длины, которая определяется в процессе

//инициализации и для хранения длины используется специальное поле.

//Объект умеет выводить на печать значение своих элементов, возвращать размер массива,

//значение любого элемента по его индексу, среднее арифметическое целых и дробных частей своих элементов.


#include "stdafx.h"

#include "chislo.h"

#include "Mas1.h"

#include


//ОСНОВНАЯ ПРОГРАММА

int main(int argc, char* argv[])

{

Chislo c;

Mas1 mas;

printf ("Vvedite znachenie odinochnogo chisla: ");

scanf("%f",&c.a);

printf ("\nVyvodim chislo: %9.4f\n",c.samo());

printf ("Vyvodim ego celuyu chast: %9d\n",c.celoe());

printf ("Vyvodim ego drobnuyu chast: %9.4f\n",c.drob());

printf ("\nVvedite razmernost massiva nasleduemix elementov: ");

scanf ("%d",&mas.n);

mas.init();

mas.printmas();

mas.printsize();

mas.printask();

mas.srcel();

mas.srdrob();

getch();

return 0;

}



Тест:


Случайные файлы

Файл
158534.rtf
79598.rtf
94475.rtf
30185-1.rtf
CBRR4013.DOC




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.