Pessoal, eu não estou conseguindo achar um erro que está ocorrendo no meu código em C++. Parece que é somente um erro de sinal ou de delimitadores
#include<iostream>#include<math.h>floatF(intx);// protótipo da minha funçãousingnamespacestd;#define IterM 100;#define eps 0.00000001; intmain(void){floata,b,*bnx;// aqui eu escolhi usar ponteiro porque os valores a, b mudarãointIter;cout<<"Type value 'a': ";cin>>a;cout<<"Type value 'b': ";cin>>b;if(F(a)*F(b)>0)//chamada da função que avaliará a imagem de 'a' e 'b'cout<<"No signal of change ";system("pause");exit(1);Iter=0;while((b-a)>eps)&Iter<IterM){Iter+=1;*bnx=(a+b)/2;cout<<a<<"________"<<b<<"________"<<*bnx<<endl;if(F(*bnx)*F(a)>0){bnx=&a;F(bnx)=&F(a);}else{bnx=&b;F(bnx)=&F(b);}return0;}cout<<"approximate root: "<<*bnx<<endl;system("pause");}floatF(intx){returnpow(x,2)-8*(x)+15;}
Vejam o resultado reportado pelo compilador:
VCakh8uM.c: In function ‘int main()’:
VCakh8uM.c:33: error: expected )' before ';' token VCakh8uM.c:33: error: expected primary-expression before ')' token VCakh8uM.c:33: error: expected;’ before ‘)’ token
VCakh8uM.c:33: error: expected primary-expression before ‘)’ token
VCakh8uM.c:33: error: expected ;' before ')' token VCakh8uM.c:62: error: expected}’ at end of input
cara teu codigo esta dificil de ler e esta mal identado - provavelmente por conta de colar aqui.
nao faço ideia de onde é a linha 33, aparentemente vc tem um erro na linha 33. falta um ) antes de um ; .
agora me diz uma coisa, o que vc espera disso?
while ((b-a)>eps) & Iter < IterM )
pq isso faz um and bit-a-bit e não um and logico. and logico vc faz com &&
C
Chaconitrax
Vou tentar explicar: Estou implementando um método de biparticionamento para achar raíz de uma equação dados um intervalo a e b [a,b] avaliando as funções f(a) e f(b) precisam ter sinais contrários. Dividimos xn= (a + b)/2 e avaliamos o ponto xn na função–> f(xn). Se f(xn)*f(a) > 0 precisamos trocar os valores dos intervalos. Então, xn assume o valor de a. Caso contrário, xn assume o valor de b. Por isso que eu criei um ponteiro para mudar estes valores. Sei que existe modo de fazer sem usar ponteiro. Mas quero solidificar meu conhecimento de ponteiro aplicando a este caso.
Explicando o “while”: eu defini uma precisão de 0.00000001 que chamei de eps. Se a diferença do intervalo b-a for menor que 0.00000001 E menor que a iteração máxima (que eu defini como sendo 100), continue dentro do laço.
#include<iostream>#include<math.h>#define IterM 100;#define eps 0.00000001;floatF(intx);// protótipo da minha funçãousingnamespacestd;intmain(void){floata,b,*bnx;// aqui eu escolhi usar ponteiro porque os valores a, b mudarãointIter;cout<<"Type value 'a': ";cin>>a;cout<<"Type value 'b': ";cin>>b;if(F(a)*F(b)>0)//chamada da função que avaliará a imagem de 'a' e 'b'cout<<"No signal of change ";system("pause");exit(1);Iter=0;while((b-a)>eps)&&Iter<IterM){Iter+=1;*bnx=(a+b)/2;cout<<a<<"________"<<b<<"________"<<*bnx<<endl;if(F(*bnx)*F(a)>0){bnx=&a;F(bnx)=&F(a);}else{bnx=&b;F(bnx)=&F(b);}return0;}cout<<"approximate root: "<<*bnx<<endl;system("pause");}floatF(intx);// aqui é a definição de minha função{return(pow(x,2)-8*(x)+15);}
Olha essa construção float( expressão ) eu nunca vi.
O que é comum é fazer um cast pra float
(float) expressão
Se vc chama uma função que retorna um float, não tem que fazer cast.
Talvez seja isso que esteja causando o erro
C
Chaconitrax
*O problema foi resolvido e para melhor organização foi feito um tabelamento. Criei uma função para passagem de parâmetros por endereçamento de memória. O método setw(n) foi feito por tentativa e erro porque pra mim não ficou claro qual espécie de inteiro ‘n’ vem dentro de setw(n). Bom, tá aí pra quem quiser estudar como ficou.
#include<iostream>#include<iomanip>#include<conio.h>#include<math.h>#define IterM 100#define eps 0.0000001floatF(floatx);floatswap(float&x,float&y);usingnamespacestd;intmain(void){floata,b;cout<<"Type value 'a': ";cin>>a;cout<<"Type value 'b': ";cin>>b;system("color f0");if(F(a)*F(b)>0){cout<<"Sem mudar o sinal";system("pause");}else{floatIter;cout<<string(80,'_')<<endl;cout<<setw(15)<<"a | ";cout<<setw(15)<<"b | ";cout<<setw(15)<<"c | ";cout<<setw(15)<<"Fc | ";cout<<setw(15)<<"Fa | "<<endl;cout<<string(80,'_')<<endl;Iter=0;while(Iter<=IterM){floatc,F_a,F_c,t;Iter+=1;c=(a+b)/2.0;F_a=F(a);F_c=F(c);if(F(c)*F(a)>0){swap(a,c);}else{swap(b,c);}if((b-a)<eps)break;cout<<setfill('_');cout<<setw(15)<<a;cout<<setw(15)<<b;cout<<setw(15)<<c;cout<<setw(15)<<F_a;cout<<setw(15)<<F_c<<endl;}system("pause");}}floatF(floatx){return(pow(2,x)-3);}floatswap(float&x,float&y){floatt;t=x;x=y;y=t;return0;}