-nan(ind)

Kamil Będlin
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 4 lata
  • Postów:14
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ć?

Kopiuj
#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
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
tajny_agent
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad rok
  • Postów:1340
1

Spróbuj. Wysypuje się na linijce 14.


"I love C++. It's the best language in the world right now for me to write the code that i need and want to write"
~ Herb Sutter

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.