2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【ヤバイ】誰かおせぇてぇ【解んね】

1 :デフォルトの名無しさん:2006/05/21(日) 15:00:06
標準体重は次式で求められるものとする。
標準体重(kg)=身長(cm)−110

ユーザーが身長(cm)と実際の体重(kg)とを入力すると、
もしも実際の体重が標準体重より重い場合は「太りすぎ!」
と表示し、もしも実際の体重が標準体重より軽い場合は「
やせすぎ!」と表示し、もしも実際の体重と標準体重が同じ
場合は「標準です!」と表示して、判定してくれるような
プログラムの、フローチャートとCかFORTRANかの
プログラムを作れ。


2 :デフォルトの名無しさん:2006/05/21(日) 15:05:59
余裕で2get

3 :デフォルトの名無しさん:2006/05/21(日) 15:13:40
>>1
単発スレ立てんな、と >>2-1000 は申しております。

4 :デフォルトの名無しさん:2006/05/21(日) 15:14:33
やべぇ俺太りすぎだorz

5 :デフォルトの名無しさん:2006/05/21(日) 15:32:32
if((身長-110)<(体重))
{
  printf("太り過ぎ。\n");
}else{
  printf("よかつたね。\n");
}

6 :デフォルトの名無しさん:2006/05/21(日) 15:35:32
/* マヂレス */

f((身長-110)<(体重))
{
  printf("太り過ぎ。\n");
}else if((身長-110)==(体重)){
  printf("ふつー\n");
}else{
  printf("よかつたね。\n");
}

7 :デフォルトの名無しさん:2006/05/21(日) 16:00:15
/*整数のみの判断 製作者コ○ト*/

int main(void)
{
int Htai,Utai,Usin;

printf("身長を入力してください:");//ユーザーデータの入力
scanf("%d",&Usin);
printf("体重を入力してください:");
scanf("%d",&Utai);

Htai=Usin-110;//標準体重の計算

if(Utai>Htai){//体重の判断
printf("太りすぎ!\n");
}
else if(Utai<Htai){
printf("やせすぎ!\n");
}
else if(Utai==Htai){
printf("標準です!\n");
}

else
printf("エラーです\n");

return 0;
}


頑張ってね

8 :デフォルトの名無しさん:2006/05/21(日) 16:07:07
まってろ俺がC++で書いてやる

9 :デフォルトの名無しさん:2006/05/21(日) 16:08:07
これ小さいプログラムだからCで書いたほうがいいんじゃね?

10 :デフォルトの名無しさん:2006/05/21(日) 16:08:47
>>1
int d;
if (scanf("%d", &d)-110) then printf("規格外");
else printf("非標準");

マジレスすると、>>3の言うとおり。面白い問題ならば話は別。
ボランティアを探しているなら適切な場所に逝け

11 :デフォルトの名無しさん:2006/05/21(日) 16:11:13
>>1
礼ぐらい言えよ

12 :デフォルトの名無しさん:2006/05/21(日) 16:19:26
>>11


13 :デフォルトの名無しさん:2006/05/21(日) 16:33:46
札付きの悪かよ!


14 :8:2006/05/21(日) 17:42:47
できたぞ!
まだC++に不慣れで時間が掛かってしまった。

15 :8:2006/05/21(日) 17:43:47
#include <iostream>
#include <string>
#include <map>
#include <cmath>


16 :8:2006/05/21(日) 17:45:08
ごめん間違えた。
mapなんて使ってないや

#include <iostream>
#include <string>
#include <cmath>

17 :8:2006/05/21(日) 17:45:45
class Judge{
public:
class Discriminant{
double coefficient;
double exponent;
double constant;
public:
Discriminant(double coef, double expo, double cons):coefficient(coef),exponent(expo),constant(cons){};
double ideal_weight(double height){return coefficient*std::pow(height,exponent)+constant;}
};
enum State{Thin,Average,Fat};
class Messages{
std::string msg_thin;
std::string msg_average;
std::string msg_fat;
public:
Messages(std::string thin,std::string average,std::string fat)
:msg_thin(thin),msg_average(average),msg_fat(fat){};
std::string& get_massage(State state){return state==Thin?msg_thin:state==Fat?msg_fat:msg_average;}
};
private:
Messages messages;
Discriminant discriminant;
State get_state(double n){return n<0?Thin:n>0?Fat:Average;}
public:
Judge(const Messages& msgs,const Discriminant& discr):messages(msgs),discriminant(discr){};
const std::string& judgemant(double height, double weight){return messages.get_massage(get_state(weight-discriminant.ideal_weight(height)));}
};

