Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ISVP_Labs_16_17.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
8 Мб
Скачать
☆

2.4.Варианты заданий

В приведенных ниже вариантах заданий под векторами подразумеваются одномерные массивы, а под матрицами – двумерные.

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

Выбор варианта задания согласуйте с преподавателем.

Таблица 1

Варианты заданий

Вариант

Задание

1

Реализовать операции сложения и вычитания двух прямоугольных матриц одинакового размера

2

Реализовать операцию транспонирования прямоугольной матрицы. Например, если для этой операции выбрать знак ~, то программа должна позволять вычислять выражения вроде A=~B. Понятно, что если матрица А имеет размер 3х4, то матрица В должна иметь размер 4х3

3

Реализовать операцию умножения двух прямоугольных матриц. Две матрицы можно перемножить, если число столбцов первой матрицы равно числу строк второй. Например, если первая матрица имеет размер 3х4, а вторая 4х2, то получим результирующую матрицу 3х2

4

Реализовать операцию умножения матрицы на заданную величину, а также сложения матрицы с заданной величиной

5

Реализовать операцию умножения матрицы на вектор. Например, если имеется матрица размером 3х4 и вектор размером 4, то в результате должен получиться вектор размером 3. Матрица и вектор должны быть реализованы как разные классы

6

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

7

Реализовать операцию прямого (внешнего) произведения двух прямоугольных матриц одинакового размера С=А*В. Элементы матрицы С являются произведением соответствующих элементов матриц А и В: С[i][j]=A [i][j]*B[i][j]

8

Реализовать операцию нормирования вектора путем приведения его значений к диапазону от -1 до +1

9

Реализовать операцию умножения матрицы на вектор. Например, если имеется матрица размером 3х4 и вектор размером 4, то в результате должен получиться вектор размером 3

10

Реализовать операции вычитания и деления векторов и проиллюстрировать возможность вычисления выражений вроде a=(b-c)/d, где a, b, c и d – векторы

11

Реализовать операции сложения и вычитания двух треугольных матриц одинакового размера

3.Классная работа

Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете

Martin Golding

Цель работы – работа! (4+4 час.). Работа состоит из двух частей, каждая из которых должна быть сдана отдельно!

3.1.Постановка задачи

Шаг 1. Сгенерируйте приложение SDI.

Из меню File в Visual C++ выберите New Project, в дереве Project Types выберите MFC, а в Templates – MFC Application. Не устанавливайте переключатель “Create directory for solution”. Присвойте проекту имя (в данном примере выбрано имя Gen) и щелкните ОК (рис. 1). В списке Resource language не забудьте выбрать элемент со значением Русский.

Рис.1. Выбор мастера для создания каркаса приложения

Среда MVS 2010 выведет следующее окно (рис. 2), в правой части которого перечислены заданные по умолчанию свойства проекта. Значения всех свойств проекта установите такими, как они выбраны на рис. 2.

Рис. 2. Тип приложения

На вкладках Compound Document Support, Document Template Properties и Database Support оставьте все без изменений, а на вкладке User Interface Features выберите радиокнопку Use a classic menu и Use a classic docking toolbar (рис. 3).

Рис. 3. Свойства пользовательского интерфейса

На вкладке Advanced Features рекомендую снять все переключатели, а на вкладке Generated Classes в качестве базового класса вида выберите обязательно CFormView.

Щелкните кнопку Finish для того, чтобы завершить создание приложения.

Шаг 2. Доработайте и тестируйте полученное приложение.

Запустите приложение на выполнение с помощью команды F5, чтобы убедиться в том, что приложение – пока вы не начали его усовершенствовать – еще работоспособно.

Найдите в проекте файл, в котором описана функция InitInstance(), и вставьте перед оператором m_pMainWnd->ShowWindow(SW_SHOW); приведенный ниже код, который позволяет несколько украсить свое приложение и придать ему некоторую неповторимость.

Опять запустите приложение на выполнение – работает?!

Шаг 3. Добавим в проект класс. С помощью команды меню ProjectAdd Class добавьте в проект обычный С++ класс. Например, если мы дадим классу имя CFoo, то получим два файла с таким содержимым:

файл Foo.h

#pragma once

class CFoo

{

public:

CFoo(void);

~CFoo(void);

};

файл Foo.cpp

#include "StdAfx.h"

#include "Foo.h"

CFoo::CFoo(void)

{

}

CFoo::~CFoo(void)

{

}

Далее вызовем окно ClassView (Ctrl+Shift+C), выберем в нем класс CFoo, вызовем для него контекстное меню и обнаружим там, в частности, команды AddAdd Function и AddAdd Variable. Нашли? Пользуясь этими командами, можно довести наш класс до такого, например, вида:

файл Foo.h

#pragma once

// Этот замечательный класс предназначен для моделирования

// поведения чупакабры

class CFoo

{

public:

CFoo(void);

~CFoo(void);

// SmartMethod возвращает значение true, если чупакабра с именем

// Name съела не меньше Count собак

virtual bool SmartMethod(int Count, char * Name);

private:

// вес чупакабры до ужина [кг]

double m_dWeight;

};

файл Foo.cpp

#include "StdAfx.h"

#include "Foo.h"

CFoo::CFoo(void)

: m_dWeight(0)

{

}

CFoo::~CFoo(void)

{

}

// SmartMethod возвращает значение true, если чупакабра

// с именем Name съела не меньше Count собак

bool CFoo::SmartMethod(int Count, char * Name)

{

return false;

}

Хочу обратить ваше внимание на следующие возможности мастеров ИС:

  • при добавлении переменной можно указать в комментарии ее назначение и спецификатор доступа. Кроме того, мастер добавляет инициализацию этой переменной в конструктор класса;

  • при добавлении функции можно указать произвольное число параметров (потренируйтесь!). Мастер генерирует не только прототип функции, но и ее «реализацию», причем при нужде добавляется и оператор return.

Как видно из приведенного примера, мастера ИС выполняют за программиста черновую работу, причем, заметьте, и даром, и безошибочно! Но, конечно, ничто не совершенно в этом мире и вам предоставляется счастливый случай исправить эти недостатки мастеров ИС.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]