Разработка программы для обучения нахождению определителя матрицы
Назначение и функции программы. Структуры данных, размещенных в файле. Требования к функциональным характеристикам, надежности, составу технических средств, информационной и программной совместимости. Метод решения задачи. Распечатка тестов программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.11.2017 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
Национальный исследовательский университет
«Высшая школа экономики»
Московский институт электроники и математики
Национального исследовательского университета
«Высшая школа экономики»
Кафедра информационных технологий
и автоматизированных систем
Курсовая работа
по дисциплине Программирование
Тема: Разработка программы для обучения нахождению определителя матрицы
Выполнил
Хруслова Д.В
Руководитель
Трухачев И.В
Группа 11-ИВТ
Москва 2014
Задание на курсовую работу
Написать программу на с++.
Требуется написать программу, которая будет помогать вычислять определитель матрицы пользователю. Результатом должно быть сообщение и указание на ее место или сообщение о правильности ввода.
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 Функции программы
Описание:
1) Считывание номера из 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 Структура программы
8. Распечатка программы
#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();
}
9. Распечатка тестов и результатов работы программы
1. Ввод данных, правильное выполнение, показывает, что задание выполнено повторно, шкала прогресса, выполненные задания отмечены плюсом:
2. Неправильный ответ при правильном решении:
3. Сообщения об ошибках при верном ответе, но неправильном решении:
4. При полном выполнении, при выполнении 10 задания:
5. При неверном вводе номера:
Размещено на Allbest.ur
...Подобные документы
Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.
курсовая работа [1,5 M], добавлен 17.11.2010Разработка игровой программы "разгадывания кроссворда". Создание схемы хранения данных, изучение возможности среды программирования. Требования к функциональным характеристикам, составу и параметрам технических средств, информационной совместимости.
курсовая работа [403,9 K], добавлен 26.03.2015Требования к функциональным характеристикам, составу и параметрам технических средств, информационной и программной совместимости. Описание программы: общие сведения, логическая структура. Средства и порядок испытаний. Входные и выходные данные.
курсовая работа [6,3 M], добавлен 12.01.2015Развитие эффективных способов воспроизведения музыкальной информации без потери качества. Требования к функциональным характеристикам, к надежности и безопасности, к составу и параметрам технических средств, к информационной и программной совместимости.
курсовая работа [496,0 K], добавлен 03.12.2010Общие сведения об электронных учебниках, структура и функции. Обзор методов решения поставленной задачи и обоснование их выбора. Требования к информационной и программной совместимости, составу и параметрам технических средств. Характеристика программы.
курсовая работа [3,0 M], добавлен 20.09.2014Разработка программы, позволяющей реализовать шифрование и дешифрование текстового файла методом замены и методом перестановки. Требования к функциональным характеристикам, надежности, составу и параметрам технических средств ПО. Интерфейс пользователя.
курсовая работа [19,0 K], добавлен 30.04.2011Стадии и этапы разработки программного продукта для осуществления упрощенной работы с клиентами и учёта услуг оказываемых "Интернет-центром". Требования к функциональным характеристикам и надежности программы, к составу и параметрам технических средств.
лабораторная работа [29,4 K], добавлен 13.06.2014Разработка системы управления базой данных "Структура ВУЗа". Требования к программе: функциональным характеристикам, надежности, эксплуатации, составу и параметрам технических средств. Требования к программной документации. Порядок контроля и приемки.
курсовая работа [982,7 K], добавлен 08.06.2015Разработка технологии обработки информации, а также структуры и формы представления данных. Подбор алгоритма и программы решения задачи. Определение конфигурации технических средств. Специфика процесса тестирования и оценки надежности программы.
курсовая работа [959,1 K], добавлен 12.12.2011Системный анализ предметной области. Требования к программе и программному изделию, к функциональным характеристикам, к надежности, составу и параметрам технических средств. Обоснование выбора средств выбора для хранения и обработки базы данных.
реферат [403,8 K], добавлен 02.02.2014Описание этапов разработки программы "дневник": формулирование проблемной ситуации, определение технических требований в функциональным характеристикам и надежности программы, проектирование интерфейса, создание алгоритмов. Тестирование готового продукта.
курсовая работа [1,7 M], добавлен 26.12.2011Обоснование выбора средства программирования Microsoft Access 2000. Требования к параметрам и составу технических средств, к функциональным характеристикам, к надежности. Описание процесса отладки. Определение группы сложности разрабатываемой программы.
дипломная работа [968,5 K], добавлен 13.03.2014Этапы решения задачи классификации цифр арабского алфавита на основе нейронных сетей: выбор класса, структуры и пакета нейронной сети, ее обучение, требования к информационной и программной совместимости, составу и параметрам технических средств.
реферат [111,6 K], добавлен 19.10.2010Анализ программной системы, способной облегчить действия руководителя тушения пожара и повысить эффективность пожарных работ. Требования к функциональным характеристикам, составу и параметрам технических средств. Разработка программной документации.
курсовая работа [381,6 K], добавлен 13.08.2013Требования к функциональным характеристикам, надежности и условиям эксплуатации программы. Информационное обеспечение задачи, нормативно-справочные данные, входная и выходная информация. Схема взаимосвязи программных модулей и описание программы.
курсовая работа [979,2 K], добавлен 20.09.2012Документ, на основании которого ведется разработка. Требования к составу и параметрам технических средств, к информационной и программной совместимости. Проработка программных средств. Переопределение стандартных операций для абстрактных типов данных.
курсовая работа [371,5 K], добавлен 21.02.2012Требования к информационной и программной совместимости. Описание алгоритма и задач. Разработка программы, предназначенной для работы с системой обработки данных и для оформления сопровождающей документации. Схема работы кадровой службы с программой.
отчет по практике [1,9 M], добавлен 13.12.2011Описание методов вычисления определителя матрицы. Математическое решение задачи с применением метода исключения Гаусса с выбором главного элемента. Схема алгоритма программы, описание переменных и структур данных, текст программы на языке Pascal.
курсовая работа [438,8 K], добавлен 16.02.2011Разработка программного продукта "2D-макет фильтра" для производства ООО ПК "ХимМаш". Назначение программы, требования к информационной и программной совместимости, параметрам технических средств. Проектирование архитектуры программного продукта.
курсовая работа [1,3 M], добавлен 14.02.2016Разработка информационной системы и базы данных магазина "Автозапчасти". Выбор технических средств и программной реализации задачи АЗ-01. Составление алгоритма, программы, руководства пользователя и примера, демонстрирующего корректность решения задачи.
курсовая работа [2,2 M], добавлен 19.10.2012