A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
「出力する」関数を別に作れば, swap する必要はないと思うんだ. 例えば
#include <stdio.h>
double fabs(double);
void displayMessage(double x, double y)
{
printf("%f/%f=%f\n", x, y, x/y);
}
int main()
{
double a, b;
printf("Input n1:"); fflush(stdout); scanf("%lf", &a);
printf("Input n2:"); fflush(stdout); scanf("%lf", &b);
if (fabs(a) > fabs(b)) {
displayMessage(a, b);
} else {
displayMessage(b, a);
}
}
でいいわけだし.
No.4
- 回答日時:
> くだらないことを言ってすみませんでした。
分かればいいや。
あと、swapなんだけど、これって#defineマクロのネタとしては良く取り上げられるネタなんだけど・・・・・。みんな好きだな、このネタは。
そして確かに使い勝手はある。ただし、殆どのケースから言うと「使わない方がいい」。
Pythonなんかの言語だと、
>>> a , b = 0, 1
>>> a
0
>>> b
1
>>> a, b = b, a
>>> a
1
>>> b
0
>>>
なんか簡単にスワップ出来て「おおーッ」とは思うんだけどね。
ただ、こういうのは基本、最近では「破壊的変更」と言う。
出来れば避けた方が良い動作だ。
変数の中身が簡単に書き換えられると、思わぬバグを招く場合がある。
例えば、今、変数aとbがあって、条件によってa/bかb/aにしたい、とする。
swapでaとbの「中身を取り替えないとならない」ってのは「思い込み」なんだよ。これはどっちかっつーと「危険へと誘導する」考え方、なんだ。
どうせなら例えば
double array[2];
みたいにして配列を用意して
array[0] / array[1];
と
array[1] / array[0];
と計算式を二つ用意した方が「安全」なんだ。
そうすればデータ型を不必要に「書き換え」する必要がなくなる。
なかなかCじゃ難しいんだけど、「なるたけデータは変更しない」方針でプログラミングしていった方が見通しがいいし、より安全なプログラムになる可能性が高い。
そういう事をキチンと先生が教えなきゃダメなんだけどね。
No.3
- 回答日時:
> 可能であればincludeはstdio.hだけで
そう言うくだらない事を要求しない事。
プロだエキスパートだ、って徘徊する場所で、どうして
「素人がたどたどしく書いたようなプログラムを書いてくれ」
って言えるのか。
恥を知れ、って事だな。
プロのピアニストに
「ピアノをやったことがない幼稚園児が弾くように弾いて下さい」
とか頼めるの?
マトモに考えろ。
プログラミングするとか以前の「人間としての常識の」範疇の話だ。
> swapとabs関数を別に用意してmain関数で呼び出すという方法だとありがたいです。
その辺は自分で苦労しろ。
コードを改造する事くらいやってみろ。
出来なきゃ諦めろ。
出力が想定するプログラムは以下のようになる、と予想はされる。
あとは知らん。自分で「自分が思うようにプログラムを改造しろ」。
それが無理なら誰か「自分の意のままに書いてくれる」プロのプログラマを探して、「お金を払って」解決してもらう事だ。
それがフツーで当たり前なんだよ。
人の善意を当たり前だ、と思うな。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
int main(void) {
double n[2];
char s[11];
for (int i = 0; i < 2; i++) {
printf("Input n%d: ", i + 1);
scanf("%10s%*[^\n]", s);
getchar();
n[i] = strtof(s, NULL);
}
bool flag = fabs(n[0]) > fabs(n[1]);
printf("%lf / %lf = %lf\n", flag ? n[0] : n[1],
flag ? n[1] : n[0],
flag ? n[0] / n[1] : n[1] / n[0]);
return EXIT_SUCCESS;
}
この回答へのお礼
お礼日時:2021/12/22 00:07
あなたの言うとおりもっと自分で苦労するべきでした。
くだらないことを言ってすみませんでした。
こんなくだらない質問にも丁寧に答えていただきありがとうございました。
No.2
- 回答日時:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char** argv) {
if (argc != 3) {
goto end;
}
double m = strtof(argv[1], NULL);
double n = strtof(argv[2], NULL);
printf("%lf\n", fabs(m) > fabs(n) ? m / n : n / m);
end:
return EXIT_SUCCESS;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
C# 引数の型 自由
-
difftime()について
-
float型とdouble型の変数の違い...
-
listに構造体を格納
-
C++で外積
-
doubleは常に%lfとするべきなのか
-
Cで3乗根を求める方法
-
ニュートン法
-
C言語 関数プロトタイプ宣言の...
-
C言語 入力した数値の平均値の...
-
C言語で
-
インデックスが配列の境界外です.
-
C言語で-23乗を取り扱うには
-
指数形式で入力するには
-
数値を指数部と仮数部に分離したい
-
浮動小数点の定数
-
c言語でDFTのプログラムを作成...
-
doubleの変数にintとintの割り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
c言語で、繰り返し文の中で、0....
-
C 開放してるのにエラー(doubl...
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
C言語の型による処理速度の違い
-
float型とdouble型の変数の違い...
-
int とdoubleの比較
-
関数におけるif文とreturn文に...
-
Cで3乗根を求める方法
-
c言語のコンパイルエラー canno...
-
2次方程式の解を求めるプログ...
-
浮動小数点の定数
-
-1.#IND00と出てしまうのですが...
-
doubleは常に%lfとするべきなのか
-
C言語のpow関数の不具合
-
difftime()について
-
C++で外積
おすすめ情報
可能であればincludeはstdio.hだけで
swapとabs関数を別に用意してmain関数で呼び出すという方法だとありがたいです。
実行例は
Input n1:-18.9
Input n2:12.1
-18.900000/12.100000=-1.561983
となってほしいです。