-nan(ind)

0

Mam tu taki kod, który ma zapisywać dane do pliku, ale od pewnych wartości pojawia się zamiast liczby -nan(ind). Ktoś wie co to znaczy i jak kto naprawić?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
const double G = 6.67408e-11;
const float M1 = 5.97219e+24;
const float M2 = 7.347673e+22;

int sila(float* F, float* r1, float* r2)
{
	int i;
	float Ftmp = -G * M1 * M2 / pow(odleglosc(r1, r2), 3);
	for (i = 0; i < 2; i++)
		F[i] = Ftmp * (r1[i] - r2[i]);
	return 0;
}

float odleglosc(float* r1, float* r2)
{
	int i;
	float r12 = 0;
	for (i = 0; i < 2; i++)
		r12 += pow(r1[i] - r2[i], 2);
	return sqrt(r12);
}

main()
{
	float t0 = 0;
	float tN = 32400;
	float rz[2] = { 0, 0 };
	float rk[2] = { 405696, 0 };
	float vz[2] = { 0, 0 };
	float vk[2] = { 0, 0.968 };
	float V[2];
	V[0] = sqrt(pow(vz[0], 2) + pow(vz[1], 2));
	V[1] = sqrt(pow(vk[0], 2) + pow(vk[1], 2));
	float F[2];
	float dt = 9;
	sila(F, rz, rk);
	FILE* wp = fopen("uklad_Ziemia_Ksiezyc_Eulera.txt", "w");
	fprintf(wp, "#t		xz		yz		xk		yk		Vz		Vk\n");
	fprintf(wp, "%f	%e	%e	%e	%e	%e	%e\n", t0, rz[0], rz[1], rk[0], rk[1], V[0], V[1]);

	while (t0 < tN)
	{
		rz[0] += vz[0] * dt * 60 * 60;
		rz[1] += vz[1] * dt * 60 * 60;
		rk[0] += vk[0] * dt * 60 * 60;
		rk[1] += vk[1] * dt * 60 * 60;
		sila(F, rz, rk);
		vz[0] += F[0] / M1 * dt * 60 * 60;
		vz[1] += F[1] / M1 * dt * 60 * 60;
		V[0] = sqrt(pow(vz[0], 2) + pow(vz[1], 2));
		sila(F, rk, rz);
		vk[0] += F[0] / M2 * dt * 60 * 60;
		vk[1] += F[1] / M2 * dt * 60 * 60;
		V[1] = sqrt(pow(vk[0], 2) + pow(vk[1], 2));
		t0 += dt;
		fprintf(wp, "%f	%e	%e	%e	%e	%e	%e\n", t0, rz[0], rz[1], rk[0], rk[1], V[0], V[1]);
	}
	fclose(wp);
	system("PAUSE");
	return 0;
}
```c
2

https://pl.wikibooks.org/wiki/C/NAN-wartosc
Ogólnie to zrobiłeś jakąś operację która nie zwraca liczby jak dzielenie przez zero

1

Spróbuj. Wysypuje się na linijce 14.

1 użytkowników online, w tym zalogowanych: 0, gości: 1