18 :8:2006/05/21(日) 17:46:56
int main(){
Judge::Messages msgs("やせすぎ!","標準です!","太りすぎ!"); // 表示メッセージの指定
Judge::Discriminant discr(1,1,-110); // 理想体重 = 身長 -110
// 理想体重(kg)=係数*身長(cm)^指数+定数 の形に変形できる肥満判定式なら何でも使用可能。
// 例えば (0.0022,2,0) でBMI法
Judge judge(msgs,discr);
double height,weight;
std::cout << "あなたの身長を入力してください(cm):";
std::cin >> height;
std::cout << "あなたの体重を入力してください(kg):";
std::cin >> weight;
std::cout << judge.judgemant(height,weight);
return 0;
}

19 :8:2006/05/21(日) 18:00:09
書いて見たはいいけど、もっと効率いい設計があるような気がする…
cout << judge.judgemant(height,weight); って記述も何か微妙だし。
アドバイス下さいエロい人。

20 :デフォルトの名無しさん:2006/05/21(日) 19:13:40
書いてみました。小学生です。よろしくm(__)m
#include <stdio.h>

//-------------------------------------------------
//----- ☆列挙型☆ -----------   ---------
// 名前: body_balance --------
// 用途: 体重をデブ・健康・ガリのいずれかで表す。-
//--------------------------------------- ------------
typedef enum {
 //---- 名前: DEBU 表す体型: デブ
 DEBU,
 //--- ----- 名前: HELTHY 表す体型: 健康体
 NORMAL,
 //-- 名前: GARI 表す体型: デブ ----------
 GARI 
} body_balance; // enum body_balance の終了ブロック


//-------------------   -----------------------
//----- ☆プロトタイプ宣言☆
// 用途: 各手続きの説明は後述。------------------------------------
//-----------------------------------------------
body_balance evaluate_yourweight(int weight, int height);
void output_errormessage(int errorlevel, const char* msg);
int main(void);


21 :デフォルトの名無しさん:2006/05/21(日) 19:14:15

//-------------------------------
//------------ ☆手続き☆ ---------     -----------------
// 名前: evaluate_yourweight        ------
// 引数: weight; あなたの体重[kg]。 height; あなたの身長[cm]。----
// 戻り値:body_balance (あなたの体重の判定結果)
// 用途: あなたの体重を判定する。   ---------
//---------------------------------------
body_balance evaluate_yourweight(int weight, int height) {
 // 体重が重すぎる場合の処理。
 if(582 < weight)
  // エラー
  output_errormessage(7, "体重が重すぎます。オーバーフローする可能性があるので処理を中止しました。");
  /* 体重の計算 */
 if(0 == weight-height+110) return NORMAL; // 普通の体型
 if(0 < weight-height+110) return DEBU; // デブ
 if(0 > weight-height+110) return GARI; // ガリ
 output_errormessage(256, "プログラムが誤作動を起こしました。");
}; // evaluate_yourweight の終了ブロック

//-------------------------------
//------------ ☆手続き☆ ---------     -----------------
// 名前: output_errormessage        ------
// 引数: weight; あなたの体重[kg]。 height; あなたの身長[cm]。----
// 戻り値:body_balance (あなたの体重の判定結果)
// 用途: あなたの体重を判定する。   ---------
//---------------------------------------
void output_errormessage(int errorlevel, const char* msg) {
 // 変数の宣言。
 int i = 0;
 // for文。errorlevelの分だけエラーメッセージを表示。


22 :デフォルトの名無しさん:2006/05/21(日) 19:15:53
 for(; i<errorlevel; i++) {
  fprintf(stderr, "fatal error: %s", msg); // エラーメッセージを標準エラー出力に表示する。
  // 改行する。
  puts("");
 };
 abort(); // プログラムを終了する。
} // output_errormessage の終了ブロック

