Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные задания.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
144 Кб
Скачать
☆

Лабораторная работа №4

  1. Составьте программу, в ходе выполнения которой на форме будет нарисован график нефроида r = a (1 + 2 sin(theta / 2)) в полярных координатах. (20 баллов)

  1. Составьте программу, в ходе выполнения которой на форме будет нарисован график эпициклоиды x = n a cos(theta) + a cos(n theta), y = n a sin(theta) - a sin(n theta). (20 баллов)

  1. Составьте программу, в ходе выполнения которой на форме будет нарисован график эпициклоиды x = n a cos(theta) - a cos(n theta), y = n a sin(theta) - a sin(n theta). (20 баллов)

  1. Составьте программу, в ходе выполнения которой на форме будет нарисован график трисектрисы R(a)=A/cos(a/3) в полярных координатах. (20 баллов)

Лабораторная работа №5

  1. Дана строка-предложение, содержащая знаки препинания. Преобразовать ее так, чтобы в ней не было знаков препинания. (20 баллов)

  1. Дана строка-предложение на русском языке. Вывести самое короткое слово в предложении (если таких слов несколько, то вывести первое из них). (25 баллов)

  1. Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. (30 баллов)

  1. Вам необходимо проверить домашнюю работу Васи Пупкина, в которой он написал равенство. Например, запись вида «2+3=5» является правильной, а «23*7=421» неверная, но корректная. Корректной записью выражения будем называть последовательность: число, операция («+», «-», «*», «/»), число, знак равенства, число. Т.е. если в записи не хватает цифр или же встречается неизвестный символ. Например, записи «2*=3», «173» и «2+2=a» некорректны. (35 баллов)

Лабораторная работа №6

  1. Даны два неупорядоченных набора (файлы A.txt и B.txt) натуральных чисел (может быть, с повторениями). Выдать без повторений в порядке возрастания все те числа, которые встречаются в обоих наборах. (40 баллов)

  1. Задана прямая L двумя точками C(Xc,Yc) и D(Xd,Yd), параллельная одной из осей координат, и точка А(Xa,Ya). Найдите координаты точки B(Xb,Yb), симметричную А относительно L. (40 балов)

  1. Дан целочисленный массив М(n), заполненный случайными целыми числами от -F до F. Определить количество максимальных элементов и их индексы. (20 баллов)

  1. Проверить, имеется ли в данном массиве Y(n), заполненными случайными целыми числами от -F до F, хотя одно максимальное число, которое больше числа A и меньше числа B. Полученное число и его номер вывести. (25 баллов)

Лабораторная работа №7

  1. Известны результаты каждой из 4х четвертей баскетбольной встречи (данные занесены в файл basketboll.txt). Нужно определить победителя матча и записать его в файл pobed.txt.

  2. В декартовой системе координат на плоскости заданы координаты вершин треугольника и еще одной точки (файл treug.txt). Требуется написать программу, определяющую, принадлежит ли эта точка треугольнику и записать в файл input.txt.

  3. Между двумя крупнейшими городами нашей страны Санкт-Петербургом и Москвой ежедневно совершают рейсы n поездов. Для каждого поезда известно его время отправления из Санкт-Петербурга и время прибытия в Москву (файл poezd.txt). Найдите самый быстрый поезд и его скорость в предположении (записать в файл quick.txt), что длина железной дороги между Санкт-Петербургом и Москвой равна 650 км.

/* ======================================================================

** main.cpp

** ======================================================================

*/

#include <QApplication>

#include "FileFinder.h"

// ----------------------------------------------------------------------

int main (int argc, char** argv)

{

QApplication app(argc, argv);

FileFinder fileFinder;

fileFinder.resize(370, 240);

fileFinder.show();

return app.exec();

}

/* ====================================================================

FileFinder.h

=====================================================================*/

#ifndef _FileFinder_h_

#define _FileFinder_h_

#include <QWidget>

#include <QDir>

class QLineEdit;

class QTextEdit;

// ====================================================================

class FileFinder : public QWidget {

Q_OBJECT

private:

QLineEdit* m_ptxtDir;

QLineEdit* m_ptxtMask;

QTextEdit* m_ptxtResult;

public:

FileFinder(QWidget* pwgt = 0);

void start(const QDir& dir);

public slots:

void slotFind ();

void slotBrowse();

};

#endif //_FileFinder_h_

/* ====================================================================

FileFinder.cpp

=====================================================================*/

#include <QtGui>

#include "fileopen.xpm"

#include "FileFinder.h"

// ----------------------------------------------------------------------

FileFinder::FileFinder(QWidget* pwgt/*= 0*/) : QWidget(pwgt)

{

m_ptxtDir = new QLineEdit(QDir::current().absolutePath());

m_ptxtMask = new QLineEdit("*.cpp *.h");

m_ptxtResult = new QTextEdit;

QLabel* plblDir = new QLabel("&Directory");

QLabel* plblMask = new QLabel("&Mask");

QPushButton* pcmdDir = new QPushButton(QPixmap(fileopen), "");

QPushButton* pcmdFind = new QPushButton("&Find");

connect(pcmdDir, SIGNAL(clicked()), SLOT(slotBrowse()));

connect(pcmdFind, SIGNAL(clicked()), SLOT(slotFind()));

plblDir->setBuddy(m_ptxtDir);

plblMask->setBuddy(m_ptxtMask);

//Layout setup

QGridLayout* pgrdLayout = new QGridLayout;

pgrdLayout->setMargin(5);

pgrdLayout->setSpacing(15);

pgrdLayout->addWidget(plblDir, 0, 0);

pgrdLayout->addWidget(plblMask, 1, 0);

pgrdLayout->addWidget(m_ptxtDir, 0, 1);

pgrdLayout->addWidget(m_ptxtMask, 1, 1);

pgrdLayout->addWidget(pcmdDir, 0, 2);

pgrdLayout->addWidget(pcmdFind, 1, 2);

pgrdLayout->addWidget(m_ptxtResult, 2, 0, 1, 3);

setLayout(pgrdLayout);

}

// ----------------------------------------------------------------------

void FileFinder::slotBrowse()

{

QString str = QFileDialog::getExistingDirectory(0,

"Select a Directory",

m_ptxtDir->text()

);

if (!str.isEmpty()) {

m_ptxtDir->setText(str);

}

}

// ----------------------------------------------------------------------

void FileFinder::slotFind()

{

start(QDir(m_ptxtDir->text()));

}

// ----------------------------------------------------------------------

void FileFinder::start(const QDir& dir)

{

QApplication::processEvents();

QStringList listFiles =

dir.entryList(m_ptxtMask->text().split(" "), QDir::Files);

foreach (QString file, listFiles) {

m_ptxtResult->append(dir.absoluteFilePath(file));

}

QStringList listDir = dir.entryList(QDir::Dirs);

foreach (QString subdir, listDir) {

if (subdir == "." || subdir == "..") {

continue;

}

start(QDir(dir.absoluteFilePath(subdir)));

}

}

/* fileopen.xpm */

static const char *fileopen[] = {

" 16 13 5 1",

". c #040404",

"# c #808304",

"a c None",

"b c #f3f704",

"c c #f3f7f3",

"aaaaaaaaa...aaaa",

"aaaaaaaa.aaa.a.a",

"aaaaaaaaaaaaa..a",

"a...aaaaaaaa...a",

".bcb.......aaaaa",

".cbcbcbcbc.aaaaa",

".bcbcbcbcb.aaaaa",

".cbcb...........",

".bcb.#########.a",

".cb.#########.aa",

".b.#########.aaa",

"..#########.aaaa",

"...........aaaaa"

};

Лабораторная работа №8

  1. С использованием OpenGL изобразить вращающийся куб.

  2. С использованием OpenGL изобразить вращающийся карандащ.

Файл main.cpp

#include <QApplication>

#include <iostream>

#include "tetrahedron.h"

using namespace std;

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

if (!QGLFormat::hasOpenGL()) {

cerr << "This system has no OpenGL support" << endl;

return 1;

}

Tetrahedron tetrahedron;

tetrahedron.setWindowTitle(QObject::tr("Tetrahedron"));

tetrahedron.resize(300, 300);

tetrahedron.show();

return app.exec();

}

Файл tetrahedron.h

#ifndef TETRAHEDRON_H

#define TETRAHEDRON_H

#include <QGLWidget>

class Tetrahedron : public QGLWidget

{

Q_OBJECT

public:

Tetrahedron(QWidget *parent = 0);

protected:

void initializeGL();

void resizeGL(int width, int height);

void paintGL();

void mousePressEvent(QMouseEvent *event);

void mouseMoveEvent(QMouseEvent *event);

void mouseDoubleClickEvent(QMouseEvent *event);

private:

void draw();

int faceAtPosition(const QPoint &pos);

GLfloat rotationX;

GLfloat rotationY;

GLfloat rotationZ;

QColor faceColors[4];

QPoint lastPos;

};

#endif