Questo è un programma che risolve le equazioni di qualunque grado con il metodo di bisezione, cioè ogni volta si prende un intervallo a-b, si prende il numero che si trova in mezzo tra a e b chiamato m e si controlla se sostituendo all'equazione la x con la a, poi con la m e poi con la b, si vedono i risultati, e per esempio se i risultati sono

a negativo, m negativo e b positivo

significa che il risultato si trova tra m e b, si scarta l'intervallo a-m e la m si trasforma nella nuova in a e quindi si ricomincia da capo trovando il numero che si trova in mezzo, risostituendo etc...

questo fino a che b-a non è minore della nostra precisione che immettiamo all'inizio (es. 0.0001 cioè 4 cifre dopo la virgola)

questa è la spiegazione del metodo di wikipedia
http://it.wikipedia.org/wiki/Metodo_della_bisezione

ecco il codice
codice:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

long double equazione (long double);
void trova (long double[],int &);

int main()
{
	long double radici[20];
	int quante; 
	long double a,b,m,pre;
	long double ris[3];

	cout<<"Decidi la precisione \n";
	cin>>pre;

	trova(radici,quante);
	
	cout<<quante;
	for(int i=0;i<=quante;i++)
	{
		a=radici[i]+1;
		b=radici[i]-1;
		m=(a+b)/2;
		do
		{
			ris[0]=equazione(a);
			ris[1]=equazione(m);
			ris[2]=equazione(b);
			if(ris[1]<0)
				a=m;
			else
				b=m;
			if(b-a<pre)
				break;
			if(fabs(a)>fabs(b))
			{
				cout<<"Una radice e' "<<b<<endl;
			}
			else
			{
				cout<<"Una radice e' "<<a<<endl;
			}

		}while(1);
		
	}

	return 0;
}

long double equazione (long double x)
{
	long double ris;
	//parte modificabile
	ris=2*pow(sin(x),4)-3*pow(sin(x),2)+1;

	return ris;
}

void trova (long double ris[],int & iter)
{
	iter=0;
	long double temp1,temp2;

	temp1=equazione(-1000);
	
	for(int i=-1000;i<1000;i++)
	{
		temp2=equazione(i+1);
		if((temp1<0 && temp2>0) || (temp1>0 && temp2<0))
		{
			ris[iter]=i;
			iter++;
		}
		if(temp2==0)
		{
			cout<<"Una radice e'  "<<i+1<<endl;
		}
		temp1=temp2;
	}
	return;
}
il problema è che nel runtime mi dice che c'è un accesso violento ad una locazione di memoria... ma errori sintattici nessuno e credo pure errori logici, dategli un'occhiata, il prof di matematica ce li ha lasciati oggi da fare e entro domani li vuole fatti!!!!!

Grazie a tutti per l'aiuto che mi state dando.