質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

Q&A

解決済

3回答

1355閲覧

RubyからCへのコンパイル

Be-net

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

0グッド

0クリップ

投稿2019/05/15 07:28

編集2019/05/17 02:00

p "男なら1を、女ならば2を入力してください"
num = gets.chomp.to_f
p "身長を入力してください"
height = gets.chomp.to_f
p "体重を入力してください"
weight = gets.chomp.to_f

case num
when 1 then
x = (height - 139) * 0.613 + 42.2
when 2 then
x = (height - 139) * 0.510 + 42.2
end

p "肥満度は#{(weight - x)/x * 100}%です"


以上のRubyで書いたプログラムをCにコンバートしたいんですけどいい方法知りませんか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2019/05/15 07:33

コンパイルじゃなくてコンバートではないの? ちなみにC言語で作る課題ならちゃんとC言語で作らないと身に付かないですよ。 わからないなら先生に聞きましょう。
Be-net

2019/05/15 07:45

すいません、言葉の誤用失礼しました ご心配いただきありがとうございます しかし課された課題は最小限の労力で解決に務め、体系的な知識を身につけてから再度課題の理解を深めるべきというのが自分なりの考え方です エンジニアであればより効率的な方法を追求するのが理想ではないでしょうか Cはいずれ絶対勉強しますが、タスクの優先順位的に下の方なのでこちらに投稿させていただきました もしご存知であれば今一度質問の意図に沿ったご回答をお願いいたします(_ _)
ttyp03

2019/05/15 07:51

学校の課題なのか会社の課題なのかわかりませんが、C言語で作れって課題ならC言語がタスクの優先順位は最上位なんじゃないでしょうか? C言語の学習しているんですよね?違うのかな? Rubyを修得したいのにC言語の学校に行ってるのかな? まあそれは置いといて、質問の最後の一文がなければ普通の質問として成立していたので残念ですね。 課題は自分で解決するものなので、あまり回答を期待しないほうがよいでしょう。
Zuishin

2019/05/15 08:04

課題を出さないのが最も効率的なのでは? 他人に聞いていいものならやらなくていいでしょう。
cateye

2019/05/15 09:54 編集

>最小限の労力・・・・は、最小の労力でプログラムが組めるようになってから・・・たぶん今から楽しようと思っているなら無理だと思う・・・・「Rubyで書いたプログラムをCにコンバートする」プログラム作ってみれば・・・
Be-net

2019/05/16 03:10

複数の方からご意見をいただきありがとうございます >>ttyp03 自分は大学1年生で学科は数学科です、数学に加え必修でCを取らされます、低級言語はいずれ習得しようとは考えておりますが、Rubyと平行して学習すると逆向抑制が起こりうるかも判断したのと、数学の方が単位の配分が大きいためタスクの優先順位を下げました それと感情的な煽りと論理的な破綻がやや散見されます >> C言語の学習しているんですよね?違うのかな?   Rubyを修得したいのにC言語の学校に行ってるのかな?   まあそれは置いといて、質問の最後の一文がなければ普通の質問として成立していたので残念ですね。 自分は構いませんが他の回答者のみなさんが不快になるような言動は慎んだ方がよろしいかと思います それとRubyの習得は独学を考えています、学校で習得する予定なんて一言も申し上げておりません どこの発言から推測したのでしょうか?? "それと課題は自分で解決するものだ"という前時代的な考え方の論拠も示されていませんね、おそらくこの発言をしたのは"学びを深めるためにサボるな"という意図があったと推察されますが、学びの深化を目的にするために私がコンバートという手段を選んだ訳ですから特に問題はないはずです それと今あなたは宿題代行サービスを経営して生計を立てている人たち人生を全否定したのでその事に対する謝罪もお願いいたします このくらいでしょうかね、ここからは邪推ですが次は恐らく自分の文章の書き方を倫理的に間違っている、とても不快だ、友達がいなさそうだの否定してきそうですね笑 とはいえ貴重なご意見ありがとうございました、今後の学習に役立てます(- -)
Be-net

