none
MSB6006 "CL.exe" завершилась с кодом -2 RRS feed

  • Вопрос

  • Работаю над проектом - математическая модель движения тела. Все было отлично, пока не появилась данная ошибка смысл которой понять не могу.

    Прошу помощи.

    Публикую код - MathModels.cpp

    <details>
    //#include "DEFINE.h"
    #include <iostream>
    #include <math.h>
    #include <cmath>
    #include <ctime>
    #include <string>
    #include <iomanip>
    #include <stdio.h>
    #include "MM_H.h"
    #include <chrono>
    #include <functional>
    #include <fstream>
    //#include <cstring>
    //#include <iomanip>
    //#include <cstdlib>
    using namespace std;
    
    int LANG;
    
    void SELECT_LANG(){
    	char chek;
    	cout << "SELECT LANGUAGE  -  ВЫБЕРИТЕ ЯЗЫК\n";
    	cout << "1. ENG" << "\n" << "2. RUS \n" << "->";
    	cin >> chek;
    	if (chek == '1') {
    		LANG = 1;
    	}
    	if (chek == '2') {
    		LANG = 2;
    	}
    }
    
    //#include "MM_MD.cpp"
    
    
    
    #ifdef RELEASE_MODE
    #define UDP_CONNECT //Обмен по Ethernet
    #endif // RELEASE_MODE
    
    extern double Delta_D, m2, m3, u;
    
    ////////////////////////
    // УРАВНЕНИЯ ДВИЖЕНИЯ //
    ////////////////////////
    
    // 1. Алгоритмы операций с матрицами и векторами //
    // 1.1. Вычисление матриц поворота //
    void ForRotMatr(int iaxis, double angle, TVect3 Matr) {
    	int i, j;
    	double s, c;
    	c = cos(angle);
    	s = sin(angle);
    	for (i = 1; i < 4; i++)
    		for (j = 1; j < 4; j++)
    			if (i = j)
    				Matr[i, j] = 1, 0;
    			else
    			{
    				Matr[i, j] = 0, 0;
    			}
    	switch (iaxis)
    	{
    	case 1: //rotate around OX axis
    		Matr[2, 2] = +c;
    		Matr[2, 3] = +s;
    		Matr[3, 2] = -s;
    		Matr[3, 3] = +c;
    	case 2: //rotate around OY axis
    		Matr[1, 1] = +c;
    		Matr[1, 3] = -s;
    		Matr[3, 1] = +s;
    		Matr[3, 3] = +c;
    	case 3: //rotate around OZ axis
    		Matr[1, 1] = +c;
    		Matr[1, 2] = +s;
    		Matr[2, 1] = -s;
    		Matr[2, 2] = +c;
    	default:
    		break;
    	}
    }
    
    // 1.2. Преобразование сферических координат к прямоугольным //
    void DFSC(double Azt, //Азимут
    	double Alt, //Высота
    	double  Ro, //Ro
    	TVect3 PD  //PosDescart - 
    ) {
    	double cb;
    	cb = cos(Alt);
    	PD[1] = Ro * cos(Azt) * cb; // X
    	PD[2] = Ro * sin(Azt) * cb; // Y
    	PD[3] = Ro * sin(Alt);      // Z
    }
    
    
    /////
    //+//
    /////
    
    void OEOM() {
    
    }
    
    void OrbSpeed(int h) {
    	double pr;
    	pr = sqrt(u / pow(h + Re, 3));
    	Worb = floor(pr);
    }
    
    void XYZ_from(double i, //Наклонение
    	double a, //Большая полуось
    	double e, //Эксцентриситет
    	double W, //Долгота восходящего узла
    	double _w //Аргумент широты перигея
    ) {
    	double x, y, z;
    }
    
    void kgpt(double gam, double psi, double tet, double* c0, double* c1, double* c2, double* c3)
    {
    	double sp, cp, st, ct, sg, cg;
    
    	sp = sin(psi / 2.0);
    	cp = cos(psi / 2.0);
    	st = sin(tet / 2.0);
    	ct = cos(tet / 2.0);
    	sg = sin(gam / 2.0);
    	cg = cos(gam / 2.0);
    	*c0 = cg * cp * ct - sg * sp * st;
    	*c1 = sg * cp * ct + cg * sp * st;
    	*c2 = cg * sp * ct - sg * cp * st;
    	*c3 = sg * sp * ct + cg * cp * st;
    }
    
    // Закон притяжения
    void _F(double m1, double m2, double D) {
    	F_out = f * m1 * m2 / (D * D);
    }
    
    // Расстояние между Ц.М. М1(х) и М2(_х)
    void deltaa(double x, double y, double z, double _x, double _y, double _z) {
    	Delta_D = sqrt(pow((x - _x), 2) + pow((y - _y), 2) + pow((z - _z), 2));
    }
    
    int VelVecS(double a, //Большая полуось
    			 double e, //Эксцентриситет
    			 double i, //Наклонение
    		     double W,
    			 double w,
    			 double t) {
    	double TR_DATA[10];
    	double r;
    	double n;
    	double u;
    
    }
    
    void ncos(double alpha, double betta, double gamma, double x, double y, double z, double _x, double _y, double _z) {
    	alpha = (x - _x) / Delta_D;
    	betta = (y - _y) / Delta_D;
    	gamma = (z - _z) / Delta_D;
    }
    
    //////////////////////
    
    #ifdef DEBUG_MODE
    
    	const char* arr_data_nameE[]{ 
    	"Hour                  ","Minutes               ","Seconds               ","Day                   ",
    	"Month                 ","Year                  ","Semimajor axis        ","Eccentricity          ",
    	"Long. of asc. node    ","Inclination           ","Pericenter argument   ","True anomaly          ",
    	"Ballistic coefficient ","TK mass               ","Orientation           ","ДПО-К1 thrust         ",
    	"ДПО-К2 thrust         ","Fuel                  ","Coordinate C.M. X     ","Coordinate C.M. Y     ",
    	"Coordinate C.M. Z     ","Angular velocity X    ","Angular velocity Y    ","Angular velocity Z    ",
    	"Pitch                 ","Yaw                   ","Roll                  ","Jxx                   ",
    	"Jyy                   ","Jzz                   ","Jxy                   ","Jyz                   ",
    	"Jzx                   ","Jzy                   ","Jxz                   ","Jyz                   " };
    	const char* arr_data_nameR[]{
    	"Час                   ","Минуты                ","Секунды               ","День                  ",
    	"Месяц                 ","Год                   ","Большая полуось       ","Эксцентриситет        ",
    	"Долгота восх. узла    ","Наклонение            ","Аргумент перицентра   ","Истинная аномалия     ",
    	"Балл. коэффициент     ","Масса ТК              ","СК ориентации         ","Тяга ДПО-К1           ",
    	"Тяга ДПО-К2           ","Топливо               ","Координата Ц.М. X     ","Координата Ц.М. Y     ",
    	"Координата Ц.М. Z     ","Угловая скорость X    ","Угловая скорость Y    ","Угловая скорость Z    ",
    	"Тангаж                ","Рыскание              ","Крен                  ","Jxx                   ",
    	"Jyy                   ","Jzz                   ","Jxy                   ","Jyz                   ",
    	"Jzx                   ","Jzy                   ","Jxz                   ","Jyz                   " };
    
    void ControlDyn() {
    	setlocale(LC_ALL, "Russian");
        // Отображение инструкорского формата 
    }
    
    #endif // DEBUG_MODE
    
    //\\//\\//\\//\\//\\
    //  MODEL PROCESS //
    //\\//\\//\\//\\//\\
    
    void StartModel() {
    	system("cls");
    	cout << "Model Process... ";
    }
    
    void startmodel_with_VM() {
    	system("cls");
    	int i;
    	char a = 8;
    	cout << "*------------------------------------------------------------------"<<"\n";
    	cout << "|Дата  "<<setw(2)<<ddn<<"-"<<mmn<<"--"<<setw(4)<<yyn << "                    Вектор на солнце        " <<"\n";
    	cout << "|Время "<< setw(2) << hour_m << ":" << min_m << ":" << sec_m << "                     X " <<"\n";
    	cout << "|                                   Y" << "\n";
    	cout << "|                                   Z" << "\n";
    	cout << "*----------------------------------------------------------------------------------------------" << "\n";
    	cout << "|" << "\n";
    	cout << "|  Центр масс в J2000         Центр масс в РС               Кватернион ССК РС" << "\n";
    	cout << "| X    " << fixed << r1x1 << "          X   "<< r1x1 << "             " << L0 << "             |" <<"\n";
    	cout << "| Y    " << fixed << r1y1 << "          Y   "<< r1y1 << "             " << L1 << "\n";
    	cout << "| Z    " << fixed << r1z1 << "          Z   "<< r1z1 << "             " << L2 << "\n";
    	cout << "|                                                 "<< L3 << "\n";
    	cout << "|  Скорость ц.м. в J2000             Угловая скорость в J2000" << "\n";
    	cout << "| X    " << fixed << v1x1 << "          X   "<< WxTK << "\n";
    	cout << "| Y    " << fixed << v1y1 << "          Y   "<< WyTK << "\n";
    	cout << "| Z    " << fixed << v1z1 << "          Z   "<< WzTK << "\n";
    	cout << "| "<<"\n";
    	cout << "*----------------------------------------------------------------------\n";
    	cout << "|            Моменты инерции                "<<"\n";
    	cout << "|      X                 Y                 Z"<<"\n";
    	cout << "| X    " << fixed << j_j1_mas[0] << "    " << j_j1_mas[1] << "    " << j_j1_mas[3] << "\n";
    	cout << "| X    " << fixed << j_j1_mas[4] << "    " << j_j1_mas[5] << "    " << j_j1_mas[6] <<"\n";
    	cout << "| X    " << fixed << j_j1_mas[7] << "    " << j_j1_mas[8] << "    " << j_j1_mas[9] <<"\n";
    	cout << "*----------------------------------------------------------------------" << "\n";
    	cin >> i;
    	//line("╔", "═", "╦", "╗", 6, 6);
    }
    
    //\\//\\//\\//\\//\\
    
    void change_model_type() {
    	int i;
    	setlocale(LC_ALL, "Russian");
    	system("cls");
    	cout << "Выберете режим работы: \n";
    	cout << "1. Пуск модели по НУ \n";
    	cout << "2. Дополнительные параметры \n";
    	cin >> i;
    	if (i == 1)
    		startmodel_with_VM();
    }
    
    void Connect() { // Установка соединения с МиУ
    	setlocale(LC_ALL, "Russian");
    	if (LANG == 1)
    		cout << "Connect to M&C...";
    	else
    	{
    		cout << "Установка соеденения с МиУ... ";
    	}
    	// коннектимся к МиУ, посылаем квитанцию, если ответ верный, то
    	cout << "OK\n";
    }
    
    void UNPACK_FF(void) {
    	hour_m      = PACK_DATA_FROM_TXT[0];
    	min_m		= PACK_DATA_FROM_TXT[1];
    	sec_m		= PACK_DATA_FROM_TXT[2];
    	ddn			= PACK_DATA_FROM_TXT[3];
    	mmn			= PACK_DATA_FROM_TXT[4];
    	yyn		    = PACK_DATA_FROM_TXT[5];
    	p1		    = PACK_DATA_FROM_TXT[6];
    	e1		    = PACK_DATA_FROM_TXT[7];
    	om1         = PACK_DATA_FROM_TXT[8];
    	i1          = PACK_DATA_FROM_TXT[9];
    	sig1        = PACK_DATA_FROM_TXT[10];
    	fi1         = PACK_DATA_FROM_TXT[11];
    	cb1         = PACK_DATA_FROM_TXT[12];
    	massTK      = PACK_DATA_FROM_TXT[13];
    	sktk        = PACK_DATA_FROM_TXT[14];
    	dtgk1       = PACK_DATA_FROM_TXT[15];
    	dtgk2       = PACK_DATA_FROM_TXT[16];
    	tkfz        = PACK_DATA_FROM_TXT[17];
    	nu_cm1x     = PACK_DATA_FROM_TXT[18];
    	nu_cm1y     = PACK_DATA_FROM_TXT[19];
    	nu_cm1z     = PACK_DATA_FROM_TXT[20];
    	wx_tk       = PACK_DATA_FROM_TXT[21];
    	wy_tk       = PACK_DATA_FROM_TXT[22];
    	wz_tk       = PACK_DATA_FROM_TXT[23];
    	pitch_tk    = PACK_DATA_FROM_TXT[24];
    	yaw_tk      = PACK_DATA_FROM_TXT[25];
    	roll_tk     = PACK_DATA_FROM_TXT[26];
    	j_j1_mas[0] = PACK_DATA_FROM_TXT[27];
    	j_j1_mas[1] = PACK_DATA_FROM_TXT[28];
    	j_j1_mas[2] = PACK_DATA_FROM_TXT[29];
    	j_j1_mas[3] = PACK_DATA_FROM_TXT[30];
    	j_j1_mas[4] = PACK_DATA_FROM_TXT[31];
    	j_j1_mas[5] = PACK_DATA_FROM_TXT[32];
    	j_j1_mas[6] = PACK_DATA_FROM_TXT[33];
    	j_j1_mas[7] = PACK_DATA_FROM_TXT[34];
    	j_j1_mas[8] = PACK_DATA_FROM_TXT[35];
    }
    
    //// MAIN ////
    int main() 
    {
    	setlocale(LC_ALL, "Russian");
    	system("cls");
    #ifdef DEBUG_MODE
    	char chek[2];
    	SELECT_LANG(); //Выбор языка
    	system("cls");
    	if (LANG == 1)
    		cout << "Load data from file \n";
    	else
    	{
    		cout << "Зарузка данных из файла \n";
    	}
    	    cout << "-----------------------\n";
    
    
    	char ff[10];
    	double test;
    	int br;
    	int i;
    	ifstream FNU; //Переменная файла НУ
    	FNU.open("input_data.fnu", ifstream::in);
    	if (!FNU) { 
    		if (LANG == 1)
    			cout << "File not found!";
    		else
    		{
    			cout << "Файл отсутствует!";
    		}
    		return 1;
    	}
    	else
    	{
    		for (int i = 0; i < 36; i++) {
    			FNU >> PACK_DATA_FROM_TXT[i];	//Присваиваем FNU TO ARRAY
    		}
    		for (i = 0; i < 36; i++)
    			if(LANG==1)
    			std::cout << arr_data_nameE[i] << std::setw(8) << PACK_DATA_FROM_TXT[i] << "\n";
    			else
    			{
    			std::cout << arr_data_nameR[i] << std::setw(8) << PACK_DATA_FROM_TXT[i] << "\n";
    			}
    		if (LANG == 1)
    			std::cout << "Data is correct?";
    		else {
    			std::cout << "Данные верны?";
    		}
    		std::cout << " Y/N \n" << "->";
    		std::cin >> chek[0];
    		if (chek[0] == 'Y' or 'y') {
    			UNPACK_FF(); //Присваиваем из массива
    			//FNU.close;
    			change_model_type();
    
    		}
    		if (chek[0] == 'N' or 'n') {
    			return 0;
    		}
    
    	}
    	std::cout << "sss";
    #endif // DEBUG_MODE
    	Connect();
    }

    </details> MM_H.h<details>

    #pragma once ///////////// // M I S C // ///////////// double F_out; double Delta_D; double m2, //TK Mass m3, //Масса МКС m4; //Масса ТК2 extern char CharSelF; //to select forces double X_TK, //Soyz CM position Y_TK, Z_TK; ////////////// // OUT DATA // MODEL->M&C ////////////// // ТК // double r1x1; // Вектор положения ц.м. ТК в J2000 double r1y1; double r1z1; double v1x1; // Скорость ц.м. ТК в J2000 double v1y1; double v1z1; double L0; // кватернион разворота ССК ТК относительно J2000 double L1; double L2; double L3; double om1x31; // Вектор угловой скорости ТК относительно J2000 в проекциях на ССК ТК double om1y31; double om1z31; double cm1x; // Координаты ц.м. ТК в ТГК/ ТПК double cm1y; double cm1z; double WxTK, WyTK, WzTK; double TK_DATA_MAS[15]; double DOS_DATA_MAS[15]; double lmu_tk[3]; //Линейное мгновенное ускорение double wmu_tk[3]; //Угловое мгновенное ускорение double evsJ[3]; //Единичный вектор из центра J2000 на Солнце в проекциях на J2000 /////////////////////// // ORBITAL ELEMENTS // /////////////////////// double Worb; //Orbital speed //////////////////////// // PROCESS DATA ARRAY // // ТЕХНОЛОГИЧЕСКИЕ // //////////////////////// bool START; //"START" command from M&C int qcn[3]; //Квитанции ///////////////////////// // НАЧАЛЬНЫЕ УСЛОВИЯ // M&C -> MODEL ///////////////////////// int hour_m; //час начала режима int min_m; //минуты начала режима int sec_m; //секунды начала режима int ddn; //день начала режима int mmn; //месяц начала режима int yyn; //год начала режима int NU_DT_MAS[6]; double p1; //Большая полуось орбиты ТК. double e1; //Эксцентриситет орбиты ТК. double om1; //Долгота восходящего узла орбиты ТК. double i1; //Наклонение орбиты ТК. double sig1; //Аргумент перицентра. double fi1; //Истинная аномалия ТК. double cb1; //баллистический коэффициент ТК. double massTK; //масса ТК. char sktk; //СК НУ ориентации ТК:0-состык.сост.; 1-ИСК; 2-ОСК; 3-ВСК double dtgk1; //Тяга ДПО-К1 (0.00 - 100.00) double dtgk2; //Тяга ДПО-К2 (0.00 - 100.00) double tkfz; // запас топлива ТК (в кг) double nu_cm1x; //координата ц.м. ТК в строит. СК ТК. double nu_cm1y; //координата ц.м. ТК в строит. СК ТК. double nu_cm1z; //координата ц.м. ТК в строит. СК ТК. double wx_tk; //Угловая скорость ТК double wy_tk; //Угловая скорость ТК double wz_tk; //Угловая скорость ТК double pitch_tk; //Тангаж ТК double yaw_tk; //Yaw double roll_tk; //Roll double h1; //Высота ц.м. ТК над поверхностью Земли. double j_j1_mas[9]; //Массив моментов инерции ТК double os_vx; //Вектор скорости МКС double os_vy; //Вектор скорости МКС double os_vz; //Вектор скорости МКС double os_vpx; //Вектор положения МКС double os_vpy; //Вектор положения МКС double os_vpz; //Вектор положения МКС double PACK_DATA_FROM_TXT[36]; double delta_r; //Расстоние от Ц.М. земли до Ц.М. объекта ///////////// // M A T H // ///////////// typedef double TVect3[3]; //Тип данных - вектор X Y Z extern TVect3 TMatr33[3]; /////////////////// // PHYSICS CONST // /////////////////// // Имена переменных и констант взяты из Дубошин.Небесная Механика ТОМ 1 int X_e = 0.0, //Коор. Ц.М. Земли, они же - нуль сцены Y_e = 0.0, Z_e = 0.0; // EARTH PARAMETERS // const double f = 6.67384e-11; //Постоянная притяжения const double Me = 5.972e-24; //Масса Земли const double We = 0.00007292115; //Угловая скорость вращения земли double u = f * Me; //Гравитационный параметр ~398 600,441 const int Re = 6371; //Радиус Земли const double a_e = 6378136; //Большая полуось общеземного эллипсоида //Epoch Parameters // const double JD2000 = 2451545.0; const double JulianC = 36525.0; //1 юлианский век //////////////////// // ИНТЕГРИРОВАНИЕ // //////////////////// double dt; //Шаг интегрирования

    </details>

    • Изменено SoyuzDeveloperTeam 24 декабря 2019 г. 10:40 Не сработал тег <details>
    24 декабря 2019 г. 10:13

Ответы

  • Здравствуйте,

    Скорее всего, вам необходимо решить эту ошибку: error C4716: 'VelVecS': must return a value

    После чего должно все заработать. Или как минимум начнет запускаться.


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.



    25 декабря 2019 г. 8:23
    Модератор