Miért nem tud ez a program kilépni a for ciklusból (C++, Visual Studio)?
Végtelenszer lefut a vége felé lévő for ciklus (for (j=1; j<=10; j++)), aminek csak 10-szer szabadna. Hol rontottam el?
#include <iostream>
using namespace std;
double Interpolalas( int d, int e);
int main ()
{
double gyok;
int i, d, e, db, muv, f, ered;
cout<<"Hany muveletet szeretne elvegezni?"<<endl<<endl; cin>>db;
cout<<endl<<endl<<"Az interpolalando egyenletet rendezze ilyen alakra: y=dx+e "<<endl<<endl;
cout<<"d: "<<endl<<endl; cin>>d;
cout<<endl<<endl<<"e: "<<endl<<endl; cin>>e;
gyok= Interpolalas(d,e);
cout<<endl<<endl<<"A megadott egyenlet gyoke: "<<endl<<endl<<gyok<<endl<<endl;
cin.get();
return 0;
}
double Interpolalas( int d, int e)
{
double a, b, c, gyok;
int j;
cout<<endl<<endl<<"Az elso kezdoertek: "<<endl<<endl; cin>>a;
cout<<endl<<endl<<"A masodik kezdoertek: "<<endl<<endl; cin>>b;
while (((d*a+e)*(d*b+e))<=0)
{
if ((d*a+e)==0)
gyok=a;
else if ((d*b+e)==0)
gyok=b;
else
{
if ((a+b)==0)
c=0;
else
c=(a+b)/2;
}
for (j=1; j<=10; j++)
{
if (((d*a+e)*(d*c+e))<0 && (d*c+e)!=0)
{
b=c;
break;
}
else if ((d*c+e)==0)
{
gyok=c;
break;
}
else
{
a=c;
break;
}
c=(a+b)/2;
cout<<"c: "<<c<<endl<<endl;
}
}
if (((d*a+e)*(d*b+e))>0)
cerr<<"A megadott kezdoertekek nem megfeleloek!"<<endl<<endl;
return gyok;
}
egymásba ágyaztad a ciklusokat, nyilván addig fut, amíg a külső while ciklus magja hamis nem lesz.
while (((d*a+e)*(d*b+e))<=0) {
for(j=1;j<=10;j++){}
}
mármint a ciklusfeltétel lesz hamis, nem a mag :D
szerintem nézegesd még a kódot egy kicsit, mert túlbonyolítottál valamit
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!