2019/05/16 03:14

>>cateye ご意見ありがとうございます、自分は「Rubyで書いたプログラムをCにコンバートするプログラム」がオープンソースされている前提で質問をさせていただきました そこの無知が自分の至らない点であった事は謝罪いたします 授業が非効率と判断し、聞いていなかったので改めて自分で文法を学んでみようと思います
Be-net

2019/05/16 03:17

>>Zuishin ご意見ありがとうございます 目的は効率的に単位を取得し、自分のやりたい事に集中するなので課題は提出させてもらおうと思います
Zuishin

2019/05/16 03:28

単位を取得するなど非効率です。 もっと先の目標は無いんですか? そっちを直接狙ってください。
Zuishin

2019/05/16 03:38

あと宿題代行に無料サービスを使うのも非効率です。 有料の方が嫌味も言われないし時間もかからないし目的の物が手に入るので、そちらを使ってください。 エンジニアなら効率を求めるのは当然です。
Be-net

2019/05/16 03:39

>>Zuishin 夏までにRubyで言語共有サービスを作ろうと考えています!! なので今はSinatra勉強中です とてもかっこいいですね笑 そのくらいの勢いで行こうと思います!
Zuishin

2019/05/16 03:42

それはまだ途中でしょう。もっともっと先を見てください。 あなたが最終的に至るところはどこですか?
Be-net

2019/05/16 03:43

>>Zuishin なるほど、貴重なご意見ありがとうございます! 確かにそちらの方が合理的ですね、嫌味を言われていちいち摩耗してるのも馬鹿らしいですし... 面倒な作業の外部委託はエンジニアの基礎の基礎ですよね! もっと効率を追求して日中の生産性をあげようと思います 検索してきます!!
Zuishin

2019/05/16 03:45

あなたは何のために生きていますか? 生きる意味がありますか? それは単なる時間つぶしではありませんか? 時間つぶしでなければ、あなたに何ができますか? それは意味のあることですか?
Be-net

2019/05/16 03:46

>>Zuishin 将来の夢は世界の最先端の科学技術が集まる都市で就職、生活し、機械が人間の暮らしを豊かにしていく様子を見届ける事です!! そのための合理的、現実的な解がエンジニアでしたので今こうして未熟ながらも勉強させていただいております(_ _)(しかし大学四年間で他の道も模索する予定ですが。)
Zuishin

2019/05/16 03:48

それに何の意味がありますか? 見届けるなど非効率です。 もっと先を目指してください。
Be-net

2019/05/16 03:52

>>Zuishin はっじめて言われましたそんな事笑笑 自分の中で今衝撃が走ってます 大体自分が目を輝かせながらこの話をすると周りの人は"目標があって偉いね、すごいね"と褒めるばかりでしたので他の事を要求されるのは初めてです もっと先と言いますと具体的には社会に何が還元出来るかという事でしょうか?
Zuishin

2019/05/16 03:54

それは本当にすごいと思っているのではなく、リップサービスです。 かなり遠回りをしているようですね。 もっと先が何かは自分でみつけてください。 見届けるのがあなたのすべきことですか? 違うでしょう?
Be-net

2019/05/16 03:58

本当に貴重な問いをありがとうございます 同学年の中で比較的目的意識が明確なのでチヤホヤされ過ぎてました... もっと先が何か、人生で深く考える課題ですね、流石にこれは外部依託は出来なそうです... 今一度日常生活の中でも深く意識して考え直してみます...
Zuishin

2019/05/16 04:00

そのことだけに集中してください。学校など行かなくても最終的な目的だけ果たせばいいのですから。
ttyp03

2019/05/16 04:08

