
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;
}
あなたの言うとおりもっと自分で苦労するべきでした。
くだらないことを言ってすみませんでした。
こんなくだらない質問にも丁寧に答えていただきありがとうございました。
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) EXCELで2つの数値のうち絶対値が大きい方を採択する数式 2 2022/06/21 01:51
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# linux C言語について ./ファイル名 入力値 入力値が表示 という風に実行と入力を同時にしたい 3 2022/10/17 16:57
- 数学 【 数I 2次関数 最大・最小 】 問題:関数y=x²+2x+c (-2≦x≦2)の最大値 が5であ 3 2022/06/19 08:41
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Excel(エクセル) エクセル、日々の集計整理方法。(再送です。) 5 2022/10/02 00:19
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- C言語・C++・C# 絶対ち 5 2022/10/09 17:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
C言語 関数プロトタイプ宣言の...
-
float型とdouble型の変数の違い...
-
浮動小数点数が表示されないん...
-
2自由度減衰振動のルンゲクッタ法
-
至急です! マクロ定義で #defi...
-
C言語の複素数についてです。
-
Cで3乗根を求める方法
-
指数の表示
-
C 開放してるのにエラー(doubl...
-
浮動小数点の誤差のあわせ方
-
c言語でDFTのプログラムを作成...
-
doubleは常に%lfとするべきなのか
-
C言語でポインタを用いた平均,...
-
C言語のプログラムで#include<m...
-
floating point not loadedとは?
-
qsortと動的確保の2次元配列
-
C言語でdouble型の小数点の引き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
float型とdouble型の変数の違い...
-
至急です! マクロ定義で #defi...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C言語の型による処理速度の違い
-
C言語 関数プロトタイプ宣言の...
-
浮動小数点の定数
-
C言語でdouble型の小数点の引き...
-
difftime()について
-
doubleは常に%lfとするべきなのか
-
C#イベント中の戻り値の設定の...
-
c言語で、繰り返し文の中で、0....
-
int とdoubleの比較
-
C言語のプログラムで#include<m...
-
c言語のプログラミングについて...
-
バイナリから実数を取得したい...
-
c言語のコンパイルエラー canno...
-
関数におけるif文とreturn文に...
おすすめ情報
可能であればincludeはstdio.hだけで
swapとabs関数を別に用意してmain関数で呼び出すという方法だとありがたいです。
実行例は
Input n1:-18.9
Input n2:12.1
-18.900000/12.100000=-1.561983
となってほしいです。