Intializing argument 4
Bonjour,
je dois rendre ce projet pour demain sauf qu'à la fin j'ai un petit soucis, je vous donne déjà mon programme:
#include<iostream>
#include<cmath>
using namespace std;
double P(int n, double x, double (*a)){
double result;
for (int i=0;i<=n;++i){
result= result + a[i]*(pow(x,i));
}
return result;
}
double mrg( double a, double b, int N,double(*f)(double x)){
double h=(b-a)/N;
double result;
for (int i=0;i<=N;++i){
result= result+ h*f(a+i*h);
}
return result;
}
double trap(double a, double b,double N, double (*f)(double(x))) {
double h=(b-a)/N;
double result;
for (int i=0;i<=N;i++){
result=result+h*(f(a+i*h)+f(a+(i+1)*h))/2 ;
}
return result;
}
double simp(double a, double b,double N, double (*f)(double(x))) {
double h=(b-a)/N;
double result;
for (int i=0;i<=N;i++){
result=result+h*((1./6)*f(a+i*h)+(2./3)*f(((a+i*h)+(a+(i+1)*h))/2)+1./6*f(a+(i+1)*h)) ;
}
return result;
}
int main (){
int N, n, i;
double a, b, *poi;
poi=new double [n+1] ;
char choix;
cout<<"entrez les bornes de l'intervalle : \n \
entrez a: ";
cin>>a;
cout<<"entrez b: ";
cin>>b;
cout<<"entrez le nombre des sous-intervalles: ";
cin>>N;
cout<<"entrez le degre du polynome: ";
cin>>n;
for(i=0;i<=n+1;i++){
cout<<"entrez la coefficient "<<i<<": ";
cin>>poi[i];
}
cout<<"choisissez une methode: \n \
tapez R pour la methode des rectangles a gauche: \n \
tapez T pour la methode des trapezes : \n \
tapez S pour la méthode de simpson : \n \
" ;
cin>>choix;
switch(choix)
{
case 'R': {
cout<<"votre polynome a pour approximation : "<<mrg(a,b,N,P);
break;
}
case 'T': {
cout<<"votre polynome a pour approximation : "<<trap(a,b,N,P);
break;
}
case 'S': {
cout<<"votre polynome a pour approximation : "<<simp(a,b,N,P);
break;
}
}
}
Voilà le programme et à la fin ça m'affiche comme erreur:
S:\yassineinfo\main.cpp||In function 'int main()':|
S:\yassineinfo\main.cpp|164|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|164|error: initializing argument 4 of 'double mrg(double, double, int, double (*)(double))'|
S:\yassineinfo\main.cpp|168|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|168|error: initializing argument 4 of 'double trap(double, double, double, double (*)(double))'|
S:\yassineinfo\main.cpp|173|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|173|error: initializing argument 4 of 'double simp(double, double, double, double (*)(double))'|
||=== Build finished: 6 errors, 0 warnings ===|
SVP j'ai besoin d'aide le plutôt possible, merci d'avance :) .
je dois rendre ce projet pour demain sauf qu'à la fin j'ai un petit soucis, je vous donne déjà mon programme:
#include<iostream>
#include<cmath>
using namespace std;
double P(int n, double x, double (*a)){
double result;
for (int i=0;i<=n;++i){
result= result + a[i]*(pow(x,i));
}
return result;
}
double mrg( double a, double b, int N,double(*f)(double x)){
double h=(b-a)/N;
double result;
for (int i=0;i<=N;++i){
result= result+ h*f(a+i*h);
}
return result;
}
double trap(double a, double b,double N, double (*f)(double(x))) {
double h=(b-a)/N;
double result;
for (int i=0;i<=N;i++){
result=result+h*(f(a+i*h)+f(a+(i+1)*h))/2 ;
}
return result;
}
double simp(double a, double b,double N, double (*f)(double(x))) {
double h=(b-a)/N;
double result;
for (int i=0;i<=N;i++){
result=result+h*((1./6)*f(a+i*h)+(2./3)*f(((a+i*h)+(a+(i+1)*h))/2)+1./6*f(a+(i+1)*h)) ;
}
return result;
}
int main (){
int N, n, i;
double a, b, *poi;
poi=new double [n+1] ;
char choix;
cout<<"entrez les bornes de l'intervalle : \n \
entrez a: ";
cin>>a;
cout<<"entrez b: ";
cin>>b;
cout<<"entrez le nombre des sous-intervalles: ";
cin>>N;
cout<<"entrez le degre du polynome: ";
cin>>n;
for(i=0;i<=n+1;i++){
cout<<"entrez la coefficient "<<i<<": ";
cin>>poi[i];
}
cout<<"choisissez une methode: \n \
tapez R pour la methode des rectangles a gauche: \n \
tapez T pour la methode des trapezes : \n \
tapez S pour la méthode de simpson : \n \
" ;
cin>>choix;
switch(choix)
{
case 'R': {
cout<<"votre polynome a pour approximation : "<<mrg(a,b,N,P);
break;
}
case 'T': {
cout<<"votre polynome a pour approximation : "<<trap(a,b,N,P);
break;
}
case 'S': {
cout<<"votre polynome a pour approximation : "<<simp(a,b,N,P);
break;
}
}
}
Voilà le programme et à la fin ça m'affiche comme erreur:
S:\yassineinfo\main.cpp||In function 'int main()':|
S:\yassineinfo\main.cpp|164|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|164|error: initializing argument 4 of 'double mrg(double, double, int, double (*)(double))'|
S:\yassineinfo\main.cpp|168|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|168|error: initializing argument 4 of 'double trap(double, double, double, double (*)(double))'|
S:\yassineinfo\main.cpp|173|error: invalid conversion from 'double (*)(int, double, double*)' to 'double (*)(double)'|
S:\yassineinfo\main.cpp|173|error: initializing argument 4 of 'double simp(double, double, double, double (*)(double))'|
||=== Build finished: 6 errors, 0 warnings ===|
SVP j'ai besoin d'aide le plutôt possible, merci d'avance :) .
A voir également:
- Intializing argument 4
- Code gta 4 ps4 - Guide
- Control center 4 - Télécharger - Divers Utilitaires
- 4 gb en go ✓ - Forum Clé USB / Carte mémoire
- Z flip 4 s'éteint quand je le ferme - Forum Samsung
- 4GB= MO et GO ✓ - Forum Jeux vidéo
1 réponse
Bonjour,
Dans ton code, tes fonction smp, mrg et trap déclarent qu'elles attendent un pointeur de fonction, telle que cette fonction retourne un double et prend en paramètre un double.
Or ici, tu passes la fonction P, qui certes retourne bien un double, mais prend en paramètres un
Tes pointeurs de fonctions devraient être du genre
Bonne chance
Dans ton code, tes fonction smp, mrg et trap déclarent qu'elles attendent un pointeur de fonction, telle que cette fonction retourne un double et prend en paramètre un double.
Or ici, tu passes la fonction P, qui certes retourne bien un double, mais prend en paramètres un
intet un
double *.
Tes pointeurs de fonctions devraient être du genre
double (*f) (int, double, double *)et tes appels à f (donc P), conforme à ce prototype.
Bonne chance