質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.38%

  • C++

    4653questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • コンパイル

    77questions

    コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

C++で,コンパイルできない  error: cannot convert ‘double’ to ‘double*’

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 640

takashi.f

score 3

言語はC++,コンパイラはgcc,osはwslを使用しています.
下記のエラーが出てきてコンパイルが通らず困っています.どなたか原因をご教授お願い致します。

error: cannot convert ‘double’ to ‘double*’ for argument ‘1’ to ‘void sf_F1_ijk(double*, double*, double, double, double, double, double, double*, double, double)’
sf_F1_ijk(vecRij[3], vecRik[3],Rij,Rik,cost,lambda,zeta,&F1,&dF1j[3],&dF1k[3]);

using namespace std;
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <limits>



void sf_F1_ijk(double vecRij[3],double vecRik[3], double Rij, double Rik, double cost, double lambda, double zeta,double *Fijk, double *dFijk_dRj[3], double *dFijk_dRk[3]) ;

void sf_cut(double Rij,double Rc, double *fc,double *dfc) ;

void sf_G4_update(double nG4, double vecRij[3], double vecRik[3], double vecRjk[3], double Rij, double Rik, double Rjk,                                                      double cost, double n[100], double G[100], int iG, double dGi[3][100], double dGj[3][100], double dGk[3][100]) ;

void sf_G4(int iG4,double *lambda,double *zeta,double *eta);



int main(void) 
{


double dGi[3][3]={};
double Fijk,dFijk_dRj[3],dFijk_dRk[3], Fijk_dRk[3],vecRij[3]={ } ,vecRik[3]={ } ,vecRjk[3]={ } ,Rij, Rik;

double s;

double cost,lambda,  zeta  ;





sf_F1_ijk(vecRij[3],vecRik[3], Rij, Rik, cost, lambda, zeta,&Fijk,&dFijk_dRj[3],&dFijk_dRk[3]) ;

s=Fijk ;

cout<<s<<"\n" ;


}








void sf_F1_ijk(double vecRij[3], double vecRik[3],double  Rij, double Rik,double  cost, double lambda,double zeta,
               double *Fijk,double  *dFijk_dRj[3],double  *dFijk_dRk[3])
{
           double arg, prefactor;

    arg = 0.50000000*(1.0000000 + lambda*cost) ;
    prefactor = 0.50000000*zeta*lambda*pow(arg,(zeta-1.0000000));
    *Fijk  = pow(arg,zeta);    

    for (int i=0;i<3; i++){

        *dFijk_dRj[i] = prefactor*( -cost*( vecRij[i]/Rij )+ vecRik[i]/Rij );
        *dFijk_dRk[i] = prefactor*( -cost*( vecRik[i]/Rik ) + vecRik[i]/Rik );

    }

}





void sf_F2_ij(double Rij, double Rc,double eta, double *Fij, double *dFij)
{      


    double fexp=0;
        double fc=0,dfc=0;

           sf_cut(Rij, Rc, &fc, &dfc) ;
    fexp = exp(-eta*Rij*Rij);
      *Fij  = fexp*fc;
    *dFij = fexp*( dfc - 2.00000000*eta*Rij*fc  ) ;

}






void sf_G4_update(double nG4, double vecRij[3], double vecRik[3], double vecRjk[3], double Rij, double Rik, double Rjk, 
                                    double cost, double n[100], double G[100], int iG, double dGi[3][100], double dGj[3][100], double dGk[3][100])

{


    double G4=0;
        double dG4[3]={};
    //sf_G4
          double lambda,zeta,eta;
        //Rc    
    double Rc;
    //sf_F1_ijk
    double F1, F1k,dF1k[3],dF1j[3];
    //sf_F2
    double    F2ij,dF2ij,F2ik ,dF2ik,F2jk,dF2jk ;


  for( int iG4 = 0 ; iG4<nG4; iG4++){
    iG     = iG + 1;
        Rc=1.00000000000000 ; //atode function

    sf_G4(iG4,&lambda,&zeta,&eta);

           sf_F1_ijk(vecRij[3], vecRik[3],Rij, Rik,cost,lambda,zeta,&F1,&dF1j[3],&dF1k[3]);
          sf_F2_ij(Rij, Rc, eta, &F2ij, &dF2ij);
    sf_F2_ij(Rik, Rc, eta, &F2ik, &dF2ik);
        sf_F2_ij(Rjk, Rc, eta, &F2jk, &dF2jk);

     G4 = F1*F2ij*F2ik*F2jk;

 //factor of 2 for k<j in sf_fingerprint()

    G[iG] = G[iG] + 2.000000000*G4 ;

    dG4[3] = F2jk*( -(dF1j[3])+dF1k[3])*F2ij*F2ik 
            - vecRij[3]*F1*dF2ij*F2ik- vecRik[3]*F1*F2ij*dF2ik ;

    dGi[3][iG]= dGi[3][iG] + 2.00000000*dG4[3] ;

       dG4[3] =  dF1j[3]*F2ij*F2ik*F2jk
        + vecRij[3]*F1*dF2ij*F2ik*F2jk           
        - vecRjk[3]*F1*F2ij*F2ik*dF2jk  ;

    dGj[3][iG] = dGj[3][iG] + 2.000000000*dG4[3] ;
        dG4[3] =  dF1k[3]*F2ij*F2ik*F2jk
                            +vecRik[3]*F1*F2ij*dF2ik*F2jk+vecRjk[3]*F1*F2ij*F2ik*dF2jk  ;            

    dGk[3][iG] = dGk[3][iG] + 2.000000000*dG4[3]  ;       



      G[iG] = G[iG] + 2.000000000*G4 ;





  }
}



void sf_cut(double Rij,double Rc, double *fc,double *dfc)
{

    if (Rij >= Rc){
        *fc  = 0.000000000 ;
        *dfc = 0.000000000;
        }

    else{
        *fc  =  0.5000000*(cos(M_PI*Rij/Rc) + 1.000000000);
        *dfc = -0.5000000*M_PI/Rc*sin(M_PI*Rij/Rc)      ;
    }
}





void sf_G4(int iG4,double *lambda,double *zeta,double *eta)
{ 

    //initialize
         double coef_lambda[1]={ };
    double coef_zeta[1]={ };
    double coef_eta[1]={ };

    coef_lambda[1]=1;
    coef_zeta[1]=1;      
      coef_eta[1]=1;

    *lambda=coef_lambda[1];
        *zeta=coef_zeta[1];
        *eta=coef_eta[1];

}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

sf_F1_ijk(vecRij[3],vecRik[3], Rij, Rik, cost, lambda, zeta,&Fijk,&dFijk_dRj[3],&dFijk_dRk[3]) ;

コンパイラは「doubleからdouble*に変換できない」ていうてます。
第1,2引数はdouble*を渡すべきなのにdoubleを与えてるから。
※ それぞれ vecRij, vecRik が正解なのかな?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/10 23:22

    解決しました!ありがとうございます

    キャンセル

0

解決しました!ありがとうございます!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C++

    4653questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • コンパイル

    77questions

    コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます