Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КР №1 по ТРПОСУ 19 вариант

.docx
Скачиваний:
40
Добавлен:
01.04.2014
Размер:
109.4 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»

Институт информационных технологий

ИТ и УТС

Специальность______________________________

КОНТРОЛЬНАЯ РАБОТА№1

«Технология разработки программного обеспечения систем управления»

По курсу_________________________________________

­­­­_________________________________________________

19

Вариант №_____

Минск, 2010

  1. Заданы два массива – А(5) и В(5). Подсчитать в них количество элементов, кратных трем, и первым на печать вывести массив, имеющий наибольшее их количество.

Кодпрограммы:

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

int main(intargc, char* argv[])

{ int n,i,num1=0,num2=0;

cout<<"Vvedite N: "; cin>>n;

int *a=new int[n];

int *b=new int[n];

for(i=0;i<n;i++) {cout<<"Vvedite A["<<i<<"] "; cin>>a[i];};

for(i=0;i<n;i++) {cout<<"Vvedite B["<<i<<"] "; cin>>b[i];};

for(i=0;i<n;i++) { if (a[i]%3==0) num1++;

if (b[i]%3==0) num2++;};

if (num1<num2)

{

for(i=0;i<n;i++) printf("%3i",b[i]);

printf("\n");

for(i=0;i<n;i++) printf("%3i",a[i]);

} else

{

for(i=0;i<n;i++) printf("%3i",a[i]);

printf("\n");

for(i=0;i<n;i++) printf("%3i",b[i]);

};

delete[] a;

delete[] b;

getch();

return 0;

}

Результат выполнения:

2.Пользовательский класс Х должен содержать необходимые элементы - данные, которые создаются в динамической области памяти, конструктор для их создания (операция new) и установки их начальных значений: Х(), деструктор: ~Х (),friend – функция печати: friendvoidprint(), функция, решающая поставленную задачу: friendVoidRun().

Код методов и функций – вне пространства определения класса.

При x=1,825, y=18,225, z= –3,298, =1,2131.

Кодпрограммы:

#include <iostream.h>

#include <math.h>

#include <stdlib.h>

#include <conio.h>

class My

{ doublex,y,z,u;

public:

void set();

void run();

void print();};

void My::set()

{ cout<<"Vvediteznachenie x:"<<endl;

cin>>x;

cout<<"Vvediteznachenie y:"<<endl;

cin>>y;

cout<<"Vvediteznachenie z:"<<endl;

cin>>z;};

void My::print()

{ cout<<"\n Poluchennoeznachenie: "<<u<<endl;};

void My::run()

{ doublea,b,c;

a=pow(x,(y/x))-pow((y/x),1/3.);

b=(y-x)*(cos(y)-z/(y-x));

c=1+(y-x)*(y-x);

u=a+b/c;}

void main(intargc, char* argv[])

{ My a;

a.set(); a.run(); a.print();

My *b;

b=new My;

b->set();

b->run();

b->print();

deleteb;

getch();}

Результат выполнения:

3. Ввести с клавиатуры строку символов S1. Признак окончания ввода строки – нажатие клавиши «Ввод». Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 .Исходную и преобразованную строки вывести в файл.Если длина L нечетная, то выделяется подстрока после первого пробела.

Кодпрограммы:

#include<iostream.h>

#include<conio.h>

#include<string.h>

classMyStr

{ public:

MyStr(char*);

~MyStr();

intGetLength(){return len;};

voidSetStr(char*);

friend void Print(MyStr&);

friend void Run(MyStr&);

public:

intlen;

char *s;

};

MyStr::MyStr(char* cs){

len=0;

int i=0;

while(cs[i]!=0)

len++,i++;

s=new char[len];

for(i=0;i<len;i++)

s[i]=cs[i];

}

MyStr::~MyStr()

{ delete[]s;

cout<<"Class destroyed"<<endl;

}

voidMyStr::SetStr(char*cs)

{ delete[]s;

len=0;

int i=0;

while(cs[i]!=0)

len++,i++;

s=new char[len];

for(i=0;i<len;i++)

s[i]=cs[i];}

void Print(MyStr&str)

{for(int i=0;i<str.len;i++)

cout<<str.s[i];cout<<endl;

}

void Run(MyStr&str)

{ if(str.len%2==1)

{ inti,dlina;

for(dlina=0;dlina<str.len;dlina++)

if(str.s[dlina]==' ')break;

char *tmpc=new char(str.len-dlina-1);

for(i=dlina;i<str.len-1;i++)

tmpc[i-dlina]=str.s[i+1];

str.len-=dlina+1;

str.SetStr(tmpc);

}}

void main(void)

