#include<stdio.h>
#include<stdlib.h>
#include<math.h>

struct punkt{
	double x1,x2;
};
struct punkt pochodna(double t, struct punkt y){
	struct punkt tymcz;
	tymcz.x1=y.x2;
	tymcz.x2=-sin(y.x1);
	return tymcz;
}
int main(){
	struct punkt y,tymcz;
	double czas_biezacy, czas_koncowy,krok;
	int ilosc_krokow;
	printf("Program służy do numerycznego rozwiązywania równań różniczkowych\n");
	printf("zwyczajnych metodą Eulera.\n\n");
	printf("Czas startowy przyjmujemy jako 0.\n");
	printf("Proszę wychylenie początkowe w radianach y(0)= ");
	scanf("%lf",&(y.x1));
	printf("\nTeraz proszę początkową prędkość kątową w radianach na sekundę y'(0)= ");
	scanf("%lf",&(y.x2));
	printf("\nProszę podać czas koncowy obliczeń T= ");
	scanf("%lf",&czas_koncowy);
	printf("\nProszę podać liczbę kroków N= ");
	scanf("%d",&ilosc_krokow);
	krok=czas_koncowy/ilosc_krokow;
	czas_biezacy=0;
	for(;ilosc_krokow>=0;--ilosc_krokow){
		printf("| %2.6lf | %2.6lf |\n",czas_biezacy,y.x1);
		tymcz=pochodna(czas_biezacy,y);
		y.x1=y.x1+krok*tymcz.x1;
		y.x2=y.x2+krok*tymcz.x2;
		czas_biezacy=czas_biezacy+krok;
	};
	return EXIT_SUCCESS;
}