C/C++の宿題片付けます 151代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/07/20(水) 00:33:39.96【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【回答者へ】
・◆QZaw55cn4cは書き込み禁止。トリップを隠しても書き込み禁止です。
0002では質問どーぞ
2011/07/20(水) 00:34:27.37[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 150代目
http://hibari.2ch.net/test/read.cgi/tech/1308749241/
0003デフォルトの名無しさん
2011/07/20(水) 01:10:43.760004デフォルトの名無しさん
2011/07/20(水) 01:27:19.52[2] 問題文(含コード&リンク):入力された特定の名前だけすべて削除する関数 void del_order(ORDER *node, char *name) を線形リストを用いて作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: 今週末15:00~
おねがいします
0006デフォルトの名無しさん
2011/07/20(水) 07:53:32.65ローカルルールを守れ。クズ。
>>1
> 【回答者へ】
> ・◆QZaw55cn4cは書き込み禁止。トリップを隠しても書き込み禁止です。
0007デフォルトの名無しさん
2011/07/20(水) 08:39:33.76> void del_order_by_name(ORDER **node, char *name)
> ではなく、
> void del_order_by_name(ORDER *node, char *name)
> としたいんですが、アドバイスをおねがいします
http://codepad.org/vcf5pd5h オレは一応とめたからな。
前スレに貼られたhttp://codepad.org/imsXD8tDはうんこが書いたバグ入りコードだから、
落第したくないなら使わない方が良い。
0008デフォルトの名無しさん
2011/07/20(水) 09:26:52.31> floatだけじゃなくて、doubleも使ったことが無いんだろ。ww
技術計算を整数値だけで行う事が可能なら凄い技術だと思うよw
0009デフォルトの名無しさん
2011/07/20(水) 09:38:21.650010デフォルトの名無しさん
2011/07/20(水) 09:49:34.33円の面積求めて
技術計算10年やってる 霧
って言ってるんだね。そりゃすげー。ww
0011デフォルトの名無しさん
2011/07/20(水) 10:48:46.48出来れば以下のソースを基に関数を作って簡略化したソースを作っていただけませんか?
宜しくお願いします。
http://codepad.org/qblj0aNR
0012デフォルトの名無しさん
2011/07/20(水) 11:18:20.33http://ideone.com/Ki9Ag
極力いじらずに、酷いコピペで処理してるswitchのとこだけ関数化しておいた
0013デフォルトの名無しさん
2011/07/20(水) 12:07:09.72涙拭けよ。顔真っ赤だぞw
0014デフォルトの名無しさん
2011/07/20(水) 12:17:51.60floatを一度も使ったことが無い技術計算PG www
これを恥ずかしげもなく告白できる事が低レベルの証明。あー、哀れ。
0015デフォルトの名無しさん
2011/07/20(水) 12:21:24.17http://ideone.com/Ki9Ag
を基に2以上10以下の項の四則演算の出来るプログラムを教えていただけますか?
ずうずうしくて本当に申し訳ありません。
0016デフォルトの名無しさん
2011/07/20(水) 15:05:14.34技術計算で float を使わない理由は算術関数のインターフェイスが double であるって事が大きいんだ
一部の処理系では tanf() の様な float系関数も用意されているけど、可搬性を考えると使うべきではない
もし、float を使うなら以下の二つの理由が考えられるだろう
・ファーム等で算術関数が float 系しか用意されていない環境での開発
そんな環境には double は存在しないかも知れないけどね
・メモリ消費を意識しなければならないくらい膨大なデータを扱う処理または貧弱な環境
私はEWSやPC上での開発経験しかないし、膨大なデータを扱うような業務(地球シミュレータとか?)の
開発に携わった事がないから float を使った事はない
君がもし float を使った開発経験を持つなら、どういう業務か教えて欲しい
001716
2011/07/20(水) 15:10:20.16float a, b;
a = (float)tan( (double)b );
と書くと『有効精度が失われます』みたいな warning が出るから
warning が出るだけなら問題は無いんだけど、大量に出る問題が無い warning の中に
問題がある warning (整数の型によるオーバーフロー等)が埋もれるのが怖いんだよね
0018デフォルトの名無しさん
2011/07/20(水) 15:49:53.24http://codepad.org/JJE3ZWnw
[3] 環境 OS:Windows gcc
[4] 期限:7月21日
[5] その他の制限: 特になし
0019デフォルトの名無しさん
2011/07/20(水) 15:52:14.36リスト構造体のやり方がまるで分からないので説明してくださると嬉しいです
0020デフォルトの名無しさん
2011/07/20(水) 16:22:50.16演算子は(+,-,*,/)だけとする。
例:式を入力してください
式:1+1*8/4*8+6/3*2+1 enterkey
答え:22
出来ればhttp://ideone.com/Ki9Ag を基に作成して頂けますか?
上記のソースは3項だけしか出来ません。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2011年07月21日09:00まで
[5] その他の制限: 処理は基本的にif、else if,else文、switch文、for文を使って頂けますか?
あと、文字入力はscanfでお願いします。宜しくお願いします。
0021デフォルトの名無しさん
2011/07/20(水) 16:26:17.01>>20
>>11,12,15
0023デフォルトの名無しさん
2011/07/20(水) 17:05:45.61リスト構造体のnextに次のデータのポインタ突っ込め
ってお前自分で書いてるんじゃん
いきなり5-1からはじめてるけどほかになんか前提があるんじゃないのか?
0024デフォルトの名無しさん
2011/07/20(水) 17:17:52.51前提は他にありません。このまま課題がでました
0025デフォルトの名無しさん
2011/07/20(水) 17:40:37.250027デフォルトの名無しさん
2011/07/20(水) 19:15:05.43http://codepad.org/1Qg8DRVA
0028デフォルトの名無しさん
2011/07/20(水) 19:45:13.39実行結果:数え始める西暦を入力してください 1967,8,7
数え終える西暦を入力してください 2009,6,12
1967,8,7から2009,6,12までの日数は15285日です
ベース
#include <stdio.h>
int uruu(int y);
int monthday(int y, int m);
int main(){
int year_a, month_a, day_a;
int year_b, month_b, day_b;
int days;
int i;
days = 0;
printf("日数計算プログラム\n");
printf("数え始める西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_a, &month_a, &day_a);
printf("終わりの西暦年月日を入力してください\n");
scanf("%d,%d,%d",&year_b, &month_b, &day_b);
ここに処理が入る
printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n",year_a, month_a, day_a, year_b, month_b, day_b, days);
return 0;}
int uruu(int y){
int ret;
ここに処理が入る
return ret;
}
int monthday(int y, int m){
int d;
ここに処理が入る
return d;
}
0029デフォルトの名無しさん
2011/07/20(水) 20:51:49.79http://codepad.org/ENQhWHkB
[3] 環境 OS:Windows
gcc
C言語
[4] 期限:7月21日
[5] その他の制限: 特になし
訂正させていただきました。それぞれの問題で/***プログラムをここに書くとする***/
の部分に複数行いれて問題に合ったプログラムにします。
リンク先のプログラムは25〜39行目で図の通りに動くと仮定してます。
0030デフォルトの名無しさん
2011/07/20(水) 20:51:52.420031デフォルトの名無しさん
2011/07/20(水) 21:07:13.64批判するだけしてプログラム作らないとかウ●コと同じだぞ
0032デフォルトの名無しさん
2011/07/20(水) 21:07:59.240033デフォルトの名無しさん
2011/07/20(水) 21:26:05.49ローカルルールを守れ。クズ。
>>1
> 【回答者へ】
> ・◆QZaw55cn4cは書き込み禁止。トリップを隠しても書き込み禁止です。
>>31
>>7に質問者の要望通りのインターフェースで、正しく動くの張っただろ。
http://codepad.org/vcf5pd5h
0034デフォルトの名無しさん
2011/07/20(水) 21:56:33.01C99ではfloat, double, long doubleな関数が三つ組で用意されてるけど、そうかC99は可搬性ないのか。
使うべきじゃないのか。
それじゃ、使うべきは、C90とかですか(float関数が無い事は知らないけど)? 20年以上前の規格ですな。
いやー、さすが数値計算歴10年のベテラン。www
>>17
> a = (float)tan( (double)b );
うわー、ヘボPGが得意なキャストfloodingにそっくりなのは気のせいでしょうか?
まさかね、数値計算歴10年のベテランがキャストfloodingなんか… まさかね。
0035デフォルトの名無しさん
2011/07/20(水) 22:11:41.450036""
2011/07/20(水) 22:28:07.66[2] 問題文(含コード&リンク):
#include <stdio.h>
/* 配列arrayの要素数 */
#define ELENUM(array) (sizeof(array) / sizeof((array)[0]))
#define SIZE_DATA (10) /* データ数 */
struct Address_data{
char name[81];
char phone[20];
int age;
};
0037""
2011/07/20(水) 22:28:28.04{
struct Address_data data[SIZE_DATA], *p = data;
printf("Input end = Ctrl + D\n");
/* 配列初期化(入力プロンプトより前に置くべき?) */
for (p = data; p - data < ELENUM(data); p++) {
p->age = -1;
}
/* 入力処理 */
for (p = data; p - data < ELENUM(data); p++) {
printf("[%d]name phone age = ", p - data);
if (scanf("%s %s %d", p->name, p->phone, &p->age) != 3) {
break;
}
}
putchar('\n');
/* 表示 */
for (p = data; p->age >= 0; p++) {
printf("%s\t(%d)\t[%s]\n", p->name, p->age, p->phone);
}
return 0;
}
表示を行う際に、年齢順に表示するようにしたい。配列の並び替えを行なって表示するようにプログラムを拡張しなさい
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:金曜日まで
0038デフォルトの名無しさん
2011/07/20(水) 22:30:55.81それ昨晩から気付いてたけど敢えて突っ込まないでおいた
0039デフォルトの名無しさん
2011/07/20(水) 22:30:58.03ほっといてやれよ、どうみても引っ込みつかなくなってるだけだろ。
0040デフォルトの名無しさん
2011/07/20(水) 22:33:51.89低レベル過ぎる。10年修行してきなさい。
0041デフォルトの名無しさん
2011/07/20(水) 22:58:12.75はい、ご指導ありがとうございました。
0042デフォルトの名無しさん
2011/07/20(水) 22:59:56.990043デフォルトの名無しさん
2011/07/20(水) 23:02:31.72> C99ではfloat, double, long doubleな関数が三つ組で用意されてるけど....
規格について始めると面倒な人が出てきそうだから触れないけど、float系が無い処理系は有るよ
規格うんぬん以前に必ず存在する double系を使うのが普通の考えだよ(先に書いた様に特殊な環境なら別)
キャストしなかったらどうやって書くの?
そもそも double 系の関数を float で処理するっていう『ヘボ』な書き方を示しただけなんだけど
5-1〜5-4
http://codepad.org/eQKEuAlc
0045デフォルトの名無しさん
2011/07/20(水) 23:14:54.96ごめんなさい、まるで分からないです。
自分では
http://codepad.org/lNU2hw2m
みたいに考えていたので,下手な書き方だとは思いますが、解説していただいてると嬉しいです
0046デフォルトの名無しさん
2011/07/20(水) 23:23:59.11http://codepad.org/7UVONvby
次は>>1のテンプレ使ってね。
期日が書いてないと誰もしないかも
0047デフォルトの名無しさん
2011/07/20(水) 23:24:01.19どこの学校?
0048デフォルトの名無しさん
2011/07/20(水) 23:24:31.32o戻り値の型
0049デフォルトの名無しさん
2011/07/20(水) 23:32:15.57先生と学校はいえませんが、大学1年生です。最初はint main~return 0 をつかったり
戻り値をつかったりしてたのですが、リスト構造体の項目に入ってからは一切使わなくなりました。
ですが、課題の性質上、戻り値無しのやり方でやらないと点数はもらえなかったりします。
加えてその先生が課題と資料を出すだけ出して授業を終わる人です
0050デフォルトの名無しさん
2011/07/20(水) 23:42:23.49> 規格について始めると面倒な人が出てきそうだから触れないけど、float系が無い処理系は有るよ
具体的にどれだよ。w
> 規格うんぬん以前に必ず存在する double系を使うのが普通の考えだよ(先に書いた様に特殊な環境なら別)
それはお前が経験した狭い世界の「普通の考え」。
> キャストしなかったらどうやって書くの?
普通はfloat使うから
a = tanf(b);
どうしてもdoubleな関数使う場合でも
a = tan(b);
キャストは不要。
0051デフォルトの名無しさん
2011/07/20(水) 23:42:28.88[2] 問題文(含コード&リンク):片方向リストの最後に要素を追加するプログラムをさくせいしなさい。
ただし連結リストの最後の要素をさすポインタを持っている時と持ってないときについて作成すること。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限:http://codepad.org/EhgsNjq1
一応つくってみたですが、問題自体の意味がイマイチわかりません。
これはどちらのプログラムになるのでしょうか。
また、このプログラムの計算量と実行効率について比較するにはどのようにすればいいか教えていただければありがたいです。
よろしくお願いします。
0052デフォルトの名無しさん
2011/07/21(木) 00:00:05.84前者の 最後の要素をさすポインタを持っている時 に該当
後者は head のみを保持した前提で末尾追加を記述するのを期待してるっぽい
リスト追加の際、毎回末尾を探す
p=head p->next が NULL になるまで p を送っていく
ってことをやって見つけた末尾 p から追加分を連結すると
0053デフォルトの名無しさん
2011/07/21(木) 00:01:04.75> 具体的にどれだよ
手元に有った bcc++ Ver.5.5 (私の回答専用コンパイラ)には無いみたいだよ
0054デフォルトの名無しさん
2011/07/21(木) 00:03:50.73それより君が float を使わざる得なかったプロジェクトについて教えてはくれないか?
資源が乏しかった大昔なら『敢えて double を使う理由』をレビューで説明する必要が有ったと思うんだけど、
メモリもディスクも大容量の現在では『敢えて float を使い理由』を説明する必要が有ると思うんだ
http://hibari.2ch.net/test/read.cgi/tech/1308749241/478 ttp://codepad.org/qL7fTlqB
http://hibari.2ch.net/test/read.cgi/tech/1308749241/499 http://codepad.org/JrlFCyW2
>>50
>キャストは不要。
>>17
>『有効精度が失われます』みたいな warning が出るから
>warning が出るだけなら問題は無いんだけど、大量に出る問題が無い warning の中に
>問題がある warning (整数の型によるオーバーフロー等)が埋もれるのが怖いんだよね
float でインプリメントする環境があることは知っていますが(cuda, ati stream はさわってみたいなあ)、
http://hibari.2ch.net/test/read.cgi/tech/1308749241/906 で float を使う理由がない、というか
http://hibari.2ch.net/test/read.cgi/tech/1308749241/957
>floatを使うのは癖だ。
馬鹿としかいいようがない。
0056デフォルトの名無しさん
2011/07/21(木) 00:13:58.24割と愚直なコードにしてみた。
ttp://codepad.org/rvgcNi3K
>>44
宿題スレでもありますし、少し丁寧にコメントをいれたほうが
良いと思います。一行の箇条書きで構わないので、
関数のヘッダコメント位はあった方がありがたいです。
005756
2011/07/21(木) 00:22:26.62>課題の性質上、戻り値無しのやり方でやらないと点数はもらえなかったりします。
戻り値の型を省略したら暗黙にintになるけど、褒められたコーディングスタイルとは思えない。
課題に関しては無関係な部分と思うけど。int mainにしたら点数もらえないっていうのなら、焦点がぼやけている。
>>56は割と愚直なコードです。
もし説明が欲しいなら、その点を具体的に言ってください。
一応先に説明しておくと、
リストのノード連結操作が主題になっていると思いましたので、
ノードは静的に確保しています。
「静的に確保」っていうのは、mallocを使わないで,
staticでノードを宣言している事です。
0058デフォルトの名無しさん
2011/07/21(木) 00:23:37.66お前の臭いコメントなんていらねーよ
ばっかじゃないの
0059デフォルトの名無しさん
2011/07/21(木) 00:27:34.35俺もそう思います
>>44は馬鹿過ぎると思います
自分のテクに酔っていてこんなの提出したらまず質問攻めに遭って
答えられなくて単位を落とす事になりかねません
0060デフォルトの名無しさん
2011/07/21(木) 00:31:23.18うわぁ、教授「こいつら回答一緒だな・・・」フラグ・・・
まぁありがとうございます...
0061デフォルトの名無しさん
2011/07/21(木) 00:33:07.48うぜー
善意でやってるつもりかよ
0062デフォルトの名無しさん
2011/07/21(木) 00:36:28.780063デフォルトの名無しさん
2011/07/21(木) 00:44:11.97これはQ本人か、はたまたQ化して人生終わっちゃった奴か・・・
0064デフォルトの名無しさん
2011/07/21(木) 00:48:17.11また宣伝してるつもりかクズ
0065デフォルトの名無しさん
2011/07/21(木) 05:38:42.96[2] 問題文(含コード&リンク):
世代数 平均適応度 最大適応度というフォーマットで、ooo.dat というファイル名で保存すれば、gnuplot で
plot ”ooo.dat”using 1:2 w l, ”result.dat”using 1:3 w l
とすることで、グラフが得られる。
グラフの例とプログラムと問題文は以下のURLです。
http://ux.getuploader.com/qwertykey/
パスはqqq3538です。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:[2011年7月22日まで]
[5] その他の制限: プログラムに詳しく書かれているので遺伝アルゴリズムに知識がなくてもできると思います。
前板で回答がなかったのでもう一度投稿しました。
よろしくお願いします。
0066デフォルトの名無しさん
2011/07/21(木) 10:28:51.85お前がdoubleを使うべきとしている根拠は「float系のライブラリが無い」の一点だけなんだから、先に
> float系が無い処理系は有るよ
これを明示しろよ。お前が>>53で10年間やってる技術計算が2ch宿題スレでの回答者というのなら説明不要だが。
0067デフォルトの名無しさん
2011/07/21(木) 12:22:19.48http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.4.html
0068デフォルトの名無しさん
2011/07/21(木) 13:42:28.26> float系が無い処理系は有るよ
これを問うてるんだが。池沼?
0070デフォルトの名無しさん
2011/07/21(木) 14:22:46.87[2] 問題文(含コード&リンク):
1〜N(N >= 1)までの、1ずつ増加する等差数列が与えられる、この時のNの階乗通り存在する組み合わせをすべて表示せよ
例)
Nの値: 3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
※なお、例のような表示順序で無くても良い、すべて表示されているならその表示順序は問わない。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今週末 2011年7月22日 13:00 まで
[5] その他の制限: 再帰かループどちらかの方法で解くこと
0071デフォルトの名無しさん
2011/07/21(木) 14:25:22.50ところで、自虐ネタ? w
> 第4章 キャストが好き
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.2.html
> リスト4个ア1に元のプログラム(に近いもの)を示します。とにかく「キャスト」が異常に多い のが目立ちますね。
0072デフォルトの名無しさん
2011/07/21(木) 15:45:37.55意味がよく判らないな
少なくとも『手元に有った bcc には float 系は無いよ』っていうのを読んだでしょ、示した事にならないのかな?
私が使ってきた処理系は主に Solaris 系だけど業務で float 系なんて使った事が無いから、
そこにそれが存在したか否かは知らないよ
0073デフォルトの名無しさん
2011/07/21(木) 16:01:07.54上記のプログラムを実行すると8/3*3=6となります。
このソースを正常に8/3*3=8となるようにif文で前の演算子に'÷'次の演算子に'*'が来た時に
乗算を優先的に行うようにプログラムを付け加えていただけますか?
あえてint型で型を宣言していますので、そこは変更しないで下さい。
宜しくお願いします。
0074デフォルトの名無しさん
2011/07/21(木) 16:04:44.87> 少なくとも『手元に有った bcc には float 系は無いよ』っていうのを読んだでしょ、示した事にならないのかな?
おまえは、10年間やっている技術計算での仕事でfloatを使わない理由として、
floatな関数は可搬性が悪いという事をあげたんだろ。
そして、その処理系を問うと2chの宿題スレ専用のbcc32だと答える。
おまえの「技術計算経験10年」とは2chの宿題スレで回答の事か? ww
> 私が使ってきた処理系は主に Solaris 系だけど業務で float 系なんて使った事が無いから、
Solarisの純正コンパイラにはある。
0075デフォルトの名無しさん
2011/07/21(木) 16:08:32.08int型で8/3*3を計算したら6になるのが「正常」でしょうよ。
0076デフォルトの名無しさん
2011/07/21(木) 16:13:55.528*3/3に並べ替えして計算したいってことだろ
テンプレ無視だし俺はやらんけど
0077デフォルトの名無しさん
2011/07/21(木) 16:16:02.66[2] 問題文:http://codepad.org/kRpsBNJPを参考にして
累計
50 49 48 47 46 240
45 44 43 42 41 455
(長すぎて書き込めないため中略)
累計 275 540 795 1040 1275
↑(1から50までの整数を5つずつ50から表示して行きます。)
�@上のように横と縦の累計を計算して表示するプログラムを作成せよ。
ただし配列は使ってはならない。。
�A次に一次元配列を用いて上図のように縦と横の類計を計算して
表すプログラムを作成せよ。
�B次に縦と横の累計の計算をする部分を関数を使って
表すプログラムを作成せよ。
[3] [3.1] OS:windows7[3.2] visualstdio[3.3] 言語: C言語
[4] 2011年7月23日の11時59分まで
問題が多くて申し訳ありません。どうかよろしくお願いいたします。
0078デフォルトの名無しさん
2011/07/21(木) 16:46:42.37まず、bcc が業務では使えないコンパイラであるという認識をしているので有ればそれは失礼だろう
あくまで私の手元に有る float 系を持たないコンパイラとして例示したに過ぎないから
現在の Solaris には有ってもおかしくない、C99の規格に float 系が定義されているなら当然だろう
しかし、BSD4.3あたりでは?
これは私が最初に Sun の業務を行った頃のOSだが今となっては確認するのは困難だろう
私は可搬性に関して触れたが float 系が無い処理系を業務で扱ったと断言した覚えは無い
だって float を使わないんだから、そんな事はどうでも良い話だ
float 系が無い処理系で業務を行う可能性が有るか否かは可搬性を考慮する際には関係ないんだよ
絶対に存在する double 系で構築すればどんな環境にでも対応できる(先に書いた様に例外は有るかもしれないが)
敢えて float を使うメリットが何も無いのだから double で統一すべきと教育されたし、それを遵守してきた
君にどんな業務で float を使ったかを問うたのは float を使うメリット、又は double を使えない制約に
どんなモノが有るのか知りたかったからだ
どうやら君は脳内プログラマらしいからこれ以上の追及は無意味だろう
0079デフォルトの名無しさん
2011/07/21(木) 16:55:12.350080デフォルトの名無しさん
2011/07/21(木) 17:07:19.64[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): http://codepad.org/n47BkpXa
上記のプログラムを実行すると8/3*3=6となります。
このソースを正常に8/3*3=8となるようにif文で前の演算子に'÷'次の演算子に'*'が来た時に
乗算を優先的に行うようにプログラムを付け加えていただけますか?
あえてint型で型を宣言していますので、そこは変更しないで下さい。
宜しくお願いします。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: [2011年07月22日09:00まで]
[5] その他の制限: 変数は変えない。関数は出来れば増やさない。
0081デフォルトの名無しさん
2011/07/21(木) 17:09:53.80> 敢えて float を使うメリットが何も無いのだから double で統一すべきと教育されたし、それを遵守してきた
つまり、盲目的に押し付けられた作法を守ってきただけだね。その作法の根拠が藤原本?
藤原本は藤原自身が書いているように
> プログラミング言語の本は、コンピュータ関連の本の中では寿命の長い方 ですが、
> それでも出版されてから5年程度が寿命です。いつ出版された本かは 必ず確認して買いましょう。
http://www.pro.or.jp/~fuji/mybooks/cdiag/appendix.b.html
> float を使うメリット
省メモリ、高速
省メモリは言うまでもない。
高速であることのデータは(業務上の)出せないけど、公開されてるデータ(Fortranの倍精度、単精度比較)
http://www.softek.co.jp/SPG/Pgi/TIPS/public/general/multicore-para.html
doubleが速いは時代遅れ。
0082デフォルトの名無しさん
2011/07/21(木) 17:53:17.49大昔に DreamCast を弄った経験が有るんだけど、普通の算術関数が float 系だった様な気もする
先に述べた通り、特殊な環境ならありえるだろうね
>>81
藤原本が何かは知らない
最初にこの教育を受けたのは大学の研究室
float が速いってのは一般的に認知されてるの?環境依存ならありそうだけど
省メモリに関しては前から言っている様に現在ではメリットとならないよ
一度だけ省メモリの観点で float を使った事を思い出した
但し、環境が MS-DOS でしかも言語は N88-BASIC だ
大きな表計算みたいなプログラムだったんだけど、double を使うと行が稼げないから敢えて float を使った
EWSやWindows環境で省メモリなんて考慮しなければならない業務に当たった経験は無い
君は省メモリの観点で float を使うような仕事をしてるの?
0083デフォルトの名無しさん
2011/07/21(木) 18:24:15.95どんな用途でも「特殊」の一言で切り捨てられる気がする
0084デフォルトの名無しさん
2011/07/21(木) 18:24:45.82floatって今時C#の座標系位にしか使わなくないか?
doubleと比べると有効桁数が少なすぎて積み残し誤差がハンパないぞ
0085デフォルトの名無しさん
2011/07/21(木) 18:28:03.33> 先に述べた通り、特殊な環境ならありえるだろうね
SSEを特殊な環境と主張するつもりかい? floatならdoubleの倍突っ込める。
>藤原本が何かは知らない
>>67は別人? 別人格?
> float が速いってのは一般的に認知されてるの?環境依存ならありそうだけど
さあね、でも、10年前?にsparcが抜き去られた時からは「doubleが速い」は迷信。
> 省メモリに関しては前から言っている様に現在ではメリットとならないよ
それはキミがそういう領域しか扱ってないから。無尽蔵なメモリ使えるなら疎行列扱うテクニックとかいらないだろ。
技術計算やってると言ってて「疎行列」聞いたことないとかいうなよ。
> 君は省メモリの観点で float を使うような仕事をしてるの?
1000万×1000万のマトリックスが相手だよ。
0086デフォルトの名無しさん
2011/07/21(木) 18:28:59.57GPUを使って計算する方法が、
汎用的かつ一般的で、
環境に依存せずに動くなら、
特殊でないと言ってもいいんじゃない?
0087デフォルトの名無しさん
2011/07/21(木) 18:35:01.600088デフォルトの名無しさん
2011/07/21(木) 18:36:05.75疎行列くらい知っとるわアホ
0089デフォルトの名無しさん
2011/07/21(木) 18:40:08.370090デフォルトの名無しさん
2011/07/21(木) 18:40:32.29なら、↓こんな意味不明な反論すんなよ。
> 省メモリに関しては前から言っている様に現在ではメリットとならないよ
0091デフォルトの名無しさん
2011/07/21(木) 18:43:45.79おまえSSEとか使わんのか
あとキャッシュメモリ考えたことないだろ
で、なんで宿題と関係ないことでスレ荒らすん?
0092デフォルトの名無しさん
2011/07/21(木) 18:45:22.72一般的ならそりゃ特殊じゃないだろ
言葉くらいちゃんと使おうぜ
(何の話題か知らんけど)
0093デフォルトの名無しさん
2011/07/21(木) 18:47:23.12そのリンク先は、あきらかに SSE/CUDA/GPGPU 等の float をターゲットにしたハードウェア相手にコードを記述する場合の話。
CPU/FPU 相手にプログラムを組むのであれば float/double に差はない。
で、発端となった、http://hibari.2ch.net/test/read.cgi/tech/1308749241/906 は float をターゲットにしたハードウェア相手のコードなのか?
float の演算が多量に存在するのか?現状のコンパイラははこのコードに対して SSE命令を生成するのか?
このコードを float で書くメリットはなにか?
0094デフォルトの名無しさん
2011/07/21(木) 18:47:49.55私の認識が古いのかもしれないね、コンピュータグラフィックスはほとんどやった事が無いので
先に書いた DreamCast はバイトだ
>>85
> SSEを特殊な環境と主張するつもりかい? floatならdoubleの倍突っ込める
上と同じレベルの話だよ、認識の違いだ
標準的な算術関数が double 系であるという事に間違いは無いだろう
float 系が主体である処理系はこの考えに基づくと『特殊』と考えても良いんじゃないのか?
将来は逆転するかも知れないが、私の世代を含めたプログラマ全体の平均を取れば誤った認識とは思わない
>別人? 別人格?
>「doubleが速い」は迷信。
別人だよ、私は double が速いなんて主張はしていない
敢えて float を使うのに速さを主張するのはいかがなものかと言っている
>それはキミがそういう領域しか扱ってないから
1000万x1000万のマトリックス?具体的な対象については教えてくれないのw
0095デフォルトの名無しさん
2011/07/21(木) 18:51:12.40おい、うんこ。バグなおせよ。www
http://codepad.org/imsXD8tD
0096デフォルトの名無しさん
2011/07/21(木) 18:51:16.12そりゃGPUを搭載しててDirectXやOpenGLなどが動くとかある程度環境に依存するけど
わりと一般的な構成じゃね?
0097デフォルトの名無しさん
2011/07/21(木) 18:54:44.16> そのリンク先は、あきらかに SSE/CUDA/GPGPU 等の float をターゲットにしたハードウェア相手にコードを記述する場合の話。
実数計算の世界では今はこれがスタンダード。
> このコードを float で書くメリットはなにか?
doubleにするメリットは何もないな。
0098デフォルトの名無しさん
2011/07/21(木) 18:57:44.49> 別人だよ、私は double が速いなんて主張はしていない
それではデフォルトがdoubleであるべきとする根拠はなんだよ。
「先輩に教えられたから?」www
ライブラリ説→否定された
メモリ使用量→完全に負け
速度→負け
0099デフォルトの名無しさん
2011/07/21(木) 18:58:04.57なんで特殊なマシン扱いするのか分からない
0100デフォルトの名無しさん
2011/07/21(木) 18:59:52.72gpgpu は汎用的でもなければ一般的でもない。
cuda は nvidia の提供する拡張されたコンパイラしか対応しない(ライブラリをリンクする程度の拡張ではない)。
ati stream も c/c++ベースの拡張言語 brook+ を使う。
C で GPGPU アプリケーションは記述できないゆえ、少なくともこのスレ的には、汎用的でも一般的でもない。
0101デフォルトの名無しさん
2011/07/21(木) 19:00:08.47> 標準的な算術関数が double 系であるという事に間違いは無いだろう
根拠も示せず盲信するジジイ。もしくはそういうジジイに洗脳されているメクラ。
■ このスレッドは過去ログ倉庫に格納されています