Разработка программы для обучения нахождению определителя матрицы
Определение назначения изучаемой программы и требований к её функциональным характеристикам, надежности, составу технических средств, информационной и программной совместимости, программной документации. Описание структуры данных, размещенных в файле.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.11.2017 |
Размер файла | 490,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
Национальный исследовательский университет
«Высшая школа экономики»
Московский институт электроники и математики
Национального исследовательского университета
«Высшая школа экономики»
Кафедра информационных технологий
и автоматизированных систем
Курсовая работа
по дисциплине “Программирование”
(язык С/С++)
Тема: Разработка программы для обучения нахождению определителя матрицы
Выполнил:
Хруслова Д.В.
Руководитель:
Трухачев И.В.
Группа 11-ИВТ
Москва 2014
Оглавление
1. Техническое задание
1.1 Назначение программы
1.2 Требования к программе
1.2.1 Требования к функциональным характеристикам
1.2.2 Требования к надежности
1.2.3 Требования к составу технических средств
1.2.4 Требования к информационной и программной совместимости
1.3 Требования к программной документации
1.4 Входные/выходные данные
1.4.1 Входные данные
1.4.2 Описание структуры данных, размещенных в файле
1.4.3 Выходные данные
2. Условие задачи
3. Постановка задачи
4. Внешняя спецификация
5. Метод решения задачи
6. Описание алгоритма
7. Структура программы
8. Распечатка тестов и результатов работы программы
Список литературы
Приложение
программа надежность совместимость файл
1. Техническое задание
Задание на курсовую работу.
Требуется написать программу, которая будет помогать вычислять определитель матрицы пользователю. Результатом должно быть сообщение и указание на ее место или сообщение о правильности ввода.
1.1 Назначение программы
Настоящее техническое задание распространяется на разработку программного продукта, программы «Вычисляем определитель», которая имеет обучающий характер в области высшей математики.
Цель работы
Целью работы является программа, которая помогала пользователю научиться вычислять определитель матрицы.
1.2 Требования к программе
1.2.1 Требования к функциональным характеристикам
- Программа должна указывать на ошибки пользователя.
- Результат: сообщение об ошибке и указание на нее.
1.2.2 Требования к надежности
- Контроль входных данных (Выполнять ввод данных нужно строго по указаниям, описанных в программе)
1.2.3 Требования к составу технических средств
- Рекомендуется компьютер, оснащенный процессором Intel/Pentium/Celeron, AMD K6/Athlon/Duron или совместимым с частотой 400 МГц или более (одно- или двухпроцессорная система)*. Минимальная частота процессора - 300 МГц.
- Рекомендуется 256 МБ ОЗУ или более. Минимально допустимый объем - 128 МБ
(при наличии 128 МБ ОЗУ возможно снижение производительности и функциональности).
- Монитор и видеоадаптер PHILIPS с разрешением 1024 X 768 или более высоким.
- Клавиатура и мышь Microsoft или совместимое указывающее устройство
1.2.4 Требования к информационной и программной совместимости
Установленный QT-creator версии 2.4.1
Установленный QT версии 4.7.4
- Программное обеспечение: Windows Installer 4.5 и Internet Explorer 5.01 или более поздние версии.
-Язык программирования: C++.
1.3 Требование к программной документации
В данной работе разрабатывается Техническое Задание
1.4 Входные/выходные данные
1.4.1 Входные данные
Номер задания
Решение выбранного задания
Ввод PIN для входа под учетной записью администратора (не обязательно)
1.4.2 Описание структуры данных, размещаемых в файле
В файле, название которого вводится пользователем, содержатся слова и описание их значений. Этот файл нужен для того, чтобы с него считывать слова, которые можно использовать в кроссворде.
1.4.3 Выходные данные:
Сообщение об ошибке или правильности
Шкала процесса выполнения заданий
Пройденные задания
Указание на место ошибки
Переключение на администратора(при вводе ПИН)
2. Условие задачи
В программе должна присутствовать теоретическая часть.
В программе должны присутствовать несколько заданий.
Программа должна искать ошибки пользователя.
3. Постановка задачи
Дано:
10 встроенных матриц: 2х2 - 3шт, 3х3 - 3шт, 4х4 - 3 шт, 10х10 - 1шт.
Результат: Сообщение об ошибке или правильности выполнения, указание на место ошибки, если таковая имеется. Изменение шкалы прогресса. Указание на пройденные задания.
При: Вводе по строго указанным в программе алгоритмам.
Связь: сообщение ошибки и указание на место и причину при несоответствии в решении. Изменение шкалы прогресса при правильном выполнении.
4. Внешняя спецификация
Ниже приведена внешняя спецификация для программы «Вычисляем определитель»
Рис. 1 Исходная страница программы.
Рис. 2 Выбор задания, правильное выполнение.
Рис.3 Сообщения об ошибке
Рис. 4 Под учетной записью администратора
5. Метод решения задачи
Считываем номер задания, программа выводит матрицу.
Считываем выражение пользователя и ответ. Сравниваем со встроенным решением и ответом посимвольно в программе. Как только находится несоответствие, программа выдает сообщение об ошибке и указывает на ее место в решении пользователя. Как только пользователь находит ошибку и исправляет ее, программа
Повторяет подобную процедуру.
6. Описание алгоритма
Структуры:
QLabel: Для хранения или вывода сообщений.
QPlainTextEdit: Для расширенного ввода данных.
QPushButton: Для выполнения определенных операций при нажатии.
QTextBrowser: Для хранения или вывода данных.
QTextEdit: Для ввода данных.
QProgressBar: Для вывода прогресса выполнения заданий
Основные переменные:
Num - номер выполняемого задания.
Z1p,…,z10p - вводимые пользователем решения.
Z1,…z10 - встроенные решения матриц.
S - ответы.
Pin - ПИН-код для режима Администратора.
Функции:
Рис. 5 Функции программы
Описание:
Считывание номера из plainTextEdit_2; проверка на проходимость задания; Проверка на правильность ввода задания;
void MainWindow::on_pushButton_2_clicked()
{
int num = ui->plainTextEdit_2->toPlainText().toInt();
if(num==1)
{
if(ui->pz1->toPlainText()=="+")
ui->textBrowser->setText("3 15\n2 1\n You've' already done this.");
else
ui->textBrowser->setText("3 15\n2 1");
}
...
if(num>10)
ui->textBrowser->setText("No such nomber");
if(!(ui->plainTextEdit_2->toPlainText().toInt())||num<1)
ui->textBrowser->setText("Something wrong");
}
2)Считывание решения пользователя из plainTextEdit; Сравнение соответствующих решений; Вывод сообщений; Изменение параметра progressBar; Запись о проходимости и количества пройденных заданий.
void MainWindow::on_pushButton_clicked()
{
QString z1p,z3p,z2p,z4p,z5p,z6p,z7p,z8p,z9p,z10p;
int i=0,s;
bool f=true;
int prog=ui->textBrowser_2->toPlainText().toInt();
int num = ui->plainTextEdit_2->toPlainText().toInt();
ui->textBrowser_3->hide();
ui->label_2->setText(" ");
ui->label_3->setText(" ");
ui->label_4->setText(" ");
ui->label_5->setText(" ");
ui->label_6->setText(" ");
if (num==1)
{
z1p=ui->plainTextEdit->toPlainText();
QString z1="3*1-15*2";
s=3*1-15*2;
for (i=0;i<=z1p.size()&&f==true;i++)
if(z1p[i]!=z1[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if (z1p.size()<z1.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z1p.size()>z1.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (z1p.size()==0)
{
ui->label_6->setText("You didn't write anything.");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz1->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz1->setText("+");
}
}
}
…
if(prog==10)
ui->label_10->setText("Congratulations! You know how to find the determinant of matrix. Good luck!");
}
3) Проверка ПИН-кода
void MainWindow::on_pushButton_pin_clicked()
{
int i;
bool prpin=true;
QString pin="2036", pinp;
pinp=ui->textEdit_pin->toPlainText();
for(i=0;i<4;i++)
if(pin[i]!=pinp[i])
{
ui->label_pin->setText("Wrong PIN! Try again.");
prpin=false;
}
if(prpin==true)
{
ui->pushButton_ans->show();
ui->pushButton_user->show();
ui->label_pin->setText(" ");
ui->pushButton_admin->hide();
ui->pushButton_pin->hide();
ui->label_11->hide();
ui->textEdit_pin->hide();
ui->textEdit_pin->setText("");
}
}
4)Вход под администратора.(Доступ к кнопкам)
void MainWindow::on_pushButton_admin_clicked()
{
ui->pushButton_pin->show();
ui->textEdit_pin->show();
ui->label_11->show();
}
5)Вход под пользователя.(Лишение доступа к кнопкам)
void MainWindow::on_pushButton_user_clicked()
{
ui->pushButton_ans->hide();
ui->pushButton_user->hide();
ui->plainTextEdit->clear();
ui->pushButton_admin->show();
}
6)Вывод решения на plainTextEdit_2; Показывает ответ. Доступно только администратору.
void MainWindow::on_pushButton_ans_clicked()
{
int s;
int num = ui->plainTextEdit_2->toPlainText().toInt();
if (num==1)
{
ui->plainTextEdit->setPlainText("3*1-15*2");
s=3*1-15*2;
ui->label_3->setText(QString::number(s));
}
…
}
7. Структура программы
Рис. 6 Структура программы
QLabel - для вывода сообщений и\или заголовков.
QPlainTextEdit, QTextEdit - для ввода\вывода текстовых строк.
QPushButton - кнопки для реализации функций и процедур.
QTextBrowser - для вывода текста без права редактирования.
QProgressBar - шкала прогресса. Показывает сколько процентов задачи выполнено.
8. Распечатка тестов и результатов работы программы
1.Ввод данных, правильное выполнение, показывает, что задание выполнено повторно, шкала прогресса, выполненные задания отмечены плюсом:
Рис. 7 Тесты 1
2.неправильный ответ при правильном решении:
Рис. 8 Тесты 2
3.Сообщения об ошибках при верном ответе, но неправильном решении:
Рис.9 Тесты 3 Рис. 10 Тесты 4
4. При полном выполнении, при выполнении 10 задания:
Рис.11 Тесты 5
5. При неверном вводе номера:
Рис. 12 Тесты 6 Рис. 13 Тесты 7
Список литературы
1. http://doc.qt.io/ - Описание классов, библиотек, и прочего в Qt.
2. Белоусов И. В. - Матрицы и определители. Учебное пособие по линейной алгебре
3. Стефан Р. Дэвис - С++ Для чайников
4. А.Крупник - Изучаем Си
5. Проскуряков И.В. Сборник задач по линейной алгебре
Приложение
1.Распечатка программы
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "stdio.h"
#include "QString"
#include "qstring.h"
#include "stdlib.h"
#include "QProgressBar"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->progressBar->setValue(0);
ui->textBrowser_2->setText("0");
ui->textEdit_pin->hide();
ui->pushButton_ans->hide();
ui->pushButton_pin->hide();
ui->pushButton_user->hide();
ui->label_11->hide();
ui->textBrowser_3->hide();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_2_clicked()
{
int num = ui->plainTextEdit_2->toPlainText().toInt();
if(num==1)
{
if(ui->pz1->toPlainText()=="+")
ui->textBrowser->setText("3 15\n2 1\n You've' already done this.");
else
ui->textBrowser->setText("3 15\n2 1");
}
if(num==2)
{
if(ui->pz2->toPlainText()=="+")
ui->textBrowser->setText(" 0 4\n-2 132\nYou've' already done this.");
else
ui->textBrowser->setText(" 0 4\n-2 132");
}
if(num==3)
{
if(ui->pz3->toPlainText()=="+")
ui->textBrowser->setText("144 132\n-11 -8\n You've' already done this.");
else
ui->textBrowser->setText("144 132\n-11 -8");
}
if(num==4)
{
if(ui->pz4->toPlainText()=="+")
ui->textBrowser->setText("5 1 6\n3 4 8\n0 1 5\n You've' already done this.");
else
ui->textBrowser->setText("5 1 6\n3 4 8\n0 1 5");
}
if(num==5)
{
if(ui->pz5->toPlainText()=="+")
ui->textBrowser->setText("2 -3 11\n0 0 -2\n5 -1 9\n You've' already done this.");
else
ui->textBrowser->setText("2 -3 11\n0 0 -2\n5 -1 9");
}
if(num==6)
{
if(ui->pz6->toPlainText()=="+")
ui->textBrowser->setText("11 -6 -12\n0 -1 5\n4 8 16\n You've' already done this.");
else
ui->textBrowser->setText("11 -6 -12\n0 -1 5\n4 8 16");
}
if(num==7)
{
if(ui->pz7->toPlainText()=="+")
ui->textBrowser->setText("1 0 -1 3\n7 4 8 -2\n0 -6 3 4\n1 8 1 0\n You've' already done this.");
else
ui->textBrowser->setText("1 0 -1 3\n7 4 8 -2\n0 -6 3 4\n1 8 1 0");
}
if(num==8)
{
if(ui->pz8->toPlainText()=="+")
ui->textBrowser->setText("0 0 14 -6\n1 8 0 -1\n-4 3 3 3\n16 0 -1 -2\n You've' already done this.");
else
ui->textBrowser->setText("0 0 14 -6\n1 8 0 -1\n-4 3 3 3\n16 0 -1 -2)");
}
if(num==9)
{
if(ui->pz9->toPlainText()=="+")
ui->textBrowser->setText("-5 7 -16 28\n7 4 8 -2\n0 -6 3 4\n1 8 1 0\n You've' already done this.");
else
ui->textBrowser->setText("-5 7 -16 28\n7 4 8 -2\n0 -6 3 4\n1 8 1 0");
}
if(num==10)
{
if(ui->pz10->toPlainText()=="+")
ui->textBrowser->setText("1 5-3 0-5 0-6 3 5 0\n0 5 0 6 0 0 5 0 0 0\n0 4 0 5 1 1 0 9 0 1\n5 0 5 9 0 0 9 6 0 0\n0 5 0 0 2 0 2 0 0 1\n6 6 1 0 0 0 0 6 0 0\n0 0 0 6 5 0 5 0 5 1\n0 0 0 0 0 0 0 9 0 0\n6 0 5 1 0 5 0 7 0 4\n0 5 0 1 0 0 5 0 2 0\n You've' already done this.");
else
ui->textBrowser->setText("1 5-3 0-5 0-6 3 5 0\n0 5 0 6 0 0 5 0 0 0\n0 4 0 5 1 1 0 9 0 1\n5 0 5 9 0 0 9 6 0 0\n0 5 0 0 2 0 2 0 0 1\n6 6 1 0 0 0 0 6 0 0\n0 0 0 6 5 0 5 0 5 1\n0 0 0 0 0 0 0 9 0 0\n6 0 5 1 0 5 0 7 0 4\n0 5 0 1 0 0 5 0 2 0");
}
if(num>10)
ui->textBrowser->setText("No such nomber");
if(!(ui->plainTextEdit_2->toPlainText().toInt())||num<1)
ui->textBrowser->setText("Something wrong");
}
void MainWindow::on_pushButton_clicked()
{
QString z1p,z3p,z2p,z4p,z5p,z6p,z7p,z8p,z9p,z10p;
int i=0,s;
bool f=true;
int prog=ui->textBrowser_2->toPlainText().toInt();
int num = ui->plainTextEdit_2->toPlainText().toInt();
ui->textBrowser_3->hide();
ui->label_2->setText(" ");
ui->label_3->setText(" ");
ui->label_4->setText(" ");
ui->label_5->setText(" ");
ui->label_6->setText(" ");
if (num==1)
{
z1p=ui->plainTextEdit->toPlainText();
QString z1="3*1-15*2";
s=3*1-15*2;
for (i=0;i<=z1p.size()&&f==true;i++)
if(z1p[i]!=z1[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if (z1p.size()<z1.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z1p.size()>z1.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (z1p.size()==0)
{
ui->label_6->setText("You didn't write anything.");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz1->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz1->setText("+");
}
}
}
if (num==2)
{
z2p=ui->plainTextEdit->toPlainText();
QString z2="0*132-4*(-2)";
s=0*132-4*(-2);
for (i=0;i<=z2p.size()&&f==true;i++)
if(z2p[i]!=z2[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z2p.size()<z2.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z2p.size()>z2.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz2->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz2->setText("+");
}
}
}
if (num==3)
{
z3p=ui->plainTextEdit->toPlainText();
QString z3="144*(-8)-132*(-11)";
s=144*(-8)-132*(-11);
for (i=0;i<=z3p.size()&&f==true;i++)
if(z3p[i]!=z3[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z3p.size()<z3.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z3p.size()>z3.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_3->setText(QString::number(s));
ui->label_2->setText("Good job!");
if(ui->pz3->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz3->setText("+");
}
}
}
if (num==4)
{
z4p=ui->plainTextEdit->toPlainText();
QString z4="5*(4*5-1*8)-1*(3*5-8*0)+6*(3*1-4*0)";
s=5*(4*5-1*8)-1*(3*5-8*0)+6*(3*1-4*0);
for (i=0;i<=z4p.size()&&f==true;i++)
if(z4p[i]!=z4[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z4p.size()<z4.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z4p.size()>z4.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz4->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz4->setText("+");
}
}
}
if (num==5)
{
z5p=ui->plainTextEdit->toPlainText();
QString z5="2*(0*9-(-1)*(-2))-(-3)*(0*9-(-2)*(-1))+11*(0*(-1)-0*5)";
s=2*(0*9-(-1)*(-2))-(-3)*(0*9-(-2)*(-1))+11*(0*(-1)-0*5);
for (i=0;i<=z5p.size()&&f==true;i++)
if(z5p[i]!=z5[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z5p.size()<z5.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z5p.size()>z5.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_3->setText(QString::number(s));
ui->label_2->setText("Good job!");
if(ui->pz5->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz5->setText("+");
}
}
}
if (num==6)
{
z6p=ui->plainTextEdit->toPlainText();
QString z6="11*((-1)*16-5*8)-(-6)*(0*16-5*4)+(-12)*(0*8-(-1)*4)";
s=11*((-1)*16-5*8)-(-6)*(0*16-5*4)+(-12)*(0*8-(-1)*4);
for (i=0;i<=z6p.size()&&f==true;i++)
if(z6p[i]!=z6[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z6p.size()<z6.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z6p.size()>z6.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz6->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz6->setText("+");
}
}
}
if (num==7)
{
z7p=ui->plainTextEdit->toPlainText();
QString z7="1*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-0*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-1)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-3*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1))";
s=1*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-0*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-1)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-3*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1));
for (i=0;i<=z7p.size()&&f==true;i++)
if(z7p[i]!=z7[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z7p.size()<z7.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z7p.size()>z7.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz7->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz7->setText("+");
}
}
}
if (num==8)
{
z8p=ui->plainTextEdit->toPlainText();
QString z8="0*(8*(3*(-2)-3*(-1))-0*(3*(-2)-3*0)+(-1)*(3*(-1)-3*0))-0*(1*(3*(-2)-3*0)-0*(-4*(-2)-3*16)+(-1)(-4*(-1)-3*16))+14*(1*(3*(-2)-3*0)-8*((-4)*(-2)-3*16)+(-1)*(-4*(-1)-3*16))-6*(1*(3*(-1)-3*0)-8*(-4*(-1)-3*16)+0*(-4*0-3*16))";
s=7162;
for (i=0;i<=z8p.size()&&f==true;i++)
if(z8p[i]!=z8[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z8p.size()<z8.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z8p.size()>z8.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz8->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz8->setText("+");
}
}
}
if (num==9)
{
z9p=ui->plainTextEdit->toPlainText();
QString z9="-5*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-7*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-16)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-28*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1))";
s=-5*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-7*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-16)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-28*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1));
for (i=0;i<=z9p.size()&&f==true;i++)
if(z9p[i]!=z9[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z9p.size()<z9.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z9p.size()>z9.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz9->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz9->setText("+");
}
}
}
if (num==10)
{
ui->textBrowser_3->show();
z10p=ui->plainTextEdit->toPlainText();
QString z10="1*(5*(0*(9*(2*(0*(5*(9*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5))-*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5))+*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5)))";
s=6038082;
for (i=0;i<=z10p.size()&&f==true;i++)
if(z10p[i]!=z10[i])
{
ui->label_2->setText("Mistake after");
ui->label_4->setText(QString::number(i));
ui->label_5->setText("element!");
f=false;
}
if (z10p.size()<z10.size())
{
ui->label_6->setText("You missed something or didn't finish term");
f=false;
}
if (z10p.size()>z10.size())
{
ui->label_6->setText("You wrote more then need. Check your derivation");
f=false;
}
if (s!=ui->textEdit_2->toPlainText().toInt())
{
ui->label_6->setText("Wrong answer. Check again (answer: 6038082)");
f=false;
}
if(f==true)
{
ui->label_2->setText("Good job!");
if(ui->pz10->toPlainText()!="+")
{
prog++;
ui->textBrowser_2->setText(QString::number(prog));
ui->progressBar->setValue(prog*10);
ui->pz10->setText("+");
}
}
}
if(prog==10)
ui->label_10->setText("Congratulations! You know how to find the determinant of matrix. Good luck!");
}
void MainWindow::on_pushButton_pin_clicked()
{
int i;
bool prpin=true;
QString pin="2036", pinp;
pinp=ui->textEdit_pin->toPlainText();
for(i=0;i<4;i++)
if(pin[i]!=pinp[i])
{
ui->label_pin->setText("Wrong PIN! Try again.");
prpin=false;
}
if(prpin==true)
{
ui->pushButton_ans->show();
ui->pushButton_user->show();
ui->label_pin->setText(" ");
ui->pushButton_admin->hide();
ui->pushButton_pin->hide();
ui->label_11->hide();
ui->textEdit_pin->hide();
ui->textEdit_pin->setText("");
}
}
void MainWindow::on_pushButton_admin_clicked()
{
ui->pushButton_pin->show();
ui->textEdit_pin->show();
ui->label_11->show();
}
void MainWindow::on_pushButton_user_clicked()
{
ui->pushButton_ans->hide();
ui->pushButton_user->hide();
ui->plainTextEdit->clear();
ui->pushButton_admin->show();
}
void MainWindow::on_pushButton_ans_clicked()
{
int s;
int num = ui->plainTextEdit_2->toPlainText().toInt();
if (num==1)
{
ui->plainTextEdit->setPlainText("3*1-15*2");
s=3*1-15*2;
ui->label_3->setText(QString::number(s));
}
if (num==2)
{
s=0*132-4*(-2);
ui->plainTextEdit->setPlainText("0*132-4*(-2)");
ui->label_3->setText(QString::number(s));
}
if (num==3)
{
s=144*(-8)-132*(-11);
ui->plainTextEdit->setPlainText("144*(-8)-132*(-11)");
ui->label_3->setText(QString::number(s));
}
if (num==4)
{
s=5*(4*5-1*8)-1*(3*5-8*0)+6*(3*1-4*0);
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("5*(4*5-1*8)-1*(3*5-8*0)+6*(3*1-4*0)");
}
if (num==5)
{
s=2*(0*9-(-1)*(-2))-(-3)*(0*9-(-2)*(-1))+11*(0*(-1)-0*5);
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("2*(0*9-(-1)*(-2))-(-3)*(0*9-(-2)*(-1))+11*(0*(-1)-0*5)");
}
if (num==6)
{
s=11*((-1)*16-5*8)-(-6)*(0*16-5*4)+(-12)*(0*8-(-1)*4);
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("11*((-1)*16-5*8)-(-6)*(0*16-5*4)+(-12)*(0*8-(-1)*4)");
}
if (num==7)
{
s=1*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-0*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-1)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-3*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1));
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("1*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-0*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-1)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-3*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1))");
}
if (num==8)
{
s=7162;
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("0*(8*(3*(-2)-3*(-1))-0*(3*(-2)-3*0)+(-1)*(3*(-1)-3*0))-0*(1*(3*(-2)-3*0)-0*(-4*(-2)-3*16)+(-1)(-4*(-1)-3*16))+14*(1*(3*(-2)-3*0)-8*((-4)*(-2)-3*16)+(-1)*(-4*(-1)-3*16))-6*(1*(3*(-1)-3*0)-8*(-4*(-1)-3*16)+0*(-4*0-3*16))");
}
if (num==9)
{
s=-5*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-7*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-16)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-28*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1));
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("-5*(4*(3*8-4*1)-8*(-6*0-4*8)+(-2)*(-6*1-3*8))-7*(7*(3*8-4*1)-8*(0*0-4*1)+(-2)*(0*0-3*1))+(-16)*(7*(-6*0-4*8)-4*(0*0-4*1)+(-2)*(0*8-(-6)*1))-28*(7*(-6*1-3*8)-4*(0*1-3*1)+8*(0*8-(-6)*1))");
}
if (num==10)
{
s=6038082;
ui->label_3->setText(QString::number(s));
ui->plainTextEdit->setPlainText("1*(5*(0*(9*(2*(0*(5*(9*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5))-*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5))+*(0*0-4*2)-0*7*0-4*0)+0*(7*2-0*0))-0*(0*(0*0-4*2)-0*0*0-4*5)+0*(0*2)-0*5))+5*(0*(7*0-4*0)-9*(0*0-4*5)+0*(0*0-7*5)))");
}
}
void MainWindow::on_pushButton_3_clicked()
{
ui->plainTextEdit->clear();
ui->textEdit_2->clear();
ui->textEdit_pin->clear();
ui->plainTextEdit_2->clear();
ui->textBrowser->clear();
}
Размещено на Allbest.ru
Подобные документы
Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.
курсовая работа [1,5 M], добавлен 17.11.2010Требования к функциональным характеристикам, составу и параметрам технических средств, информационной и программной совместимости. Описание программы: общие сведения, логическая структура. Средства и порядок испытаний. Входные и выходные данные.
курсовая работа [6,3 M], добавлен 12.01.2015Развитие эффективных способов воспроизведения музыкальной информации без потери качества. Требования к функциональным характеристикам, к надежности и безопасности, к составу и параметрам технических средств, к информационной и программной совместимости.
курсовая работа [496,0 K], добавлен 03.12.2010Анализ программной системы, способной облегчить действия руководителя тушения пожара и повысить эффективность пожарных работ. Требования к функциональным характеристикам, составу и параметрам технических средств. Разработка программной документации.
курсовая работа [381,6 K], добавлен 13.08.2013Разработка системы управления базой данных "Структура ВУЗа". Требования к программе: функциональным характеристикам, надежности, эксплуатации, составу и параметрам технических средств. Требования к программной документации. Порядок контроля и приемки.
курсовая работа [982,7 K], добавлен 08.06.2015Разработка игровой программы "разгадывания кроссворда". Создание схемы хранения данных, изучение возможности среды программирования. Требования к функциональным характеристикам, составу и параметрам технических средств, информационной совместимости.
курсовая работа [403,9 K], добавлен 26.03.2015Описание этапов разработки программы "дневник": формулирование проблемной ситуации, определение технических требований в функциональным характеристикам и надежности программы, проектирование интерфейса, создание алгоритмов. Тестирование готового продукта.
курсовая работа [1,7 M], добавлен 26.12.2011Составление пакета программной документации. Анализ функционирования и совершенствование программы. Стандарты, регламентирующие ее эксплуатацию. Изучение требований к составу, содержанию и оформлению документов. Порядок хранения и обновления файлов.
курсовая работа [31,2 K], добавлен 02.08.2015Требования к информационной и программной совместимости. Описание алгоритма и задач. Разработка программы, предназначенной для работы с системой обработки данных и для оформления сопровождающей документации. Схема работы кадровой службы с программой.
отчет по практике [1,9 M], добавлен 13.12.2011Стадии и этапы разработки программного продукта для осуществления упрощенной работы с клиентами и учёта услуг оказываемых "Интернет-центром". Требования к функциональным характеристикам и надежности программы, к составу и параметрам технических средств.
лабораторная работа [29,4 K], добавлен 13.06.2014