Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program liczący ilość liczb, które spełniają zadanie zawiesza się

Ostatnio zmodyfikowano 2013-11-28 19:50
Autor Wiadomość
marek252
Temat założony przez niniejszego użytkownika
Program liczący ilość liczb, które spełniają zadanie zawiesza się
» 2013-11-28 19:20:11
Witam.
edit:Już wiem co było źle. Nie można dzielić przez 0. Teraz pytanie, co zrobić, aby program nie zatrzymywał się na liczbie 49 tylko szedł dalej?
C/C++
//Napisz funkcję sprawdzającą numerycznie jakie liczby całkowite
//z przedziału [1,1000] spełniają równanie:
//       ((x^2)/(50-x))  -  sin(x) >= 0

#include <iostream>
#include <stdlib.h>
#include <cmath>

using namespace std;

int main()
{
    int licznik = 0;
   
    for( int x = 1; x <= 1000; x++ )
    {
        if( x != 50 )
        {
            if((( x * x ) /( 50 - x ) ) - sin( x ) >= 0 )
            {
                cout << "Liczba " << x << " spelnia to rownanie" << endl;
                licznik++;
            }
        }
    }
   
    cout << "Bylo " << licznik << " liczb w przedziale [1, 1000] ]spelniajacych to rownanie";
   
   
    system( "PAUSE" );
    return 0;
}
Pozdrawiam
P-97777
pekfos
» 2013-11-28 19:27:49
Dla x równego 50 masz tam dzielenie przez zero.
P-97780
marek252
Temat założony przez niniejszego użytkownika
» 2013-11-28 19:35:19
Właśnie się zorientowałem, zmieniłem 1 post. Teraz dochodzi do 49 i koniec. Chciałbym, aby dalsze liczby również sprawdzał. Zmieniłem kod, ale dalej dochodzi tylko do 49. Jak to łatwo zmienić, aby sprawdzał dalej? Kombinować tak jak to zrobiłem, czy inaczej?
C/C++
int main()
{
    int licznik = 0;
   
    for( int x = 1; x <= 1000; x++ )
    {
       
        if( x != 50 )
        {
            if((( x * x ) /( 50 - x ) ) - sin( x ) >= 0 )
            {
                cout << "Liczba " << x << " spelnia to rownanie" << endl;
                licznik++;
            }
        }
       
        else
        if( x == 50 )
        {
            x = 51;
            if((( x * x ) /( 50 - x ) ) - sin( x ) >= 0 )
            {
                cout << "Liczba " << x << " spelnia to rownanie" << endl;
                licznik++;
            }
        }
    }
   
    cout << "Bylo " << licznik << " liczb w przedziale [1, 1000] ]spelniajacych to rownanie";
   
   
    system( "PAUSE" );
    return 0;
}
P-97783
pekfos
» 2013-11-28 19:43:06
Ten kod robi to samo, co poprzedni. Program działa prawidłowo, dla x większego od 50, wyrażenie jest ujemne.
P-97785
marek252
Temat założony przez niniejszego użytkownika
» 2013-11-28 19:50:17
Racja, dzięki.
P-97786
« 1 »
  Strona 1 z 1