#include "norma.h"#include "ui_norma.h"#include "math.h"#include <math.h>#include <stdlib.h>int dl=1;float m[dl];float *g=m[dl];float n( float *x, int len ){ int j; float cur, max, sum2; max = 0.0; for( j = 0; j < len; j++ ){ cur = fabs(x[j]); if( cur > max ) max = cur; } if( max == 0.0 ) return 0.0; sum2 = 0.0; for( j = 0; j < len; j++ ){ cur = x[j] / max; sum2 += cur * cur; } return max * sqrt(sum2); }norma::norma(QWidget *parent) : QDialog(parent), ui(new Ui::norma){ ui->setupUi(this);}norma::~norma(){ delete ui;}void norma::vvmass(){ dl++; float m[dl]; bool ok; float a=ui->elmass->text().toFloat(&ok); m[dl]=a; float *g=m;}void norma::on_pushButton_2_clicked(){ p=n(g,dl+1); ui->label->setNum(p);}
#ifndef NORMA_H#define NORMA_H#include <QDialog>namespace Ui { class norma;}class norma : public QDialog{ Q_OBJECTpublic: explicit norma(QWidget *parent = 0); ~norma(); int dl; float m[dl]; float *g=m[dl];public slots: void vvmass();private slots: void on_pushButton_2_clicked();private: Ui::norma *ui;};#endif // NORMA_H
C++ (Qt)#include <math.h> // вычисление длины вектораfloat length( const float * x, int num ){ float sum = 0.0f; for (int i = 0; i < num; ++i) sum += x[i] * x[i]; return sqrt(sum);} // нормирование вектораbool normalize( float * x, int num ){ float len = length(x, num); if (len == 0.0f) return false; for (int i = 0; i < num; ++i) x[i] /= len; return true;}