КР №1 по ТРПОСУ 19 вариант
.docxМинистерство образования Республики Беларусь
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Институт информационных технологий
ИТ и УТС
Специальность______________________________
КОНТРОЛЬНАЯ РАБОТА№1
«Технология разработки программного обеспечения систем управления»
По курсу_________________________________________
_________________________________________________
19
Вариант №_____
Минск, 2010
-
Заданы два массива – А(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;
}
Результат выполнения:
ЛИТЕРАТУРА
-
Лабораторный практикум для студентов специальности «ИТиУТС»всех форм обучения / Д. А.Ганьшин, С.В.Снисаренко, Мн. 2007