Brak zakonczenia programu

0

Witajcie,
Otóż chciałbym aby mój program nie zatrzymywał się po wykonaniu wszystkich czynności, lecz aby był kontynuowany bez
wyłączenia. Wiem że trzeba stworzyć pętle, lecz dopiero uczę się tego i za bardzo mi nie wychodzi...

#include <cstdlib>   
#include <iostream>
#include <conio.h>
#include<cmath>

using namespace std; 

int main()  
{                   

   
   int a,b,c,delta,x1,x2;
   
   cout<<"Rozwiaz rownanie kwadratowe" <<endl <<endl;
   
   
   do{
   
   cout<<"Podaj wartosc a="; cin>>a;  } 
   while(a==0);
   cout<<"Podaj wartosc b="; cin>>b;   
   cout<<"Podaj wartosc c="; cin>>c;
   
      delta=b*b-(4*a*c);   
      
         if(delta==0)
         { x1=-b/(2*a);
         
             cout<<"\nDelta=" <<delta;
             cout<<"\nDelta=0, wiec rownanie ma jeden pierwiastek" <<endl;
             cout<<"x1=" <<x1;
         }
   
        if(delta>0)
        { x1=(-b-sqrt(delta))/2*a;
          x2=(-b+sqrt(delta))/2*a;
          
          cout<<"\nDelta=" <<delta <<endl;
          cout<<"\nDelta>0, wiec rownanie ma dwa pierwiastki" <<endl;
          cout<<"x1=" <<x1; cout<<"\nx2=" <<x2;
        }
        
        if(delta<0)
        { cout<<"\nDelta=" <<delta; 
          cout<<"\nDelta<0, wiec rownanie nie ma pierwiastkow.";
        
        }       
        
    
  
   
   
   getch(); 
   // system("PAUSE");
    return 0;   
} 
2

Konstrukcja wygląda następująco:

do {
Powtarzający się kod
}while( warunek );

Widzę, że starasz się robić sam, to nie podam rozwiązania na tacy. Chcesz, żeby powtarzał się cały program. Warunkiem może być na przykład wprowadzenie przez użytkownika znaku 'n' - nie chcę kontynuować;

while( znak != 'n' ) - powtarzaj dopóki znak jest inny niż n. :)

0

Właśnie warunku tutaj nie ma, bo jaki miałby być ?:P Wpisałem "1" i się powtarza tylko nie wiem czy to jest prawidłowy warunek

1

Absolutnie nieprawidłowo. Program będzie działał bez przerwy.

while(a==0) wpisałeś to. A jako, że NULL nie da się wpisać (chyba, że o czymś nie wiem - alt+0 raczej nie zadziała) z klawiatury w konsoli windows, to ta pętla nigdy się nie powtórzy.

Jeśli wpisałeś while(1) to pętla nigdy się nie przerwie, a program będzie działał w nieskończoność (są sposoby na przerwanie takiej pętli - Ctrl+C). Najlepiej dodaj na końcu pytanie - czy chcesz zakończyć program(t\n) i warunkiem przerwania będzie podanie `t' przez użytkownika ;)

1

przykład:

int Liczba1, Liczba2, Kontynuuj;
do
{
    cout<<"Podaj liczbę nr 1: ";
    cin>>Liczba1;
    cout<<endl;    

    cout<<"Podaj liczbę nr 2: ";
    cin>>Liczba2;
    cout<<endl;

    cout<<"Suma liczb wynosi: "<<Liczba1 + Liczba2<<endl;

    cout<<"Jeżeli chcesz przerwać wpisz 0!";
    cin>>Kontynuuj;
}while( Kontynuuj != 0 ); //zwracam uwagę na != ;)
0

Zawsze możesz zrobić tak:

 #include <cstdlib>   
#include <iostream>
#include <conio.h>
#include<cmath>
 
using namespace std; 
 
int main()  
{                   
 
 
   int a,b,c,delta,x1,x2;
 
   cout<<"Rozwiaz rownanie kwadratowe" <<endl <<endl;
 
 
   do{
 
   cout<<"Podaj wartosc a="; cin>>a;  } 
   while(a==0);
   cout<<"Podaj wartosc b="; cin>>b;   
   cout<<"Podaj wartosc c="; cin>>c;
 
      delta=b*b-(4*a*c);   
 
         if(delta==0)
         { x1=-b/(2*a);
 
             cout<<"\nDelta=" <<delta;
             cout<<"\nDelta=0, wiec rownanie ma jeden pierwiastek" <<endl;
             cout<<"x1=" <<x1;
         }
 
        if(delta>0)
        { x1=(-b-sqrt(delta))/2*a;
          x2=(-b+sqrt(delta))/2*a;
 
          cout<<"\nDelta=" <<delta <<endl;
          cout<<"\nDelta>0, wiec rownanie ma dwa pierwiastki" <<endl;
          cout<<"x1=" <<x1; cout<<"\nx2=" <<x2;
        }
 
        if(delta<0)
        { cout<<"\nDelta=" <<delta; 
          cout<<"\nDelta<0, wiec rownanie nie ma pierwiastkow.";
 
        }       
 
 
 
 
 
   getch(); 
   main();
    return 0;   
} 
0

Nawet nie mógłbym tak zrobić, bo wyraźnie mam w zadaniu użyć pętli do....while. Już zrobiłem tak jak mi powiedziała Ola Nordmann, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1