Файл: информатика(практика).doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.04.2024

Просмотров: 34

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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;

};

};


Описать класс, реализующий стек.

// 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;

}

Просмотр результата проги в Pascal Debug->Output

Дана последовательность чисел . Используя сортировку выбором, написать программу (на языке 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.

Дана последовательность чисел . Используя сортировку обменами, написать программу (на языке Visual Basic или Pascal) упорядочивания элементов по возрастанию.