//---------------------------       ----
//---- プログラムのエントリーポイント
// ---------- 名称:main ---------------------------
//---------------------------------------
//------------- 使い方: calcw[RETURN]
//-- Copyright(C) 2006, 5/14 (火) たぬかま All Right Reserved.-----
// ------ Author:: たぬかま   ----
int main(void) {
 // 各変数の宣言。
 int weight, height;
 body_balance Bob;
 /* ------------ 体重の入力 */
 puts("体重を入力してください。単位はキログラムです。:");
 scanf("%d", &weight);
 /* ------------ 身長の入力 */
 puts("身長を入力してください。単位はセンチメートルです。:");
 scanf("%d", &height);
 /*^^^^^^^ ☆体重の判別☆ ^^^^^^^*/
 if(evaluate_yourweight(weight, height) == NORMAL) puts("あなたは健康です。これからもその体重と身長を維持し続けてください。");
 if(evaluate_yourweight(weight, height) == DEBU) output_errormessage(300, "太ってます。");
 if(evaluate_yourweight(weight, height) == GARI) puts("やせ気味です。運動・睡眠を欠かさず、肉類を中心に摂っていきましょう。");
 /*^^^^^^^ ☆終了☆ ^^^^^^^*/
 return 0; // 戻り値
} // main の終了ブロック

23 :デフォルトの名無しさん:2006/05/21(日) 19:22:17
>>8
C++で書いてみた。
#include <iostream>
inline unsigned int input(const char *message) {
std::cout<<message;
unsigned int x;
do std::cin>>x; while(!x);
return x;
}
int main() {
unsigned int weight = input("体重(kg)を入力してください: "),
standard_weight = input("身長(cm)を入力してください: ") - 10;
std::cout<<((standard_weight > weight) ? "ガリんちょ><" :
(standard_weight < weight) ? "ピザデブ><" : "わかりません><")<<std::endl;
return 0;
}

24 :デフォルトの名無しさん:2006/05/21(日) 19:28:32
それベターC

25 :8:2006/05/21(日) 21:10:20
改良完了。
結局入力を促すあたりをクラスとして定義することにした。

26 :8:2006/05/21(日) 21:11:31
class Status{ // ステータスを定義するクラス
public:
enum State{ // 身体の状態
Thin, // ヤセ
Average, // 標準
Fat // デブ
};
static State get_state(double n); // 負ならヤセ、0なら標準、正ならデブを返す
};

Status::State Status::get_state(double n){ // 負ならヤセ、0なら標準、正ならデブを返す
return n<0?Thin:n>0?Fat:Average;
}

27 :8:2006/05/21(日) 21:12:26
#include <string>
#include <iostream>

class Asking{ // 身長と体重の入力を促すクラス
std::string msg_height; // 身長をたずねるメッセージ
std::string msg_weight; // 体重をたずねるメッセージ
public:
Asking(std::string msg_h, std::string msg_w); // 催促メッセージのセット
void ask(double &height, double &weight); // 身長・体重を入力させる
};

Asking::Asking(std::string msg_h, std::string msg_w) // 催促メッセージのセット
:msg_height(msg_h)
,msg_weight(msg_w)
{};

void Asking::ask(double &height, double &weight){ // 身長・体重を入力させる
std::cout << msg_height;
std::cin >> height;
std::cout << msg_weight;
std::cin >> weight;
return;
}

28 :8:2006/05/21(日) 21:13:06
class Messages{ // 表示するメッセージを定義するクラス
std::string msg_thin; // 「やせてる」メッセージ
std::string msg_average; // 「標準」メッセージ
std::string msg_fat; // 「太ってる」メッセージ
public:
Messages(std::string thin,std::string average,std::string fat); // 返すメッセージのセット
// 引数は順にヤセ、標準、デブのメッセージ
std::string& get_massage(Status::State state); // stateに応じたメッセージを返す
};

Messages::Messages(std::string thin,std::string average,std::string fat) // 返すメッセージのセット
:msg_thin(thin)
,msg_average(average)
,msg_fat(fat)
{};

std::string& Messages::get_massage(Status::State state)// stateに応じたメッセージを返す
{
return state == Status::Thin ? msg_thin : state == Status::Fat ? msg_fat : msg_average;
}

29 :8:2006/05/21(日) 21:13:49
#include <cmath>

