C言語のソースを書きました。どこが間違っているのでしょうか?
「Cの絵本」を参考にしています。
コンパイルはできます。
しかし、計算の時の実行結果が思うように表示されません。
どこが間違っているのでしょうか?
ソースファイル名 calliba.h
#ifndef _CALLIB_H_
#define _CALLIB_H_
typedef struct _CALORIE{
char name[40];
float value;
}CALORIE;
int calregist(CALORIE *, int);
int calcalc(CALORIE *, int);
#endif
#include <stdio.h>
#include <string.h>
#include "calliba.h"
ソースファイル名 keibaa2.c
int calregist(CALORIE *pcal, int num)
{
printf("計算する種類を入力してください。");
scanf("%s", (pcal+num)->name);
printf("その計算する種類の値を入力してください。");
scanf("%f", &((pcal+num)->value));
printf("登録しました。\n\n");
return num+1;
}
int calcalc(CALORIE *pcal, int num)
{
char name[40];
int gram;
int totalcal = 0;
int i;
printf("---------計算する種類名一覧-------------------------\n");
for(i = 0; i < num; i++)
printf("%s\t", (pcal+i)->name);
printf("\n-----------------------------------------------------\n");
while(1){
printf("種類名(endで計算):");
scanf("%s", name);
if(strcmp(name, "end") == 0)
break;
printf("terf 0 or dirt 1:" );
scanf("%d", &gram);
if(gram == 0)
totalcal += (pcal+i)->value * 500 ;
else if(gram == 1)
totalcal += (pcal+i)->value * 100;
else if(gram == 2)
break;
}
return totalcal;
}
ソースファイル名 keibaa.c
#include <stdio.h>
#include "calliba.h"
int main()
{
CALORIE cal[500] = {
{"1", 100},
{"2", 50},
{"3", 40},
{"taisa", 110},
{"9 basin", 100},
{"8 basin", 90},
{"7 basin", 80},
{"6 basin", 70},
{"5 basin", 60},
{"4 basin", 50},
{"3 basin", 40},
{"2 basin", 30},
{"1 basin", 20},
{"half basin", 10},
{"0 basin", 5}
};
int cal_num = 15;
int mode = 0;
printf("一頭に対する指数値\n");
while(1) {
printf("登録は1を、計算は2を、終了は0を入力してください。");
scanf("%d", &mode);
if(mode == 0)
break;
else if(mode == 1)
cal_num = calregist(cal, cal_num);
else if(mode == 2)
// printf("競馬指数:%6.2fpoint\n\n", calcalc(cal, cal_num));
printf("競馬指数:%dpoint\n\n", calcalc(cal, cal_num));
}
return 0;
}
//ソースファイル名_calliba.h
#ifndef__CALLIB_H_
#define__CALLIB_H_
typedef_struct__CALORIE{
_//char__name[40];
__char__name[12];
__int___value;
}CALORIE;
int_calregist_(CALORIE_*,_int);
int_calcalc___(CALORIE_*,_int);
#endif
//ソースファイル名_keibaa2.c
#include__<stdio.h>
#include__<string.h>
#include__"calliba.h"
//_登録
int_calregist(CALORIE_*pcal,int_num){
__CALORIE___*pc=pcal+num;
__printf("計算する種類を入力してください。");
___scanf("%s",_pc->name);
__printf("その計算する種類の値を入力してください。");
___scanf("%d",_&pc->value);
__printf("登録しました。\n\n");
__return_num+1;
}
//_計算
int_calcalc(CALORIE_*pcal,int_num){
__CALORIE_*pc;
__char____name[40];
__int_____gram;
__int_____totalcal_=_0;
__int_____i,j;
__printf("---------計算する種類名一覧-------------------------\n");
__for(i=0;i<4;i++){
____pc_=_pcal+i;
____for(j=i;j<num;j+=4){
______printf("%-12s",_pc->name);
______pc+=4;
____}_printf("\n");
__}
__printf("\n-----------------------------------------------------\n");
__while(1){
____printf("種類名(endで計算):");
____scanf("%s",_name);
____if(strcmp(name,_"end")_==_0)_break;
____printf("terf_0_or_dirt_1:"_);
____scanf("%d",_&gram);
____pc_=_pcal;
____for(i=0;i<num;i++){
______if(strcmp(pc->name,name)==0){
________if(gram_==_0){
________totalcal_+=_pc->value_*_500_;
________}_else_if(gram_==_1){
__________totalcal_+=_pc->value_*_100;
________}_else_{
__________break;
________}
______}
______pc++;
____}
__}
__return_totalcal;
}
//_ソースファイル名_keibaa.c
#include__<stdio.h>
#include__"calliba.h"
int_main(){
__CALORIE_cal[500]_=_{
______{"1"__________,_100},
______{"2"__________,_50_},
______{"3"__________,_40_},
______{"taisa"______,_110},
______{"9_basin"____,_100},
______{"8_basin"____,_90_},
______{"7_basin"____,_80_},
______{"6_basin"____,_70_},
______{"5_basin"____,_60_},
______{"4_basin"____,_50_},
______{"3_basin"____,_40_},
______{"2_basin"____,_30_},
______{"1_basin"____,_20_},
______{"half_basin"_,_10_},
______{"0_basin"____,_5__}};
__int_num__=_15;
__int_mode_=_0;
__printf("一頭に対する指数値\n");
__while(1)_{
____printf("登録は1を、計算は2を、終了は0_>");
____scanf("%d",_&mode);
____if(mode_==_0)_{
______break;
____}_else_if(mode_==_1)_{
______num_=_calregist(cal,_num);
____}_else_if(mode_==_2)_{
______printf("競馬指数:%dpoint\n\n",_calcalc(cal,_num));
____}
__}
__return_0;
}
/*_出力:
一頭に対する指数値
登録は1を、計算は2を、終了は0_>2
---------計算する種類名一覧-------------------------
1___________9_basin_____5_basin_____1_basin
2___________8_basin_____4_basin_____half_basin
3___________7_basin_____3_basin_____0_basin
taisa_______6_basin_____2_basin
-----------------------------------------------------
種類名(endで計算):1
terf_0_or_dirt_1:0
種類名(endで計算):2
terf_0_or_dirt_1:0
種類名(endで計算):3
terf_0_or_dirt_1:0
種類名(endで計算):end
競馬指数:95000point
登録は1を、計算は2を、終了は0_>0
*/
0 件のコメント:
コメントを投稿