Лабораторная работа №4
|
|
|
|
Лабораторная работа №5
|
|
|
|
Лабораторная работа №6
|
|
|
|
Лабораторная работа №7
Известны результаты каждой из 4х четвертей баскетбольной встречи (данные занесены в файл basketboll.txt). Нужно определить победителя матча и записать его в файл pobed.txt.
В декартовой системе координат на плоскости заданы координаты вершин треугольника и еще одной точки (файл treug.txt). Требуется написать программу, определяющую, принадлежит ли эта точка треугольнику и записать в файл input.txt.
Между двумя крупнейшими городами нашей страны Санкт-Петербургом и Москвой ежедневно совершают рейсы 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
С использованием OpenGL изобразить вращающийся куб.
С использованием 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