なんかすごい長文で罵られたんですが。。。 気に障るようなことでも書きましたっけ? 他の回答者は不快になっているのでしょうか? 一般論を述べただけなのにあなたの持論を後出しされて文句言われてもねえ。
Be-net

2019/05/17 01:59 編集

>>ttyp03 予言通り長文が悪いとか罵っているとか文章の書き方を否定してきましたね笑 あなたの認識する一般論が正しいとは限りませんよ、時代は常に変化するものです、そもそも一般論が正しく、持論が間違いという認識自体恥を欠くのでこれから控えた方がよろしいかと思います 少しでも歴史を学んでいればご存知かとは思うのですが... それと"文句、罵っている"ではなく、"訂正、指摘"です "後出し"ではなく、"意思疎通手段としての返信"です 言葉を拡大解釈し、自分の観念で歪めて相手に非があるように正当化するのも控えた方がよろしいかと思います 私に非があるとおっしゃいたいのであれば明確な論拠の提示をお願い致します
ttyp03

2019/05/17 02:11 編集

なんか君すごいな。 ていうかしれっと質問の最後の一文消してんじゃんw そんなに大量の言葉で自分を正当化しなくていいから、もっと自信もってがんばって。
guest

回答3

0

類似の質問がスタックオーバーフローにありましたので、リンクを貼っておきます。

Convert Ruby to low level languages?
https://stackoverflow.com/questions/3542982/convert-ruby-to-low-level-languages

結論を言ってしまうと「無理」ですね。

そもそも課題でC言語が指定されているということは、「C言語を習得せよ」という意味だと思いますので、自分でやらないといけないと思いますよ。

投稿2019/05/15 07:41

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Be-net

2019/05/15 07:48

そもそも低級言語へのコンバートが不可能なこと自体知りませんでした、どうりで検索しても出てこなかったわけです、貴重な学びありがとうございました(_ _)
guest

0

ベストアンサー

人力

C

1#include <stdio.h> 2 3int main(void) { 4 int num; 5 int height; 6 int weight; 7 double x; 8 9 printf("男なら1を、女ならば2を入力してください"); 10 scanf("%d", &num); 11 printf("身長を入力してください"); 12 scanf("%d", &height); 13 printf("体重を入力してください"); 14 scanf("%d", &weight); 15 16 if (num == 1) { 17 x = (height - 139) * 0.613 + 42.2; 18 } else if (num == 2) { 19 x = (height - 139) * 0.510 + 42.2; 20 } 21 22 printf("肥満度は%f%%です\n", ((weight - x) / x) * 100); 23 24 return 0; 25}

投稿2019/05/15 13:46

編集2019/05/15 13:52
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Be-net

2019/05/16 03:33

動作確認しました!ありがとうございました!!
guest

0

しかし課された課題は最小限の労力で解決に務め、体系的な知識を身につけてから再度課題の理解を深めるべきというのが自分なりの考え方です

壮大なプロジェクトを移植する、あるいはすでによく整備された変換環境がある(Ruby→JavaのJRubyのようなもの)は別として、言語間変換はそれ自体にかなりの労力が発生します

また、機械的な変換を行えたとしても、(TypeScript→JavaScriptのように、変換前提で作られている言語なら話は別ですが)ランタイムルーチンなどがついてきて、手書きしたコードとは似ても似つかない、課題として提出するには全くふさわしくないコードが出来上がることと思います。

ということで、多くの場合に「言語を超えてコードを変換する」というのは最後の手段に近いものです。

投稿2019/05/15 07:50

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/05/15 07:54

昔、Facebookが「PHPをC++に変換する」ツールを作っていたのですが、インストールは大変だし、変換後のコードもものすごい分量になるしと、相当に扱いづらいものだったとのことです。 http://d.hatena.ne.jp/rti7743/20111225/1324817155
Be-net

2019/05/16 03:19

なるほど、言語間変換にそこまでの労力を要する事自体知りませんでした! 貴重な学びありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問