Cześć wam, proszę o sprawdzenie kodu. Teoretycznie nie ma błędu, natomiast program "pomija" strumień wejściowy, nie mam pojęcia gdzie szukać błędu, proszę o wskazówkę.
Czy istnieje możliwość aby zmienna licznik nie była zmienną globalną?
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <math.h>
#include <conio.h>
using namespace std;
# define M_PI 3.1415926535897932384626433832795029L
/* wartość funkcji --------------------------------------------------------------*/
int licznik=0;
double wartosc(double x, int numer_funkcji) {
double wynik=0;
if (numer_funkcji = 1) {
double wynik = sin(x)*cos(x) + 5 * x + 1;
}
if (numer_funkcji = 2) {
double wynik = (M_PI - x*x + sin(x)) / sqrt(25 - x);
}
if (numer_funkcji = 3) {
double wynik = exp(-1.5*x) - 0.3*x*x;
}
return wynik;
}
//--------------------------------------------------------------------------------
/*funkcja bisekcja*/
double metodab(double x, double y, double E, int numer_funkcji) {
double z;
if (wartosc(x,numer_funkcji ) == 0) {
return x;
}
if (wartosc(y, numer_funkcji) == 0) {
return y;
}
do {
z = (x + y) / 2;
if (wartosc(z, numer_funkcji) == 0) {
return z;
}
if ((wartosc(x, numer_funkcji)*wartosc(z, numer_funkcji)) < 0) {
y = z;
}
x = z;
licznik++;
} while (abs(x - y) >= E);
return z;
}
//-------------------------------------------------------------------------------
int menu() {
cout << "Wybierz jedną z funkcji którą mam policzyć" << endl;
cout << "1.Pierwiastek funkcji f(x)=sin(x)cos(x)+5x+1" << endl;
cout << "2.Pierwiastek funkcji f(x)=(pi-x^2+sinx)/sqrt(25-x)" << endl;
cout << "3.PIerwiastek funkcji f(x)=((e^-1.5x)-0,3x^2)" << endl;
cout << "4.Koniec programu" << endl;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int x, y, ponowne_uruchomienie,numer_funkcji;
double E;
cin.clear();
cin.sync();
do {
menu();
cin >> numer_funkcji;
if (numer_funkcji == 4) { return 0; }
cout << "Podaj dokładność z jaką mam policzyć" << endl;
cin >> E;
cout << "Podaj zakres przedziału funkcji (x i y)" << endl;
cin >> x;
cin >> y;
cout << "Miejsce zerowe to " << metodab(x, y, E, numer_funkcji);
cout << "Liczba Iteracji" << licznik << endl;
cout << "jescze raz ? 1/0";
cin >> ponowne_uruchomienie;
} while (ponowne_uruchomienie == 0);
_getch();
return 0;
}