class Discriminant{ // 肥満判定式を定義するクラス
double coefficient; //係数
double exponent; // 指数
double constant; // 定数
public:
Discriminant(double coef, double expo, double cons); // 各係数のセット
// 理想体重 = 係数*身長^指数+定数 で表される。
// この式に変換可能な肥満判定式ならば何でも使用可能。
// 例えば (0.0022,2,0) でBMI法
double ideal_weight(double height); // 理想体重を返す
};

Discriminant::Discriminant(double coef, double expo, double cons) // 各係数のセット
:coefficient(coef)
,exponent(expo)
,constant(cons)
{};

double Discriminant::ideal_weight(double height){ // 理想体重を返す
return coefficient*std::pow(height, exponent)+constant;
}

30 :8:2006/05/21(日) 21:19:26
//連続投稿回避に携帯からカキコ

31 :8:2006/05/21(日) 21:19:43
class Judge{ // 肥満を判定するクラス
Status status; // ステータスを定義するクラス
Messages messages; // 表示するメッセージを定義するクラス
Asking asking; // 身長と体重の入力を促すクラス
Discriminant discriminant; // 肥満判定式を定義するクラス
double height; // 身長
double weight; // 体重
public:
Judge(const Messages& msgs, const Asking& ask, const Discriminant& discr); // 各定義を与える
void judgemant(); // 肥満判定
};

Judge::Judge(const Messages& msgs, const Asking& ask, const Discriminant& discr) // 各定義を与える
:messages(msgs)
,asking(ask)
,discriminant(discr)
{};

void Judge::judgemant() // 肥満判定
{
asking.ask(height, weight);
std::cout << messages.get_massage(status.get_state(weight - discriminant.ideal_weight(height))) << std::endl;
return;
}

32 :8:2006/05/21(日) 21:20:34
int main(){
Messages msgs("やせすぎだゴルァ!","キタ―(゚∀゚)","太りすぎだゴルァ!"); // 表示メッセージの指定
Asking asking("身長キボンヌ(cm):", "体重キボンヌ(kg):"); // 入力催促メッセージの指定
Discriminant discr(1, 1, -110); // 肥満判定式の指定 理想体重 = 身長 -110
Judge judge(msgs, asking, discr);
judge.judgemant();
return 0;
}

// 終わり

33 :デフォルトの名無しさん:2006/05/21(日) 22:54:33
#include<stdio.h>
int main(void){
for(;;)
printf("\a");
return 0;
}

34 :デフォルトの名無しさん:2006/05/21(日) 23:11:43
>>33


35 :デフォルトの名無しさん:2006/05/21(日) 23:34:38
なんで誰も宿題スレに誘導しないんだろう

36 :デフォルトの名無しさん:2006/05/29(月) 15:10:01
perl -e 'print "おまえは、もう、太っている。\n";'


37 :デフォルトの名無しさん:2006/05/30(火) 23:11:39
wktk

38 :デフォルトの名無しさん:2006/05/30(火) 23:32:50
ひまじんがいぱーい

39 :デフォルトの名無しさん:2006/05/31(水) 01:27:48
誰かフォートランで書いたら神

40 :デフォルトの名無しさん:2006/07/03(月) 15:48:47
FORTRAN77で書いてみた

REAL*8 HBASE
PARAMETER(HBASE=110.0D0)
REAL*8 HEIGHT,WEIGHT,WSTD
WRITE(*,*)'身長(cm)は?'
READ(*,*)HEIGHT
WRITE(*,*)'体重(kg)は?'
READ(*,*)WEIGHT
WSTD=HEIGHT-HBASE
IF(WEIGHT.GT.WSTD)THEN
WRITE(*,*)'太りすぎ!'
ELSE IF(WEIGHT.LT.WSTD)THEN
WRITE(*,*)'やせすぎ!'
ELSE
WRITE(*,*)'標準です!'
END IF
STOP
END


41 :40:2006/07/03(月) 18:38:42
たりぃのでFORTRAN並に古臭いLispで書いてみた

