数値計算での追加 – プログラミング – Home

通知
すべてクリア

数値計算での追加


ケンゴ
 ケンゴ
(@ケンゴ)
ゲスト
結合: 22年前
投稿: 1
Topic starter  

#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);
}


引用解決済
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

>ここを追加したんですがどうしたらいいでしょうか?

知りません。なぜならあなたが最終的にどうしたいのかがわからないからです。
コンパイルエラーをなくしてくれ、というのなら、

>#define MAX_DATA 2

と、

>struct campaign data[MAX_DATA]

の意味を考えてみては?
とアドバイスすることはできますが。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

この場合 「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つで初期化しているため
コンパイルエラー等になっているのではないでしょうか

もう少し何を聞きたいのか説明文章ほしいですね、ダラダラしないのもひとつの方法
とは思いますけど・・・

「プリプロセッサ演算子」などをもう少し理解度を深めると良いかも知れませんね


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました