Euler's Method in C - almost works

Hello all. I'm taking differential equations and our professor has given us the task of using Euler's Method to approximate the value of y in a differential equation. She has also given us the option to do it in a programming language of our choice, since it's just a lot of repetition otherwise. I figured I'm also taking intro to C, so I may as well do it in C.

I'm almost there.

We are supposed to be able to approximate values at x = 0.1, 0.2, 0.3, 0.4, & 0.5 and with step size h = 0.1, 0.05, & 0.025. So far, my program gives me the correct answer for all five x values when h = 0.1, but when h = 0.05, it gives the correct answer at x = 0.1, 0.2, and 0.3, but when x = 0.4 or 0.5, it goes nuts. I think I have a problem with variable types, but I'm not sure where. I tried replacing all the variable types with doubles, but that didn't help. Any suggestions? Thanks in advance.

Code:

#include<stdio.h>

#include<math.h>

main()

{

float x; /*defining variables*/

float y;

float h;

float targetx;

puts("This program will solve the differential equation y' = y - x \nusing Euler's Method with y(0)=1/2 \n\n");

puts("Please enter the desired constant step size. (h-value)\n\n");

scanf("%f", &h); /* Defining step size*/

puts("\n\nNow enter the desired x-value to solve for y.\n\n");

scanf("%f", &targetx);

y = 0.5;

x = 0.0;

puts("\n\nX Y");

while ( x != targetx )

{

printf("\n\n%f %f", x, y);

y = y + ((y - x)*h);

x= x+h;

}

printf("\n\n%f %f\n", x, y);

printf("\nThe value of y at the given x is %f.\n\n", y, h);

system("pause");

}