#include <stdio.h>
#include <math.h>
#define RAMDA 0.05 /* λ */
#define GANMA 0.3 /* γ */
#define S0 0 /* 初期売上額 */
#define M 10000000000 /* 市場の飽和金額 */
#define A 1000000000 /* 広告キャンペーン費用 */
#define MAX_TERM 24 /* 販売期間 */
#define MAX_DATA 2 /* 広告キャンペーンの種類 */
struct campaign{
int term; /* 広告キャンペーン期間 */
char term_jp[30]; /* 広告キャンペーンの名称 */
double ab; /* 広告キャンペーンの普及率A */
double b; /* λ + γ * A / M */
};
int main(void);
int main(void)
{
struct campaign data[MAX_DATA] = {
{24,2年間,0.0,0}, ←ここと
{12,1年間,0.0,0},
{6,6ヶ月,0.0,0},
{1,1ヶ月,0.0,0}}; ←ここを追加したんですがどうしたらいいでしょうか?
double s[MAX_DATA][MAX_TERM+1];
int t, i;
char filename[128];
FILE *fp;
for(i = 0;i < MAX_DATA; i++){
/* 普及率の計算 */
data[i].ab = A / (double)data[i].term;
/* λ + γAMの計算 */
data[i].b = (RAMDA + GANMA*data[i].ab / M);
}
printf(副課題3の計算実行\n\n);
printf(Excelで開くファイル名を入力してください.拡張子(*.csv)\n);
gets(filename);
if((fp=fopen(filename,w))==NULL){
printf(ファイルを作成することが出来ません.\n);
return(-1);
}
fprintf(fp,時間);
for(i = 0;i < MAX_DATA; i++)
fprintf(fp,,売上(%s),data[i].term_jp);
fprintf(fp,\n);
for(t = 0;t <= MAX_TERM; t++){
fprintf(fp,%d, t);
for(i = 0;i < MAX_DATA; i++){
if(t <= data[i].term)
s[i][t] = S0*exp(-data[i].b*t)+(GANMA*data[i].ab*(1-exp(-data
[i].b*t))/data[i].b);
else
s[i][t] = s[i][data[i].term]*exp(-RAMDA*(t - data[i].term));
fprintf(fp,,%f,s[i][t]);
}
fprintf(fp,\n);
}
fclose(fp);
return(0);
}
>ここを追加したんですがどうしたらいいでしょうか?
知りません。なぜならあなたが最終的にどうしたいのかがわからないからです。
コンパイルエラーをなくしてくれ、というのなら、
>#define MAX_DATA 2
と、
>struct campaign data[MAX_DATA]
の意味を考えてみては?
とアドバイスすることはできますが。
この場合 「PAI さん」がおっしゃられるとおり
データの挿入場所の問題ではなく、
>#define MAX_DATA 2 /* 広告キャンペーンの種類 */
と
>struct campaign data[MAX_DATA]
の関係をよく理解できていないようです
つまり
> struct campaign data[MAX_DATA] = {
> {24,2年間,0.0,0}, ←ここと
> {12,1年間,0.0,0},
> {6,6ヶ月,0.0,0},
> {1,1ヶ月,0.0,0}}; ←ここを追加したんですがどうしたらいいでしょ
うか?
これは
> struct campaign data[2] = {
・
・
・
と成り
領域を 2つしか確保していない領域に対して4つで初期化しているため
コンパイルエラー等になっているのではないでしょうか
もう少し何を聞きたいのか説明文章ほしいですね、ダラダラしないのもひとつの方法
とは思いますけど・・・
「プリプロセッサ演算子」などをもう少し理解度を深めると良いかも知れませんね