Академический Документы
Профессиональный Документы
Культура Документы
высшего образования
"Национальный исследовательский университет
"Высшая школа экономики"
Правильность 3
алгоритма
Ответы на 2
вопросы
Доп. задание 3
ОТЧЕТ
по лабораторной работе № 11
{ F(1)=0,¿ { F(2)=1,¿¿¿¿
2.Написать программу, которая создает бинарное дерево, состоящее из
целых чисел, которые вводятся с клавиатуры. Затем программа выполняет
преобразования в соответствии с номером варианта и печатает все числа
исходного и преобразованного бинарного дерева (или другой результат
работы программы).
Находит число, ближайшее к среднему арифметическому минимального и
максимального чисел в бинарном дереве.
Листинг программы
1.
untitled.pro
QT += core gui
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated
APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain
version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the
APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp \
work.cpp
HEADERS += \
mainwindow.h \
work.h
FORMS += \
mainwindow.ui
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "work.h"
namespace Ui {
class MainWindow;
}
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
};
#endif // MAINWINDOW_H
work.h
#ifndef WORK_H
#define WORK_H
class Work
{
public:
Work();
~Work();
#endif // WORK_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
work.cpp
#include "work.h"
Work::Work() {
}
Work::~Work() {
}
unsigned long long Work::first_alg(unsigned long long number) {
if(number==1 ||number==2){
return number -1;
}
int pred=0;
int next=1;
int x;
for(int i=3;i<=number;i++){
x= next;
next = 2*pred +next;
pred =x;
}
return next;
}
return this->second_alg(number-1)+2*second_alg(number-2);
//return number <= 1 ? 1 : number * this->second_alg(number - 1);
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <chrono>
#include <QString>
#include <QRegExpValidator>
#include "iostream"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) {
ui->setupUi(this);
QRegExp int_exp("[0-9]*");
ui->lineEdit->setValidator(new QRegExpValidator(int_exp, this));
}
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::on_pushButton_clicked() {
Work *work_obj = new Work;
QString toSetText;
unsigned long long number = ui->lineEdit->text().toLongLong();
ui->textEdit1->setText(toSetText.setNum(total_number));
ui->lineEdit_3->setText(toSetText.setNum(elapsed_ms.count()));
}
void MainWindow::on_pushButton_2_clicked() {
Work *work_obj = new Work;
QString toSetText;
auto number = ui->lineEdit->text().toLongLong();
ui->textEdit2->setText(toSetText.setNum(total_number));
ui->lineEdit_5->setText(toSetText.setNum(elapsed_ms.count()));
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>953</width>
<height>476</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Input number</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>First algoritm</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEdit1"/>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_3">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>nano seconds</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEdit2"/>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_5">
<property name="text">
<string/>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>nano seconds</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>953</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
2.
#include <stdio.h>
#include <iostream>
struct node
{
int info;
node *left,*right;
};
node *form()
{
int n;
node *der=NULL,*next,*tek;
puts("Input integer numbers\nletter means that input is over");
if(scanf("%d",&n)==1)
{
der=newn(n);
while(scanf("%d",&n)==1)
{
next=tek=der;
while (next!=NULL)
{
tek=next;
if (n<tek->info)
next=tek->left;
else next=tek->right;
}
if (n<tek->info) setleft(tek,n);
else setright(tek,n);
}
}
return der;
}
int main() {
node *der;
puts("Now we'll make tree\n");
der = form();
if (!der)
puts("Tree is empty");
else {
print_tree(der, 0);
int max=der->info;
max=max_search(der,max);
int min=der->info;
min=min_search(der,min);
int avg = (min + max)/2;
int elem=der->info;
int mina = abs(der->info - avg);
size_t idx = 0;
int a[100];
addToArray(der,a,idx);
int elemt = a[0];
int minat = abs(a[0] - avg);
for(int i=0; i<idx; i++) {
if (abs(a[i] - avg) < minat)
{
minat = abs(a[i] - avg);
elemt = a[i];
}
}
elem = close_to_avg(der, avg,elem,mina);
printf("\n min = %d", min);
printf("\n max = %d", max);
printf("\n avg = %d\n", avg);
for (int i =0; i<idx; i++)
printf("%d ", a[i]);
printf("\n\nThe integer which close to an average between max and min
element is %d", elemt);
}
return 0;
}
Тесты к программе
1.
1 тест:
2 тест:
2.
1 тест:
4 тест: