Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
1. Создайте класс Комплексное Число. В классе должны присутствовать функции, которые перегружают следующие операции: «+», «- », «*», «=».
Основной файл с ф-ией main
// p3_1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "Complex.h"
int main(int argc, char* argv[])
{
Complex a(4, 4);
Complex b(1, 1);
Complex s;// = NULL;
s = a + b;
printf("Complex +: %d + %di \n", s.getA(), s.getB());
s = a - b;
printf("Complex -: %d + %di \n", s.getA(), s.getB());
s = a * b;
printf("Complex *: %d + %di \n", s.getA(), s.getB());
return 0;
}
Заголовочный файл класса
#ifndef COMPLEX_H
#define COMPLEX_H
class Complex {
friend Complex &operator + ( Complex &x, Complex &y);
friend Complex &operator - ( Complex &x, Complex &y);
friend Complex &operator * ( Complex &x, Complex &y);
private :
int a;
int b;
public :
Complex &operator = ( Complex &x );
Complex() {
a = 0;
b = 0;
}
Complex( int ta, int tb ) {
a = ta;
b = ta;
}
void setA ( int ta ) { a = ta; }
void setB ( int tb ) { b = tb; }
int getA ( void ) { return a; }
int getB ( void ) { return b; }
};
#endif
Файл реализации класса
#include "Complex.h"
//#include "iostream.h"
Complex& Complex::operator = ( Complex &x ) {
a = x.getA();
b = x.getB();
return *this;
}
Complex& operator + (Complex &x, Complex &y) {
Complex *tmp = new Complex(x.getA() + y.getA(), x.getB() + y.getB());
return *tmp;
}
Complex& operator - (Complex &x, Complex &y) {
Complex *tmp = new Complex(x.getA() - y.getA(), x.getB() - y.getB());
return *tmp;
}
Complex& operator * (Complex &x, Complex &y) {
Complex *tmp = new Complex();
tmp->setA( x.getA() * y.getA() - x.getB() * y.getB() );
tmp->setB( x.getA() * y.getB() + x.getB() * y.getA() );
return *tmp;
}
2. Создайте класс Point (точка), содержащий координаты точки. Создайте класс Circle (окружность) производный от класса Point, содержащий элемент данных радиус. Программа должна выводить объект класса Circle в виде - Центр = [x; y]; Радиус = r .
Основной файл с ф-ией main
// p3_2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "Circle.h"
int main(int argc, char* argv[])
{
Circle *c = new Circle( 5, 6, 7);
printf("X: %d\tY: %d\tR: %d\n" , c->getX(), c->getY(), c->getR() );
delete c;
return 0;
}
Заголовочный файл класса
#ifndef POINT_H
#define POINT_H
class Point {
private :
int x;
int y;
public:
Point () {
x = 0;
y = 0;
}
Point ( int tx, int ty ) {
x = tx;
y = ty;
}
void setX ( int tx );
void setY ( int ty );
int getX ( void );
int getY ( void );
};
#endif
Файл реализации класса
#include "Point.h"
void Point::setX ( int tx ) {
x = tx;
}
void Point::setY ( int ty ) {
y = ty;
}
int Point::getX ( void ) {
return x;
}
int Point::getY ( void ) {
return y;
}
Заголовочный файл класса
#ifndef CIRCLE_H
#define CIRCLE_H
#include "Point.h"
class Circle : public Point {
private :
int r;
public:
Circle () : Point() {
r = 0;
}
Circle ( int tx, int ty, int tr ) : Point( tx, ty ) {
r = tr;
}
void setR ( int tr );
int getR ();
};
#endif
Файл реализации класса
#include "Circle.h"
void Circle::setR ( int tr ) {
r = tr;
}
int Circle::getR ( ) {
return r;
}
3. Создайте класс PhoneNumber (телефонный номер), закрытые элементы которого есть код города и номер. Также создайте дружественные функции, которые перегружают операции передачи и извлечения из потока и позволяющие обрабатывать данные класса телефонного номера.
// p3_3.cpp : Defines the entry point for the console application.
//
Основной файл с ф-ией main
#include "stdafx.h"
#include "PhoneNumber.h"
int main(int argc, char* argv[])
{
PhoneNumber a(12, 21);
cout << "dfdf ";
cin >> a ;
cout << endl << a << endl;
return 0;
}
Заголовочный файл класса
#ifndef PHONENUMBER_H
#define PHONENUMBER_H
#include <iostream.h>
class PhoneNumber {
friend ostream &operator << ( ostream &output, PhoneNumber & num);
friend istream &operator >> ( istream &input, PhoneNumber & num);
private:
int areacode;
int number;
public:
PhoneNumber() {
areacode = 0;
number = 0;
}
PhoneNumber(int tareacode, int tnumber) {
areacode = tareacode;
number = tnumber;
}
void setAreaCode( int tareacode );
void setNumber( int tnumber );
int getAreaCode( void );
int getNumber( void );
};
#endif
Файл реализации класса
#include "PhoneNumber.h"
#include <stdlib.h>
ostream &operator << ( ostream &output, PhoneNumber & num) {
output << num.getAreaCode() << " " << num.getNumber();
return output;
}
istream &operator >> ( istream &input, PhoneNumber & num) {
char tmp[100];
input.getline(tmp, 100, ' ');
num.setAreaCode( atoi( tmp ) );
input.getline(tmp, 100);
num.setNumber( atoi ( tmp ) );
return input;
}
void PhoneNumber::setAreaCode( int tareacode ) {
areacode = tareacode;
}
void PhoneNumber::setNumber( int tnumber ) {
number = tnumber;
}
int PhoneNumber::getAreaCode( void ) {
return areacode;
}
int PhoneNumber::getNumber( void ) {
return number;
}
4. Создайте класс EMPLOYEE (служащий), который содержит в себе объекты класса DATE (дата). Один объект класса DATE символизирует дату рождения служащего, второй объект класса DATE символизирует дату поступления на работу. Объекты класса EMPLOYEE выводят имя, фамилию, дату рождения и дату поступления на работу служащего.
Основной файл с ф-ией main
// p3_4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Employee.h"
int main(int argc, char* argv[])
{
return 0;
}
Заголовочный файл класса
#ifndef DATE_H
#define DATE_H
class Date {
private :
int d;
int m;
int y;
public :
Date () {
d = 1;
m = 1;
y = 1970;
}
Date (int td, int tm, int ty) {
d = td;
m = tm;
y = ty;
}
void setD ( int td ) { d = td; }
void setM ( int tm ) { m = tm; }
void setY ( int ty ) { y = ty; }
int getD ( void ) { return d; }
int getM ( void ) { return m; }
int getY ( void ) { return y; }
};
#endif
Заголовочный файл класса
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include "windows.h"
#include "Date.h"
class Employee {
private :
char surname[100];
char name[100];
Date a;
Date b;
public :
Employee () {
strcpy(surname, "");
strcpy(name, "");
}
};
#endif
5.Описать класс, реализующий тип данных “вещественная матрица” и работу с ними. Класс должен реализовывать следующие операции над матрицами: « + » , « - » , « * ».
// p5.cpp : Defines the entry point for the console application.
//
Основной файл с ф-ией main
#include "stdafx.h"
#include "matrix.h"
int main(int argc, char* argv[])
{
Matrix a(2 ,2);
a.setDate();
Matrix b(2 ,2);
b.setDate();
Matrix s;
s = a * b;
s.toString ();
return 0;
}
Заголовочный файл класса
#ifndef MATRIX_H
#define MATRIX_H
#include <iostream.h>
class Matrix {
friend Matrix &operator + ( Matrix &x, Matrix &y);
friend Matrix &operator - ( Matrix &x, Matrix &y);
friend Matrix &operator * ( Matrix &x, Matrix &y);
private :
int i, j;
int m, n;
float *mat;
public :
Matrix &operator = ( Matrix &x );
Matrix ( ) {
m = 0;
n = 0;
}
Matrix ( int a, int b ) {
m = a;
n = a;
}
~Matrix ( ) {
delete mat;
}
void setSize ( int a, int b ) {
m = a;
n = a;
}
void setDate ( ) {
mat = new float[m*n];
for ( i = 0; i < m; i++ ) {
cout << "Enter stroku " << i + 1 << endl;
for ( j = 0; j < n; j++ ) {
cin >> *(mat + ( i*n + j ) );
}
}
}
void toString ( ) {
cout << "Output Matrix" << endl;
for ( i = 0; i < m; i++ ) {
for ( j = 0; j < n; j++ ) {
cout<< "[" << *(mat + ( i*n + j ) ) << "]";
}
cout << endl;
}
}
};
#endif
Файл реализации класса
#include "stdafx.h"
#include "matrix.h"
Matrix& Matrix::operator = ( Matrix &x ) {
setSize ( x.m, x.n );
mat = new float[ x.m * x.n ];
float *m = x.mat;
for ( int i = 0; i < x.m; i++ ) {
for ( int j = 0; j < x.n; j++ ) {
*(mat + ( i*n + j ) ) = *(m + ( i*n + j ) );
}
}
return *this;
}
Matrix& operator + (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix ( x.m, x.n ) ;
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for ( int i = 0 ; i < tmp->m ; i++ ) {
for ( int j = 0 ; j < tmp->n ; j++ ) {
*( m + i*tmp->n + j ) = *( mx + i*tmp->n + j ) + *( my + i*tmp->n + j );
}
}
tmp->mat = m;
return *tmp;
}
Matrix& operator - (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix ( x.m, x.n ) ;
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for ( int i = 0 ; i < tmp->m ; i++ ) {
for ( int j = 0 ; j < tmp->n ; j++ ) {
*( m + i*tmp->n + j ) = *( mx + i*tmp->n + j ) - *( my + i*tmp->n + j );
}
}
tmp->mat = m;
return *tmp;
}
Matrix& operator * (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix ( x.m, y.n ) ;
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for ( int i = 0 ; i < x.m ; i++ ) {
for ( int j = 0 ; j < y.n ; j++ ) {
*( m + i*tmp->n + j ) = 0;
for ( int k = 0; k < x.n; k++ ) {
*( m + i*tmp->n + j ) += (*( mx + i*tmp->n + k )) * (*( my + k*tmp->n + j ));
}
}
}
tmp->mat = m;
return *tmp;
}
6.Создайте класс Shape (форма). Создайте от него производные классы Circle (окружность) и Cylinder(цилиндр). Класс Shape должен содержать чисто виртуальную функцию printShapeName (печатать имя формы). Эта функция должна переопределяться в каждом производном классе. Имена объектов производных классов должны выводиться на печать через указатель на базовый класс, то есть использовать свойства полиморфизма.
Основной файл с ф-ией main
#include "stdafx.h"
#include <iostream.h>
class Shape {
public:
virtual void printShapeName ( ) {
cout << "Shape" << endl;
};
};
class Circle : public Shape {
public:
void printShapeName ( ) {
cout << "Circle" << endl;
};
};
class Cylinder : public Shape {
public:
void printShapeName ( ) {
cout << "Cylinder" << endl;
};
};
int main(int argc, char* argv[])
{
Shape *s = new Shape;
s->printShapeName();
Circle ci;
s = &ci;
s->printShapeName();
Cylinder cy;
s = &cy;
s->printShapeName();
return 0;
}
8. Описать класс “множество”, позволяющий выполнять основные операции добавление и удаление элемента, пересечение, объединение и разность множеств.
Основной файл с ф-ией main
// p8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "many1.h"
int main(int argc, char* argv[])
{
Many a;
a.add ( 11 );
a.add ( 2 );
a.add ( 3 );
Many b;
b.add ( 11 );
b.add ( 22 );
b.add ( 33 );
Many s;
s = a - b;
s.print();
//s.print();
/*
a.del ( 1 );
a.del ( 2 );
a.add ( 33 );
a.add ( 36 );
cout << endl << endl;
a.print();
*/
return 0;
}
Заголовочный файл класса
#pragma once
class Many {
friend Many &operator | ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
a = x.q;
while ( a != 0 ) {
tmp->add ( a->ch );
a = a->ps;
}
a = y.q;
while ( a != 0 ) {
tmp->add ( a->ch );
a = a->ps;
}
return *tmp;
};
friend Many &operator & ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
List *b;
a = x.q;
while ( a != 0 ) {
b = y.q;
while ( b != 0 ) {
if ( a->ch == b->ch ) tmp->add ( a->ch );
b = b->ps;
}
a = a->ps;
}
return *tmp;
};
friend Many &operator - ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
List *b;
bool t = false;
a = x.q;
while ( a != NULL ) {
b = y.q;
t = false;
while ( b != NULL ) {
if ( a->ch == b->ch ) t = true;
b = b->ps;
}
if ( !t ) tmp->add ( a->ch );
a = a->ps;
}
return *tmp;
};
private:
typedef struct st {
int ch;
struct st *ps;
} List;
List *p;
List *q;
List *m;
public:
Many ( ) {
p = NULL;
q = NULL;
m = NULL;
};
Many &operator = ( Many &x ) {
List *a;
a = x.q;
while ( a != NULL ) {
add ( a->ch );
a = a->ps;
}
return *this;
};
void add ( int val ) {
m = q;
while ( m != NULL ) {
if ( m->ch == val ) return;
m = m->ps;
}
q = new List;
q->ps = p;
p = q;
q->ch = val;
return;
};
void del ( int val ) {
List *n, *s;
m = q;
while ( m != NULL ) {
if ( m->ch == val ) {
if ( m == q ) {
p = m->ps;
delete m;
q = p;
m =q;
}
else {
s = m->ps;
delete m;
n->ps = s;
m = n;
}
}
n = m;
m = m->ps;
}
return;
};
void print ( ) {
cout << "Print" << endl;
m = q;
while ( m != NULL ) {
cout << m->ch << endl;
m = m->ps;
}
return;
};
};
9. Описать класс, реализующий стек.
// p9.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
class Stack {
private :
typedef struct st {
int ch;
struct st *ps;
} STACK;
STACK *p;
STACK *q;
public :
Stack () {
p = NULL;
q = NULL;
}
void push ( int val ) {
q = new STACK;
q->ps = p;
p = q;
q->ch = val;
return;
};
void pop ( int *pval ) {
*pval = q ->ch;
p = q->ps;
delete q;
q = p;
return;
};
};
int main(int argc, char* argv[])
{
Stack a;
int i;
a.push(1);
a.push(2);
a.push(3);
a.push(4);
a.push(5);
a.pop(&i);
printf("%d\n", i );
a.pop(&i);
printf("%d\n", i );
a.pop(&i);
printf("%d\n", i );
a.pop(&i);
printf("%d\n", i );
a.pop(&i);
printf("%d\n", i );
return 0;
}
10. Написать программу на языке Visual Basic, позволяющую изменять цвет надписи. На форме размещаются три полосы прокрутки и три надписи Красный, Синий, Зеленый, строка Университет им. И.А. Бунина и кнопка Выход. При помощи полос прокрутки выбирается интенсивность одной из цветовых составляющих функции RGB. При нажатии на кнопку Выход за-вершается работа программы (предусмотреть подтверждение на выход).
Private Sub HScroll1_Change(Index As Integer)
Tex.ForeColor = RGB(HScroll1.Item(0).Value, HScroll3.Item(0).Value, HScroll2.Item(0).Value)
End Sub
Private Sub HScroll2_Change(Index As Integer)
Tex.ForeColor = RGB(HScroll1.Item(0).Value, HScroll3.Item(0).Value, HScroll2.Item(0).Value)
End Sub
Private Sub HScroll3_Change(Index As Integer)
Tex.ForeColor = RGB(HScroll1.Item(0).Value, HScroll3.Item(0).Value, HScroll2.Item(0).Value)
End Sub
11. Написать программу на языке Visual Basic, выводящую при нажатии на командную кнопку случайным образом расположенные на форме точки разного цвета. На форме размещаются две командные кнопки Рисуем точки и Выход. При нажатии на кнопку Выход завершается работа программы (пре-дусмотреть подтверждение на выход).
Dim I, red, green, blue, x, y As Integer
Private Sub Command1_Click()
Randomize
For I = 1 To Int(1000 * Rnd) Step 1
x = 1 + Int(p.Width * Rnd)
y = 1 + Int(p.Height * Rnd)
red = 1 + Int(255 * Rnd)
green = 1 + Int(255 * Rnd)
blue = 1 + Int(255 * Rnd)
p.Line (x, y)-(x + 20, y + 20), RGB(blue, green, red), BF
Next I
End Sub
Private Sub Command2_Click()
Unload Form1
12. Написать программу на языке Visual Basic для создания простейшего текстового редактора. На форме размещаются кнопки Сохранить и Выход и текстовое поле, в которое загружается заранее созданный текстовый файл. При нажатии на кнопку Выход завершается работа программы (предусмот-реть подтверждение на выход).
Dim FileNum As Integer
Dim txt As String
Private Sub Command1_Click()
FileNum = FreeFile
Open "c:\\text.txt" For Output As FileNum
Print #FileNum, Text1.Text
Close #FileNum
End Sub
Private Sub Command2_Click()
Unload Form1
End Sub
Private Sub Form_Load()
FileNum = FreeFile
Open "c:\\text.txt" For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, txt
Text1.Text = Text1.Text + txt + Chr(13) + Chr(10)
Loop
Close #FileNum
End Sub
Просмотр результата проги в Pascal Debug->Output
13. Дана последовательность чисел . Используя сортировку выбором, написать программу (на языке Visual Basic или Pascal) упорядочивания элементов по убыванию.
const
SIZE=255;
var
a : array[1..SIZE] of integer;
min, i, j, n, t : integer;
begin
write('vvedite n: ');
readln(n);
write('vvedite massiv: ');
for i := 1 to n do
read(a[i]);
for i := 1 to n - 1 do
begin
min := i;
for j := i + 1 to n do
if a[min] > a[j] then
min := j;
t := a[i];
a[i] := a[min];
a[min] := t;
end;
for i := 1 to n do
write(a[i], ' ');
writeln;
end.
14, Дана последовательность чисел . Используя сортировку обменами, написать программу (на языке Visual Basic или Pascal) упорядочивания элементов по возрастанию.
const
SIZE=255;
var
a : array[1..SIZE] of integer;
min, i, j, n, t : integer;
begin
write('vvedite n: ');
readln(n);
write('vvedite massiv: ');
for i := 1 to n do
read(a[i]);
for i := 1 to n do
begin
for j := n downto i do
begin
if a[i] > a[j] then
begin
min := a[j];
a[j] := a[i];
a[i] := min;
end;
end;
end;
for i := 1 to n do
write(a[i], ' ');
writeln;
end.
15.Дана последовательность чисел . Используя сортировку вставками, написать программу (на языке Visual Basic или Pascal) упорядочивания элементов по убыванию.
const
SIZE=255;
var
a : array[1..SIZE] of integer;
min, i, j, n, t : integer;
begin
write('vvedite n: ');
readln(n);
write('vvedite massiv: ');
for i := 1 to n do
read(a[i]);
for i:=1 to n do
begin
t := a[i];
j:=i-1;
while (j>=0) and (a[j] > t) do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=t;
end;
for i := 1 to n do
write(a[i], ' ');
writeln;
end.
16. Написать программу на языке Pascal для решения задачи: Вычислить значение суммы членов бесконечного ряда c заданной точностью ε. На печать вывести значение суммы и число членов ряда, вошедших в сумму.
const
eps=0.001;
var
x, s, Sum : Double;
n, k, fak : Integer;
begin
Sum:=1;
s:=1;
n:=0;
repeat
n := n + 1;
fak := 1;
for k := n downto 1 do fak := fak * k;
s := cos(n*x)/fak;
Sum:= Sum+s;
until abs(s)<Eps;
writeln('Sum chlenov radya: ',Sum);
writeln('Count: ',n);
end.
17. Написать программу на языке Pascal для решения задачи: Протабулировать функцию при изменении аргумента в указанном диапазоне и c заданным шагом. Организовать вывод значения аргумента и вычисленного значения функции в виде таблицы.
VAR
x, y,
xmin, xmax, dx : Real;
BEGIN
Writeln('Tab function.');
xmin := 2;
xmax := 5;
dx := 0.25;
x := xmin;
WHILE x<=xmax DO begin
if x > 3.5 then
begin
y := sin(x)*(ln(x)/ln(10));
end
else
begin
y := cos(x)*cos(x);
end;
Writeln(x:6:3, ' ', y:6:3);
x := x+dx;
end;
Readln
END.
18. Написать программу на языке Pascal для решения задачи: Отредактировать заданное предложение, заменяя многоточия точкой.
VAR
s : String;
i, j : integer;
BEGIN
Write('Vvedite string:');
readln(s);
for i := 1 to Length(s) do
begin
if copy(s,i,3) = '...' then
begin
delete(s,i,2);
end;
end;
writeln(s);
END.