{ char *buf;

buf=new char();

cout<<"Vveditestroky:"<<endl;

cin.getline(buf,100);

MyStr *str=new MyStr(buf);

cout<<"\n"<<endl;

cout<<"Ishodnajastroka:"<<endl;

Print(*str);

cout<<"Dlinastroki\t"<<str->GetLength()<<endl;

cout<<"\n"<<endl;

Run(*str);

{cout<<"Novajastroka"<<endl;

Print(*str);

cout<<"Dlinanovojstroki\t"<<str->GetLength()<<endl;}

delete[]buf;

getch();

};

Результат выполнения:

4. Создать в производном классе метод Run, определяющий произведение квадратов переменных класса.

Кодпрограммы:

#include <iostream.h>

#include <conio.h>

class X{protected: int x1, x2;

public: X(int,int); ~X();

virtual void view();

virtual void set(int,int);};

X::X(int iTemp1, int iTemp2)

{ x1 = iTemp1;

x2 = iTemp2;

cout<< "Bazovijklasssozdan" <<endl;}

X::~X()

{ cout<< "Bazovijklassunichtozhen" <<endl;}

void X::view()

{ cout<< "x1 = " << x1 << ", x2 = " << x2 <<endl;}

void X::set(int iTemp1, int iTemp2)

{ x1 = iTemp1;

x2 = iTemp2;}

class Y : public X

{protected:

int y;

public: Y(int iTemp1, int iTemp2, int iTemp3);

~Y();

void view();

void set(int iTemp1, int iTemp2, int iTemp3);

int run();};

Y::Y(int iTemp1, int iTemp2, int iTemp3):X(iTemp2,iTemp3)

{ y = iTemp1;

cout<< "=Dochernijklasssozdan=\n" <<endl;}

Y::~Y()

{ cout<< "\n=Dochernijklassunichtozhen=" <<endl;}

void Y::view()

{ cout<< "y = " << y << ", ";

X::view();}

void Y::set(int iTemp1, int iTemp2, int iTemp3)

{ y = iTemp1;

X::set(iTemp2,iTemp3);}

int Y::run()

{ return x1*x1*x2*x2*y*y;}

void main()

{ Y *a = new Y(1,3,5);

a->view();

a->set(5,3,1);

a->view();

cout<< "\nx1*x1*x2*x2*y*y = " << a->run() <<endl;

deletea;

getch();}

Результат выполнения:

5. Даны: число N и последовательность a1, a2, … aN. Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные). Тип данных и результат являются параметрами по отношению к классу, программа должна иметь методы инициализации, конструктор, деструктор, метод просмотра значений созданного массива согласно заданному алгоритму.

a1/1, a2/2, a3/3, … ,aN/N;

Кодпрограммы:

#include <iostream.h>

#include <math.h>

#include <conio.h>

template<class Type> class Shablon {

Type* ad;

int size;

public:

Shablon(int);

~Shablon();

Type* Run();

void Set(Type a,int in);

Type Get(int in);

};

template<class Type>Shablon<Type>::Shablon(int n){

size=n;

ad=new Type[n];

};

template<class Type>Shablon<Type>::~Shablon()

{

delete[] ad;

};

template<class Type>

Type* Shablon<Type>::Run(){

Type *res=new Type[size];

for (int i=0;i<size;i++)

res[i]=ad[i]/(i+1);

return res;

};

template<class Type>

void Shablon<Type>::Set(Type a,int in){

ad[in]=a;

};

template<class Type>

Type Shablon<Type>::Get(int in){

return ad[in];

};

int main(){

inti,n;

cout<<"Vvedite N"<<endl;

cin>>n;

Shablon<int>aray(n);

Shablon<double>arayD(n);

Shablon<char>arayC(n);

cout<<endl<<n<<" Celyh"<<" Elementov"<<endl;

for (int i=0;i<n;i++){

int t;

cin>>t;

aray.Set(t,i);

}

cout<<endl<<" Massiv:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<aray.Get(i);

cout<<endl;

int *INT=aray.Run();

cout<<endl<<" Rezul'tat:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<INT[i];

cout<<endl;

cout<<endl<<n<<" Drobnyh"<<" Elementov"<<endl;

for (i=0;i<n;i++){

double t;

cin>>t;

arayD.Set(t,i);

}

cout<<endl<<" Massiv:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<arayD.Get(i);

cout<<endl;

double *DOUBLE=arayD.Run();

cout<<endl<<" Rezultat:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<DOUBLE[i];

cout<<endl;

cout<<endl<<"Enter String from "<<n<<" Elements"<<endl;

for (i=0;i<n;i++){

char t;

cin>>t;

arayC.Set(t,i);

}

cout<<endl<<" Massiv:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<arayC.Get(i);

cout<<endl;

char *CHAR=arayC.Run();

cout<<endl<<" Rezul'tat:"<<endl;

for (i=0;i<n;i++)

cout<<" "<<CHAR[i];

cout<<endl;

getch();

return 0;

}

Результат выполнения:

ЛИТЕРАТУРА

  1. Лабораторный практикум для студентов специальности «ИТиУТС»всех форм обучения / Д. А.Ганьшин, С.В.Снисаренко, Мн. 2007