Programul tau se termina fiindca la while nu ai pus acolade sa cuprinzi tot blocul de instructiuni pe care ti-l doreai,practic tu in while faceai numai an2--
Deci corect cu acolade ar fi asa:
#include<iostream>
using namespace std;
int an1,an2;
int main()
{
cout<<"an1=";
cin>>an1;
cout<<"an2=";
cin>>an2;
while(an2!=an1)
{
an2--;
if(((an2%4==0)&&(an2%100!=0))||(an2%400==0))
cout<<an2<<" ";
}
return 0;
}
Merge bine (chiar daca se poate mai eficient de atat),doar ca astfel anii vor fi afisati in ordine descrescatoare. Mergand tot pe ideea ta,ca sa nu o schimb,ca sa ai anii in ordine crescatoare porneste de la an1 catre an2 :
#include<iostream>
using namespace std;
int an1,an2;
int main()
{
cout<<"an1=";
cin>>an1;
cout<<"an2=";
cin>>an2;
while(an1!=an2)
{
an1++;
if(((an1%4==0)&&(an1%100!=0))||(an1%400==0))
cout<<an1<<" ";
}
return 0;
}
Si ca ultima observatie,daca am inteles bine din enunt,inclusiv anul an1 sau anul an2 poate fi bisect,deci la varianta de mai sus de exemplu,intrucat si an1 ar putea fi bisect iar tu sari peste el,inainte de while ar trebui sa mai pui asta:
if(((an1%4==0)&&(an1%100!=0))||(an1%400==0))
cout<<an1<<" ";
Sper ca ai inteles