Нужно используя метод Зейделя(почти тоже самое самое что и метод итераций) решить систему нелинейных уравнений с точностью до 0.0001


Начальное приближение определил графически, и написал код:
[CPP]#include "stdio.h"
#include "conio.h"
#include "clocale"
#include "cmath"
#include <iostream> 
#include "fstream"
using namespace std;
int main( void )
	{
	 setlocale(LC_ALL, "Russian");
float E=0.000000001, x0=-0.874, y0=-0.131,  x1, y1 ; 
int W;
cout <<"Начальное приближение:   ";
cout <<"x0=" << x0 << "   ";
cout << "у0="<< y0 << "\n" ;
W=0;
//y1=0;
 // for(;;)
 while (true)
{
	W=W+1;
	x1=-0.8+0.5*sin(y0);
    y1=0.8-cos(x1+0.5);
	cout << "Итерация №: " << W << "    ";
    cout << "x" << W << "=" << x1 << "   ";
	cout << "y"<< W << "=" << y1 << "\n";	
	if (fabs(y1-y0)<=E);
	{
		break;
   }
y0=y1;
}     
getch();
return (0);
}
[/CPP]
в итоге:

Если посмотреть графически, то действительно было ближе приближено значение к точке пересечения.
Но по какой-то причине цикл был пройден один раз и после этого завершился. Если уменьшать или увеличивать точность или использовать цикл for(;;), то всё равно ничего не изменится 
Помогите пожалуйста! Я в программировании полый чайник, ошибка где-то на поверхности, но неукого спросить!