C言語でコードを書くことはできたのですが、Javaへの変換がよく分からないので教えていただきたいです! C言語のソースコード #include <stdio.h>
C言語でコードを書くことはできたのですが、Javaへの変換がよく分からないので教えていただきたいです! C言語のソースコード #include <stdio.h> #include <stdlib.h> typedef struct field{ char name[32]; double h,w,bmi; struct field *next; }person; void add(person **plist, person *newstr); void output(person *p); void pfree(person *p); int main(void){ person *list,t; int i; list = NULL; i = 0; while(1){ scanf("%s",t.name); if(t.name[0] == '0'){ //名前の1文字目が0なら処理終了 break; } scanf("%lf",&t.h); scanf("%lf",&t.w); t.bmi = t.w/((t.h/100)*(t.h/100)); t.next = NULL; add(&list,&t); } output(list); pfree(list); return 0; } void add(person **plist,person *newt){ person *p,*q; person *r; p = *plist; q = NULL; while(p != NULL){ if(newt->bmi < p->bmi){ break; }else{ q = p; p = p->next; } } r = (person*)malloc(sizeof(person)); *r = *newt; r->next = p; if(q != NULL){ q->next = r; }else{ *plist = r; } } void output(person *p){ while(1){ if(p == NULL){ break; }else{ printf(" BMI > %.1lf ",p->bmi); printf(" 身長[cm] > %.1lf ",p->h); printf(" 体重[kg] > %.1lf ",p->w); printf(" 名前 > %s.\n",p->name); } p = p->next; } } void pfree(person *p){ if(p->next != NULL){ pfree(p->next); } free(p); p = NULL; } よろしくお願いします。
ベストアンサー
> そのまま変換してもあまり良い結果にはならないかと……。 私もそう思うので、意訳をしてみました。キモになっている部分のロジックも、ちょっとだけ変えちゃいました。 https://ideone.com/P6TSOu
質問者からのお礼コメント
大変助かりました!ありがとうございます!
お礼日時:5/19 21:15