Witam napisałem program do wyliczania pierwiastków dla danego wielomianu.
Program komplikuje się prawidłowo lecz po wpisaniu wszystkich parametrów nic się dalej nie dzieje.
Nie mam pojęcia co to może być, zrobiłem odpluskwianie w dev c++ i pokazalo ze zmienna "g_zakres = ?"
cokolwiek to oznacza. Modyfikowanie tej zmiennej przez odpluskwiacz nic nie zmienia nadal równa się "?"
Ponizej zamieszczam caly kod: ( bede wdzieczny za wszelkie wskazowki co to moze byc )
#include <iostream>
#include <cmath>
using namespace std;
main()
{
bool znaleziono = false, brak_rozw = false;
double wynik = 0, skok = 0, x = 0;
int potega = 0, stopien = 0, d_zakres = 0, g_zakres = 0, ilosc_pierwiastkow = 0, ilosc_powtorzen = 0;
cout << "Podaj stopien wielomianu W(x): \n";
cin >> stopien;
cout << "Podaj dolny zakres poszukiwania pierwiastkow: \n";
cin >> d_zakres;
cout << "Podaj gorny zakres poszukiwania pierwiastkow: \n";
cin >> g_zakres;
cout << "Podaj co ile ma byc zwiekszany poszukiwany pierwiastek: \n ";
cin >> skok;
int* tWspolczynnik = new int[stopien + 1];
double* zPierwiastek = new double[stopien];
for (int j = 0;j < (stopien + 1); j++) // Wczytanie wartosci dla kolejnych
{ // wspolczynnikow wielomianu
cout << "Podaj wartosc wspolczynnika nr " << j+1 << "\n";
cin >> tWspolczynnik[j];
}
while (!brak_rozw || !znaleziono)
{
wynik = 0;
x = d_zakres + ilosc_powtorzen * skok; // x jest sprawdzana liczba ktora zwieksza sie
ilosc_powtorzen++; // co powtorzenie petli o wartosc "skok"
for (int i = 0; i < stopien; i++)
{
potega = (stopien - i);
wynik += pow(x, potega) * tWspolczynnik[i];
}
wynik += tWspolczynnik[stopien + 1];
if (wynik == 0) // Jesli wynik wynosi 0 to
{ // zwieksz liczbe pierwiastkow o 1 i
zPierwiastek[ilosc_pierwiastkow] = x; // zapisz ten x . x: f(x)=0
ilosc_pierwiastkow++;
}
if (x > g_zakres && ilosc_pierwiastkow == 0) // Jesli szukana liczba przekroczy zakres a
{ // nie znaleziono pierwiastkow to brak rozwiazan
brak_rozw = true; // koniec dzialania programu
}
if (x > g_zakres && ilosc_pierwiastkow > 0) // Jesli szukana liczba przekroczy zakres a
{ // znaleziono jakis pierwiastek to bardzo dobrze:)
znaleziono = true;
}
if ( ilosc_pierwiastkow == stopien ) // Jesli znaleziono tyle pierwiastkow jakiego stopnia
{ // jest wielomian to zakoncz dzialanie gdyz jest to max
znaleziono = true;
}
}
if (brak_rozw)
{
cout << "Ten wielomian nie ma miejsc zerowych w zakresie (" << d_zakres << " , " << g_zakres << ") o skoku ";
cout << skok << "\n";
}
else
{
cout << " W(x)= ";
for ( int k = 0; k < (stopien + 1); k++) // wyswietlenie calego wielomianu
{
if ( k != stopien ) cout << tWspolczynnik[k] << "x^" << (stopien - k);
else cout << tWspolczynnik[k];
}
cout << "/n/n";
for ( int k1 = 0; k1 < ilosc_pierwiastkow; k1++) // wypisanie wynikow
{
cout << "x" << k1 + 1 <<" = " << zPierwiastek[k1] << "/n";
}
}
delete[] zPierwiastek;
delete[] tWspolczynnik;
char c;
cin >> c;
}