(define (judge-body)
((lambda (height weight)
(let* ((height-base 110)
(weight-standard (- height height-base)))
(cond ((> weight weight-standard) (display "太りすぎ!"))
((< weight weight-standard) (display "やせすぎ!"))
(#t (display "標準です!")))
))
(begin (display "身長(cm)は?") (read))
(begin (display "体重(kg)は?") (read))
)
)
(judge-body)

まあ実際のところはSchemeだけど

42 :40:2006/07/03(月) 18:42:34
Lisp系ってインデント消えるとやたら分かりにくいや

43 :40:2006/07/03(月) 19:41:40
ごはんたべたので入力ファイルなしに起動する用にawkで書いてみた

BEGIN { height_base = 110
print "身長(cm)は?"
getline height
print "体重(kg)は?"
getline weight
weight_standard = height - height_base
if (weight > weight_standard)
print "太りすぎ!"
else if (weight < weight_standard)
print "やせすぎ!"
else
print "標準です!"
}

awkで書く意味ねえ


44 :40:2006/07/04(火) 01:17:18
フローチャートが無いようなのでいい加減なlatex
適当にdocument環境で囲ってくれ

\setlength{\unitlength}{1cm}
\begin{picture}(10,15)(-5,-15)
\put(1,-0.5){\oval(2,1)}\put(0,-1){\makebox(2,1)[c]{\shortstack[c]{開始}}}
\put(1,-1){\line(0,-1){1}}
\put(-1,-4){\makebox(4,2)[c]{\shortstack[c]{身長(cm)と体重(kg)\\を入力}}}
\put(-0.67,-2){\line(1,0){4}}\put(-1.33,-4){\line(1,0){4}}
\put(-1.33,-4){\line(1,3){0.67}}\put(2.67,-4){\line(1,3){0.67}}
\put(1,-4){\line(0,-1){1}}
\put(-1,-7){\framebox(4,2)[c]{\shortstack[c]{$標準体重 \gets 身長 - 110$}}}
\put(1,-7){\line(0,-1){1}}\put(-1,-9){\line(2,1){2}}
\put(-1,-9){\line(2,-1){2}}\put(3,-9){\line(-2,-1){2}}
\put(3,-9){\line(-2,1){2}}
\put(-1,-10){\makebox(4,2)[c]{\shortstack[c]{体重 : 標準体重}}}
\put(-1,-8.7){\makebox(0,0)[rt]{$>$}}
\put(3,-8.7){\makebox(0,0)[lt]{$<$}}
\put(1.6,-10){\makebox(0,0)[lb]{$=$}}
\put(1,-10){\line(0,-1){1}}
\put(-1,-13){\makebox(4,2)[c]{\shortstack[c]{「標準です!」と表示}}}
\put(-0.67,-11){\line(1,0){4}}\put(-1.33,-13){\line(1,0){4}}
\put(-1.33,-13){\line(1,3){0.67}}\put(2.67,-13){\line(1,3){0.67}}
\put(1,-13){\line(0,-1){1}}


45 :40:2006/07/04(火) 01:18:15
\put(1,-14.5){\oval(2,1)}\put(0,-15){\makebox(2,1)[c]{\shortstack[c]{終了}}}
\put(-1,-9){\line(-1,0){3}}\put(-4,-9){\line(0,-1){1}}
\put(-4,-10){\vector(0,-1){1}}
\put(-6,-13){\makebox(4,2)[c]{\shortstack[c]{「太りすぎ!」と表示}}}
\put(-5.67,-11){\line(1,0){4}}\put(-6.33,-13){\line(1,0){4}}
\put(-6.33,-13){\line(1,3){0.67}}\put(-2.33,-13){\line(1,3){0.67}}
\put(-4,-13){\line(0,-1){0.5}}\put(-4,-13.5){\vector(1,0){5}}
\put(3,-9){\line(1,0){3}}\put(6,-9){\line(0,-1){1}}
\put(6,-10){\vector(0,-1){1}}
\put(4,-13){\makebox(4,2)[c]{\shortstack[c]{「やせすぎ!」と表示}}}
\put(4.33,-11){\line(1,0){4}}\put(3.67,-13){\line(1,0){4}}
\put(3.67,-13){\line(1,3){0.67}}\put(7.67,-13){\line(1,3){0.67}}
\put(6,-13){\line(0,-1){0.5}}\put(6,-13.5){\vector(-1,0){5}}
\end{picture}

寝るぜ

46 :デフォルトの名無しさん:2006/07/04(火) 01:21:33
身長って実際の身長じゃなくていいんだな。改めて読んでみると。

47 :デフォルトの名無しさん:2006/07/04(火) 02:45:00
体重だって実際の値が入力されたかどうか検証のしようがないわけだし。
その辺はプログラムに対するシバリではないと思う。

20 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)