Kezdőoldal » Számítástechnika » Programozás » Miért nem tud ez a program...

Amanda88 kérdése:

Miért nem tud ez a program kilépni a for ciklusból (C++, Visual Studio)?

Figyelt kérdés

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;

}



2013. ápr. 28. 22:36
 1/6 anonim ***** válasza:
for (int j=1; j<10; j++) így? de elvileg jó...
2013. ápr. 28. 22:53
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
adj egy olyan ágat neki amit egyszerűen tudsz teljesíteni és nézd meg, hogy abból visszatér-e.
2013. ápr. 28. 22:58
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
most nincs ehez agyam, de nem lehet, hogy nem a for a rossz hanem a while amibe be van ágyazva?
2013. ápr. 28. 23:04
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Nem értem. Már átírtam úgy, hogy a while utáni feltétel az első pár ciklus után ne teljesüljön, de így is végtelenszer lefut az a for ciklus. És ha írok egy egyszerűbb for ciklust a while-on belül, a másik for ciklus elé, akkor meg az fut le végtelenszer. Mitől lehet ez?
2013. ápr. 28. 23:26
 5/6 anonim ***** válasza:

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++){}


}

2013. ápr. 29. 16:29
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

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

2013. ápr. 29. 16:31
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!