1 :
デフォルトの名無しさん :
2011/07/20(水) 00:33:39.96 あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
>>2 以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【回答者へ】
・◆QZaw55cn4cは書き込み禁止。トリップを隠しても書き込み禁止です。
2 :
では質問どーぞ :2011/07/20(水) 00:34:27.37
スレたて乙。ところで、未解決問題あればよろしう。
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):入力された特定の名前だけすべて削除する関数 void del_order(ORDER *node, char *name) を線形リストを用いて作成しなさい [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語:C++ [4] 期限: 今週末15:00~ おねがいします
6 :
デフォルトの名無しさん :2011/07/20(水) 07:53:32.65
>>5 ローカルルールを守れ。クズ。
>>1 > 【回答者へ】
> ・◆QZaw55cn4cは書き込み禁止。トリップを隠しても書き込み禁止です。
前スレ
>>999 > floatだけじゃなくて、doubleも使ったことが無いんだろ。ww
技術計算を整数値だけで行う事が可能なら凄い技術だと思うよw
前スレのどうでもいい話ひきずりすぎだろお前ら
>>8 円の面積求めて
技術計算10年やってる 霧
って言ってるんだね。そりゃすげー。ww
11 :
デフォルトの名無しさん :2011/07/20(水) 10:48:46.48
14 :
デフォルトの名無しさん :2011/07/20(水) 12:17:51.60
> 技術計算コードを10年以上書いてきたけど float を使った事は一度も無いな floatを一度も使ったことが無い技術計算PG www これを恥ずかしげもなく告白できる事が低レベルの証明。あー、哀れ。
15 :
デフォルトの名無しさん :2011/07/20(水) 12:21:24.17
>>14 技術計算で float を使わない理由は算術関数のインターフェイスが double であるって事が大きいんだ
一部の処理系では tanf() の様な float系関数も用意されているけど、可搬性を考えると使うべきではない
もし、float を使うなら以下の二つの理由が考えられるだろう
・ファーム等で算術関数が float 系しか用意されていない環境での開発
そんな環境には double は存在しないかも知れないけどね
・メモリ消費を意識しなければならないくらい膨大なデータを扱う処理または貧弱な環境
私はEWSやPC上での開発経験しかないし、膨大なデータを扱うような業務(地球シミュレータとか?)の
開発に携わった事がないから float を使った事はない
君がもし float を使った開発経験を持つなら、どういう業務か教えて欲しい
17 :
16 :2011/07/20(水) 15:10:20.16
書き忘れたけど、算術関数を用いる時に float を使わない理由は float a, b; a = (float)tan( (double)b ); と書くと『有効精度が失われます』みたいな warning が出るから warning が出るだけなら問題は無いんだけど、大量に出る問題が無い warning の中に 問題がある warning (整数の型によるオーバーフロー等)が埋もれるのが怖いんだよね
18 :
デフォルトの名無しさん :2011/07/20(水) 15:49:53.24
19 :
デフォルトの名無しさん :2011/07/20(水) 15:52:14.36
>>18 です
リスト構造体のやり方がまるで分からないので説明してくださると嬉しいです
20 :
デフォルトの名無しさん :2011/07/20(水) 16:22:50.16
[2] 問題文(含コード&リンク): 2項以上10項以下の計算が可能な電卓を作成せよ。
演算子は(+,-,*,/)だけとする。
例:式を入力してください
式: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でお願いします。宜しくお願いします。
22 :
デフォルトの名無しさん :2011/07/20(水) 16:45:07.32
>>20 >>11 ,12,15
上記は同じ投稿者です。皆様のお力添えを宜しくお願いします。
>>19 リスト構造体のnextに次のデータのポインタ突っ込め
ってお前自分で書いてるんじゃん
いきなり5-1からはじめてるけどほかになんか前提があるんじゃないのか?
24 :
デフォルトの名無しさん :2011/07/20(水) 17:17:52.51
>>23 前提は他にありません。このまま課題がでました
テンプレ埋めないの流行りなん?
27 :
デフォルトの名無しさん :2011/07/20(水) 19:15:05.43
28 :
デフォルトの名無しさん :2011/07/20(水) 19:45:13.39
(1)c言語(2)問題:日数計算プログラムをベースに基ずいて「ここに処理が入る」というところに入力をお願いします 実行結果:数え始める西暦を入力してください 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; }
29 :
デフォルトの名無しさん :2011/07/20(水) 20:51:49.79
[2] 問題文(含コード&リンク):
http://codepad.org/ENQhWHkB [3] 環境 OS:Windows
gcc
C言語
[4] 期限:7月21日
[5] その他の制限: 特になし
訂正させていただきました。それぞれの問題で/***プログラムをここに書くとする***/
の部分に複数行いれて問題に合ったプログラムにします。
リンク先のプログラムは25〜39行目で図の通りに動くと仮定してます。
前スレのfloat厨に吹いた
>>7 がバグ入りなら、誰かバグ無しソート作ってやれよ
批判するだけしてプログラム作らないとかウ●コと同じだぞ
QZのフォローするぐらいならスカトロプレイする方がましだよ
33 :
デフォルトの名無しさん :2011/07/20(水) 21:26:05.49
>>16 C99ではfloat, double, long doubleな関数が三つ組で用意されてるけど、そうかC99は可搬性ないのか。
使うべきじゃないのか。
それじゃ、使うべきは、C90とかですか(float関数が無い事は知らないけど)? 20年以上前の規格ですな。
いやー、さすが数値計算歴10年のベテラン。www
>>17 > a = (float)tan( (double)b );
うわー、ヘボPGが得意なキャストfloodingにそっくりなのは気のせいでしょうか?
まさかね、数値計算歴10年のベテランがキャストfloodingなんか… まさかね。
技術計算技術計算言う割りに精度の低いfloat使うとは
36 :
"" :2011/07/20(水) 22:28:07.66
[1] 授業単元:構造体の配列利用 [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; };
37 :
"" :2011/07/20(水) 22:28:28.04
int main(void) { 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] 期限:金曜日まで
>>35 それ昨晩から気付いてたけど敢えて突っ込まないでおいた
>>35 ほっといてやれよ、どうみても引っ込みつかなくなってるだけだろ。
こういう系は14歳の負けず嫌いの女の子プログラマが一人で騒いでると思うことにしてる。
>>34 > C99ではfloat, double, long doubleな関数が三つ組で用意されてるけど....
規格について始めると面倒な人が出てきそうだから触れないけど、float系が無い処理系は有るよ
規格うんぬん以前に必ず存在する double系を使うのが普通の考えだよ(先に書いた様に特殊な環境なら別)
キャストしなかったらどうやって書くの?
そもそも double 系の関数を float で処理するっていう『ヘボ』な書き方を示しただけなんだけど
45 :
デフォルトの名無しさん :2011/07/20(水) 23:14:54.96
main関数に引数の型書かない記法は先生から教わったの? どこの学校?
x引数の型 o戻り値の型
49 :
デフォルトの名無しさん :2011/07/20(水) 23:32:15.57
>>47 先生と学校はいえませんが、大学1年生です。最初はint main~return 0 をつかったり
戻り値をつかったりしてたのですが、リスト構造体の項目に入ってからは一切使わなくなりました。
ですが、課題の性質上、戻り値無しのやり方でやらないと点数はもらえなかったりします。
加えてその先生が課題と資料を出すだけ出して授業を終わる人です
>>43 > 規格について始めると面倒な人が出てきそうだから触れないけど、float系が無い処理系は有るよ
具体的にどれだよ。w
> 規格うんぬん以前に必ず存在する double系を使うのが普通の考えだよ(先に書いた様に特殊な環境なら別)
それはお前が経験した狭い世界の「普通の考え」。
> キャストしなかったらどうやって書くの?
普通はfloat使うから
a = tanf(b);
どうしてもdoubleな関数使う場合でも
a = tan(b);
キャストは不要。
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):片方向リストの最後に要素を追加するプログラムをさくせいしなさい。
ただし連結リストの最後の要素をさすポインタを持っている時と持ってないときについて作成すること。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限:
http://codepad.org/EhgsNjq1 一応つくってみたですが、問題自体の意味がイマイチわかりません。
これはどちらのプログラムになるのでしょうか。
また、このプログラムの計算量と実行効率について比較するにはどのようにすればいいか教えていただければありがたいです。
よろしくお願いします。
>>51 前者の 最後の要素をさすポインタを持っている時 に該当
後者は head のみを保持した前提で末尾追加を記述するのを期待してるっぽい
リスト追加の際、毎回末尾を探す
p=head p->next が NULL になるまで p を送っていく
ってことをやって見つけた末尾 p から追加分を連結すると
>>50 > 具体的にどれだよ
手元に有った bcc++ Ver.5.5 (私の回答専用コンパイラ)には無いみたいだよ
>>50 それより君が float を使わざる得なかったプロジェクトについて教えてはくれないか?
資源が乏しかった大昔なら『敢えて double を使う理由』をレビューで説明する必要が有ったと思うんだけど、
メモリもディスクも大容量の現在では『敢えて float を使い理由』を説明する必要が有ると思うんだ
57 :
56 :2011/07/21(木) 00:22:26.62
>>49 >課題の性質上、戻り値無しのやり方でやらないと点数はもらえなかったりします。
戻り値の型を省略したら暗黙にintになるけど、褒められたコーディングスタイルとは思えない。
課題に関しては無関係な部分と思うけど。int mainにしたら点数もらえないっていうのなら、焦点がぼやけている。
>>56 は割と愚直なコードです。
もし説明が欲しいなら、その点を具体的に言ってください。
一応先に説明しておくと、
リストのノード連結操作が主題になっていると思いましたので、
ノードは静的に確保しています。
「静的に確保」っていうのは、mallocを使わないで,
staticでノードを宣言している事です。
>>56 お前の臭いコメントなんていらねーよ
ばっかじゃないの
>>56 俺もそう思います
>>44 は馬鹿過ぎると思います
自分のテクに酔っていてこんなの提出したらまず質問攻めに遭って
答えられなくて単位を落とす事になりかねません
>>55 うわぁ、教授「こいつら回答一緒だな・・・」フラグ・・・
まぁありがとうございます...
出さないよりまし
>>61 これはQ本人か、はたまたQ化して人生終わっちゃった奴か・・・
65 :
デフォルトの名無しさん :2011/07/21(木) 05:38:42.96
[1] 授業単元:遺伝的アルゴリズム
[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] その他の制限: プログラムに詳しく書かれているので遺伝アルゴリズムに知識がなくてもできると思います。
前板で回答がなかったのでもう一度投稿しました。
よろしくお願いします。
66 :
デフォルトの名無しさん :2011/07/21(木) 10:28:51.85
>>54 お前がdoubleを使うべきとしている根拠は「float系のライブラリが無い」の一点だけなんだから、先に
> float系が無い処理系は有るよ
これを明示しろよ。お前が
>>53 で10年間やってる技術計算が2ch宿題スレでの回答者というのなら説明不要だが。
>>66 > float系が無い処理系は有るよ
これを問うてるんだが。池沼?
69 :
68 :2011/07/21(木) 13:43:13.01
アンカー間違い。
>>67 > float系が無い処理系は有るよ
これを問うてるんだが。池沼?
[1] 授業単元:アルゴリズム [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] その他の制限: 再帰かループどちらかの方法で解くこと
>>66 意味がよく判らないな
少なくとも『手元に有った bcc には float 系は無いよ』っていうのを読んだでしょ、示した事にならないのかな?
私が使ってきた処理系は主に Solaris 系だけど業務で float 系なんて使った事が無いから、
そこにそれが存在したか否かは知らないよ
73 :
デフォルトの名無しさん :2011/07/21(木) 16:01:07.54
http://codepad.org/n47BkpXa 上記のプログラムを実行すると8/3*3=6となります。
このソースを正常に8/3*3=8となるようにif文で前の演算子に'÷'次の演算子に'*'が来た時に
乗算を優先的に行うようにプログラムを付け加えていただけますか?
あえてint型で型を宣言していますので、そこは変更しないで下さい。
宜しくお願いします。
>>72 > 少なくとも『手元に有った bcc には float 系は無いよ』っていうのを読んだでしょ、示した事にならないのかな?
おまえは、10年間やっている技術計算での仕事でfloatを使わない理由として、
floatな関数は可搬性が悪いという事をあげたんだろ。
そして、その処理系を問うと2chの宿題スレ専用のbcc32だと答える。
おまえの「技術計算経験10年」とは2chの宿題スレで回答の事か? ww
> 私が使ってきた処理系は主に Solaris 系だけど業務で float 系なんて使った事が無いから、
Solarisの純正コンパイラにはある。
>>73 int型で8/3*3を計算したら6になるのが「正常」でしょうよ。
>>75 8*3/3に並べ替えして計算したいってことだろ
テンプレ無視だし俺はやらんけど
[1] 授業単元: プログラミング論
[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分まで
問題が多くて申し訳ありません。どうかよろしくお願いいたします。
>>74 まず、bcc が業務では使えないコンパイラであるという認識をしているので有ればそれは失礼だろう
あくまで私の手元に有る float 系を持たないコンパイラとして例示したに過ぎないから
現在の Solaris には有ってもおかしくない、C99の規格に float 系が定義されているなら当然だろう
しかし、BSD4.3あたりでは?
これは私が最初に Sun の業務を行った頃のOSだが今となっては確認するのは困難だろう
私は可搬性に関して触れたが float 系が無い処理系を業務で扱ったと断言した覚えは無い
だって float を使わないんだから、そんな事はどうでも良い話だ
float 系が無い処理系で業務を行う可能性が有るか否かは可搬性を考慮する際には関係ないんだよ
絶対に存在する double 系で構築すればどんな環境にでも対応できる(先に書いた様に例外は有るかもしれないが)
敢えて float を使うメリットが何も無いのだから double で統一すべきと教育されたし、それを遵守してきた
君にどんな業務で float を使ったかを問うたのは float を使うメリット、又は double を使えない制約に
どんなモノが有るのか知りたかったからだ
どうやら君は脳内プログラマらしいからこれ以上の追及は無意味だろう
ゲームとかGPU使うようなプログラムはfloat使うよ
80 :
デフォルトの名無しさん :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] その他の制限: 変数は変えない。関数は出来れば増やさない。
81 :
デフォルトの名無しさん :2011/07/21(木) 17:09:53.80
>>79 大昔に DreamCast を弄った経験が有るんだけど、普通の算術関数が float 系だった様な気もする
先に述べた通り、特殊な環境ならありえるだろうね
>>81 藤原本が何かは知らない
最初にこの教育を受けたのは大学の研究室
float が速いってのは一般的に認知されてるの?環境依存ならありそうだけど
省メモリに関しては前から言っている様に現在ではメリットとならないよ
一度だけ省メモリの観点で float を使った事を思い出した
但し、環境が MS-DOS でしかも言語は N88-BASIC だ
大きな表計算みたいなプログラムだったんだけど、double を使うと行が稼げないから敢えて float を使った
EWSやWindows環境で省メモリなんて考慮しなければならない業務に当たった経験は無い
君は省メモリの観点で float を使うような仕事をしてるの?
GPUを使う環境が特殊とか言われちゃうと、 どんな用途でも「特殊」の一言で切り捨てられる気がする
>>81 floatって今時C#の座標系位にしか使わなくないか?
doubleと比べると有効桁数が少なすぎて積み残し誤差がハンパないぞ
>>82 > 先に述べた通り、特殊な環境ならありえるだろうね
SSEを特殊な環境と主張するつもりかい? floatならdoubleの倍突っ込める。
>藤原本が何かは知らない
>>67 は別人? 別人格?
> float が速いってのは一般的に認知されてるの?環境依存ならありそうだけど
さあね、でも、10年前?にsparcが抜き去られた時からは「doubleが速い」は迷信。
> 省メモリに関しては前から言っている様に現在ではメリットとならないよ
それはキミがそういう領域しか扱ってないから。無尽蔵なメモリ使えるなら疎行列扱うテクニックとかいらないだろ。
技術計算やってると言ってて「疎行列」聞いたことないとかいうなよ。
> 君は省メモリの観点で float を使うような仕事をしてるの?
1000万×1000万のマトリックスが相手だよ。
>>83 GPUを使って計算する方法が、
汎用的かつ一般的で、
環境に依存せずに動くなら、
特殊でないと言ってもいいんじゃない?
Intelは次のCPUをクアッドチャンネルメモリにしないと目玉がないよな
ここ何のスレだっけ?
>>88 なら、↓こんな意味不明な反論すんなよ。
> 省メモリに関しては前から言っている様に現在ではメリットとならないよ
>>82 おまえSSEとか使わんのか
あとキャッシュメモリ考えたことないだろ
で、なんで宿題と関係ないことでスレ荒らすん?
>>86 一般的ならそりゃ特殊じゃないだろ
言葉くらいちゃんと使おうぜ
(何の話題か知らんけど)
>>81 そのリンク先は、あきらかに SSE/CUDA/GPGPU 等の float をターゲットにしたハードウェア相手にコードを記述する場合の話。
CPU/FPU 相手にプログラムを組むのであれば float/double に差はない。
で、発端となった、
http://hibari.2ch.net/test/read.cgi/tech/1308749241/906 は float をターゲットにしたハードウェア相手のコードなのか?
float の演算が多量に存在するのか?現状のコンパイラははこのコードに対して SSE命令を生成するのか?
このコードを float で書くメリットはなにか?
>>83 私の認識が古いのかもしれないね、コンピュータグラフィックスはほとんどやった事が無いので
先に書いた DreamCast はバイトだ
>>85 > SSEを特殊な環境と主張するつもりかい? floatならdoubleの倍突っ込める
上と同じレベルの話だよ、認識の違いだ
標準的な算術関数が double 系であるという事に間違いは無いだろう
float 系が主体である処理系はこの考えに基づくと『特殊』と考えても良いんじゃないのか?
将来は逆転するかも知れないが、私の世代を含めたプログラマ全体の平均を取れば誤った認識とは思わない
>別人? 別人格?
>「doubleが速い」は迷信。
別人だよ、私は double が速いなんて主張はしていない
敢えて float を使うのに速さを主張するのはいかがなものかと言っている
>それはキミがそういう領域しか扱ってないから
1000万x1000万のマトリックス?具体的な対象については教えてくれないのw
95 :
デフォルトの名無しさん :2011/07/21(木) 18:51:12.40
>>86 そりゃGPUを搭載しててDirectXやOpenGLなどが動くとかある程度環境に依存するけど
わりと一般的な構成じゃね?
97 :
デフォルトの名無しさん :2011/07/21(木) 18:54:44.16
>>93 > そのリンク先は、あきらかに SSE/CUDA/GPGPU 等の float をターゲットにしたハードウェア相手にコードを記述する場合の話。
実数計算の世界では今はこれがスタンダード。
> このコードを float で書くメリットはなにか?
doubleにするメリットは何もないな。
98 :
デフォルトの名無しさん :2011/07/21(木) 18:57:44.49
>>94 > 別人だよ、私は double が速いなんて主張はしていない
それではデフォルトがdoubleであるべきとする根拠はなんだよ。
「先輩に教えられたから?」www
ライブラリ説→否定された
メモリ使用量→完全に負け
速度→負け
SSEなんて10年前のPCですら使えるし なんで特殊なマシン扱いするのか分からない
>>86 gpgpu は汎用的でもなければ一般的でもない。
cuda は nvidia の提供する拡張されたコンパイラしか対応しない(ライブラリをリンクする程度の拡張ではない)。
ati stream も c/c++ベースの拡張言語 brook+ を使う。
C で GPGPU アプリケーションは記述できないゆえ、少なくともこのスレ的には、汎用的でも一般的でもない。
>>94 > 標準的な算術関数が double 系であるという事に間違いは無いだろう
根拠も示せず盲信するジジイ。もしくはそういうジジイに洗脳されているメクラ。
>>100 ISO/IEC 9899:1999でも読んでろカス
>>100 GPUを表示に使うだけのソフトウェアでも普通はfloat使うんだけど
>>98 ライブラリ説が否定されたとは思って無いのだけどw
当たり前すぎて書く気も無かったんだけど精度の問題は有るよ
特に姿勢制御なんかをやってる時に角度を float で扱うと落ちる誤差が馬鹿にならないんだ
『敢えて float を使う』メリットが無ければ double を使うのはごく当たり前の選択だと思う
>>99 コンパイラが sse を吐く場面は限られてますよ。
本当に mmx/sse を効果的に使いたいのなら、直に mmx/sse を記述するのが一般的。それか、mmx/sse を使って書かれたライブラリをリンクするか。
106 :
デフォルトの名無しさん :2011/07/21(木) 19:11:04.85
107 :
デフォルトの名無しさん :2011/07/21(木) 19:13:23.09
>>104 C99の標準ライブラリに可搬性に問題があると言いがかりをつけ続けるって事だな。
108 :
デフォルトの名無しさん :2011/07/21(木) 19:17:18.54
109 :
デフォルトの名無しさん :2011/07/21(木) 19:20:59.50
110 :
デフォルトの名無しさん :2011/07/21(木) 19:24:38.42
>>107 そうだよ、C99はまだ新しいから対応していない環境が有ってもおかしくないんだ
君がどんな記事を読んで float の方が技術向きと考えたかは知らないけれど、
現場では圧倒的に double が幅を利かせているのは事実なんだ
本当に速度を要求される処理で並列化まで考えたら float を選択するケースも有るだろうけど、
それは一部の『特殊』な業務であって、大多数の技術コードを書くプログラマ達には考える場面は無いと思う
勿論、先の事は判らないから10年後には『敢えて double を使う』理由を問われる時代が来るかも知れない
でも、現場を知らない人が誤った認識を学生に与えるのは良くないと思うから、お付き合いさせてもらった
まぁ、この辺で止めようよ、荒らしって言われるのは心外だからね
sparcを使う現場ではdoubleが幅を利かせてる sseを使う現場ではfloatが幅を利かせてる とか現場によって違うでいいじゃないか。無理にまとめんなよ
言いたいことだけ言って止めようっていうのはクズのすること
114 :
デフォルトの名無しさん :2011/07/21(木) 19:43:09.37
>>112 sseがどの程度一般的に用いられてるかが重要だろう
double が幅を利かせるのは sparc に限らずほとんどのEWSだ(もうEWSって言葉も古いかな?)
マルチコア上のプログラムでも sse を意識して書いてる人は一部だろう
>>113 そういう事を言われると続けざる得なくなるじゃないか、で続けると荒らすなって言うんだろw
>>114 別に bcc だけを根拠にしてる訳じゃないよ
確実に対応していない例としてあげただけだ
技術計算コードを書く上で long long も snprintf も必要とは思わないよ
C++は使うから // 禁止なんて話にはならないけどね
C++も昔は方言が有ったから使い方には制約を受けた記憶が有るけど、最近は気にしないのが普通だね
現場で double が幅を利かせている根拠を問われても困るな
実際に見て貰うしかないだろう
ほとんどの技術系プログラマがやってる仕事は最先端なんかじゃなくてもっと泥臭い仕事だよ
だから大昔からの『基本は double』って伝統が残ってる
先にも書いたけど10年後は違うかも知れないけど、今はまだそんな時代だよ
>>115 どれくらい使われてるかは俺は調べたことないから知らないけど、
環境だけみたらEWSよりSSE使える環境の方が多いだろ
使う現場の数を調べた上で言ってるなら納得するけど調べたりしてないでしょ?
現場ごとに変わるから先輩に黙って従えとか言っておけばいいのに
[1] 授業単元:構造体の配列利用
[2] 問題文(含コード&リンク):
http://codepad.org/FcoiN1sk 表示を行う際に、年齢順に表示するようにしたい。配列の並び替えを行なって表示するようにプログラムを拡張しなさい
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:明日の9時まで
>>116 無職のクズが何を一丁前に現場の話に口を出してんだ?
仕事してから言えアホ
ここは現場の宿題スレなんですね!
まぁ、PGIコンパイラはデフォルトでfloatからdoubleに変換してコード吐くんですけどね
123 :
デフォルトの名無しさん :2011/07/21(木) 21:55:30.82
>>116 > 技術計算コードを書く上で long long も snprintf も必要とは思わないよ
2G超えるファイルサイズはどうすんだよ。まさか使わない? w
> 現場で double が幅を利かせている根拠を問われても困るな
つまり、根拠なしに盲信されてるだけって事ね。
124 :
デフォルトの名無しさん :2011/07/21(木) 22:06:54.76
http://codepad.org/imsXD8tDにバグはない 。
ル ー プ は 仕 様 で す。 き り り っ
ル ー プ は 仕 様 で す。 き り り っ
ル ー プ は 仕 様 で す。 き り り っ
ル ー プ は 仕 様 で す。 き り り っ
って言っていながらループしてたのもう忘れたか? www
バグバグだよ。バカ。
> float を使うのも阿呆。このコードに sse を吐かせる余地はない。
doubleを選択する理由はない。自称技術計算歴10年選手も根拠示せずにいるぞ。w
> int main() なら return を書け。
C99前提だから問題ない。
> あなたの、
>>7 を、教えていただいた codegurad にかけると、
http://codepad.org/DPu2ivH8 とか Error が出力されるんですけど、本当に大丈夫なんですかね?
英語が読めれば問題無い事がわかる。
>>126 おお、できた
ありがとう!
アドバイスもありがとうございます!
>>129 データを入力した個数を、なんらかの方法で数えて記録しておくのがいいと思います。手段はいろいろあるでしょう。
>>124 私を引き合いに出さないでくれるかな
君は精度に関して何の反論もしていない
都合の悪い部分には触れずに議論を進める輩とは関わりたくないんだよ
>>130 > とはいえ、自力でバグを発見するのは簡単ではないもの。どんなバグかご教授願ください。ループをバグだと言っているようではちと不安ですが。
コードをざっくりと見るだけでわかる。
> float を選択する理由も同じくらいに示せていませんが?
doubleを選択する理由が無いんだから、floatを選択することに言いがかりをつけられる理由はない。
> 入力したデータの最小値が 10001 だったら破綻しますよ。はやく修正してください。
身長10000メートルの人間はいないのだから問題ない。
トリップ付けないとだれなんだか。。。
136 :
デフォルトの名無しさん :2011/07/21(木) 22:58:01.33
>>133 うんこの尻馬に乗って言いがかりをつけてきたのはお前だ。
精度とメモリ使用量、速度はトレードオフ。無条件にdoubleを
デフォルトとする根拠にはならない。
メモリー使用量を気にする人は、shortも多用するんだろうな
>>123 関わりたくないと書いたけど、都合の悪いところには触れないと返されたら嫌だから...
> 2G超えるファイルサイズはどうすんだよ。まさか使わない?
基本的は使わない
連続性をもった巨大データを1ファイルで扱わなければならない理由は無い
データファイルが巨大になるとデバッグの為にダンプを取るのも困難になるから、
小さなファイルに連番を振って管理した方が合理的だ
君は経験が浅そうだ
単位がoでもいないから問題ない。
>>138 >君は経験が浅そうだ
この部分はどう考えても余計だと思いますが?
ある意味Qよりひどい奴が現れたというべきか、それとも全てはQの壮大な自演なのか・・・・
>>136 単に自分の経験を語っただけだよ、それに対して君が突っかかってきたと思うが?
速度に関しては環境依存なのを認めたんじゃなかったっけ?
メモリ使用量が半分になるから精度を落とすなんてトレードオフが現在成立するとは思えないと思うぞ
>>141 そうかも知れないけど、Gバイトオーダーのファイルを作るなんて現場を知らない人の発言だよ
>>144 それはあんたの考えでしょ?データベースを作るとあっという間に2G超えするんだが何か?
ビデオファイルも結構でかい^^ギガバイト単位だ
>>145 RDBと計測データを一緒にされても困るよw
>>147 どっから計測データなんか沸いて出たんだ?話を自分の都合の良いように
勝手にねじ曲げないでもらえないかな?
>>146 だよな
ビデオカメラの映像をリアルタイムで記録するプログラムを作ると分割して
記録するなどの工夫が必要な場面がある
>>142 本職のマってすごいんだなあ、と感心しました。
最大値/最小値を求めるロジックに本質的なバグがあっても頑として修正をかけないんですね。
修正すると負け、の世界なんでしょうか。とても私には勤まりません。
マじゃなくて良かった、と思いました。以上。
double, floatの議論が上がっていますが、 >doubleが速いは時代遅れ というのはいくつかWebでベンチをみて、へーっと思ったことがあります。 しかーし、それは特定のCPUとコンパイラで成り立つ話です。 標準Cの範囲で言えば、特に理由がなければ 浮動小数点型はdouble、 整数型はint をとりあえず選択しておくべきでしょう。 >doubleが速いは時代遅れ と同じ理由でいつでもfloatが良いわけでは無いです。 このスレに持ち込まれるケースでは何も考えないでdoubleで ほぼ間違いないです。 念のため、QZとか言うコテハンの肩を持つわけじゃないです。 私のスタンスは「バグを憎んで、プログラマ憎まず」 QZを腐すために、言いがかり付けてるだけにみえるけど。
151 :
デフォルトの名無しさん :2011/07/21(木) 23:13:52.12
>>138 > 2G超えるファイルサイズはどうすんだよ。まさか使わない? w
> 基本的は使わない
ぷぷぷっ
インライン関数は? 浮動小数点例外は放置?
C99で追加されたこういう関数は自作しちゃうんだ。使っていい関数の一覧とかあるのか? ww
> erf erfc lgamma tgamma hypot acosh asinh atanh cbrt expm1 ilogb log1p
> logb nextafter remainder rint isnan isinf signbit isfinite isnormal
> fpclassify isunordered isgreater isgreaterequal isless islessequal
> islessgreater copysign log2 exp2 fdim fmax fmin nan scalbn scalbln
> nearbyint round trunc remquo lrint lround llrint llround fma nexttoward
152 :
デフォルトの名無しさん :2011/07/21(木) 23:17:38.06
>>143 > 速度に関しては環境依存なのを認めたんじゃなかったっけ?
そんな事、オレは言ってないし、誰もいってないぞ。現在のスタンダードはSSEアリ。
> メモリ使用量が半分になるから精度を落とすなんてトレードオフが現在成立するとは思えないと思うぞ
15ケタの精度が不要な場合もたくさんある。たとえばヒトの身長を扱う場合など。w
>>150 学校の宿題だけを考えたらdoubleの前にfloatを教えてる可能性が高いから
とりあえずfloatにしておくという選択肢もありかと
整数はintで間違いないけど
>>150 > しかーし、それは特定のCPUとコンパイラで成り立つ話です。
doubleの方が早いというのも特定のCPUとコンパイラで成り立つ話だよな。
とすると↓こうする根拠は全くない。
> 標準Cの範囲で言えば、特に理由がなければ
> 浮動小数点型はdouble、
> をとりあえず選択しておくべきでしょう。
これはある。
> 整数型はint
>>148 我々が扱うデータと言えば普通は計測データだよ
画像処理で動画データを扱う事も有るけど、結局はフレーム単位で切り出して処理する
> ビデオカメラの映像をリアルタイムで記録するプログラムを作ると分割して
> 記録するなどの工夫が必要な場面がある
これって巨大ファイルを扱う事は無いって認めてるように読めるんだけどw
>>151 知らん関数がほとんどだな、仕様を確認するなら自作した方が早いって話はよくあるよ
そもそも、C99以前から仕事してるからね
何故にインライン関数や例外の話が出てくるの?
156 :
デフォルトの名無しさん :2011/07/21(木) 23:26:47.09
>>130 そういえば、maxが-1だったら破たんするとか言いがかりをつけていたが、
ここまで来てやっと気づいたのか? ww
>>150 >QZを腐すために、言いがかり付けてるだけにみえるけど。
いいんです、それで。具体的なバグ・不具合・仕様のまずさを指摘いただけるのなら、ニート、自己愛なんちゃら、バグ量産マシン呼ばわりされても。ついでにいろいろお話が聞けますし。
「バグを憎んで人を憎まず」というスタンスです、て同じですね。
でもなかなか、バグ、減りませんね。
>巨大ファイル この表現も主観的
>>156 >「最大値/最小値を求めるロジックに本質的なバグがあ」
るよね、というスタンスですよ、最初から。
まあ、max の初期値が -1 でも問題ないことは認めますから、はやく最小値を求めるロジックを修正してください。
160 :
デフォルトの名無しさん :2011/07/21(木) 23:31:47.23
>>155 > 何故にインライン関数や例外の話が出てくるの?
インライン関数や浮動小数点例外のハンドリングはC99で規格化されたんだが、
C99は可搬性が悪いから禁止なんだろ。
161 :
デフォルトの名無しさん :2011/07/21(木) 23:38:31.91
>>155 そんな個人的主観的な話をされても返答に困るな
>これって巨大ファイルを扱う事は無いって認めてるように読めるんだけどw
だって2GBを超えると扱えない処理系があるからね
164 :
デフォルトの名無しさん :2011/07/21(木) 23:58:54.17
>>163 やっぱり、バカにはわからない。www
> バグの本質をご理解いただけていないようでは
バグの本質 wwww
> while (!peek('\n'))
> nextc = getchar();
ループしてるじゃねーか。これを「ループしている」以外になんていうんだ? www
>>164 >> while (!peek('\n'))
>> nextc = getchar();
>ループしてるじゃねーか。これを「ループしている」以外になんていうんだ? www
いいんですよ。それで。
標準入力から一行読む限りは末尾に '\n' がありますから、いずれループから抜け出ます。エラーが発生したらその行を捨ててしまうのです。
#define peek(c) (nextc == c)
ですから、
while (nextc != '\n')
nextc = getchar();
と同じことです。
http://hibari.2ch.net/test/read.cgi/tech/1308749241/846 は、代数式の解析に、とあるLL(1)文法を採用し、deternative に下降型構文解析を構成しているのです。
そのため先読みを明示して peek() をあえてマクロに仕立てました。
鋭いご指摘を受けたのでこの辺の事情は釈迦に説法だと考えていたのですがね。
166 :
デフォルトの名無しさん :2011/07/22(金) 00:13:01.53
167 :
デフォルトの名無しさん :2011/07/22(金) 00:17:05.66
>>165 > 標準入力から一行読む限りは末尾に '\n' がありますから
救いようの無いバカだな。全部書いてやらないとわからないのか。w
> while (!peek('\n'))
> nextc = getchar();
\nが現れる前にファイルエンドに達したらループしてるじゃねーか。これを「ループしている」以外になんていうんだ? www
>>153 >>154 あなたもしつこいですね。
>doubleの方が早いというのも特定のCPUとコンパイラで成り立つ話だよな。
他の人もそうですが、早いからdoubleにしろ、ではないです。
C言語の仕様そのものが浮動小数点型は、doubleが基本になっているのです。
整数型の基本がintに鳴っていることと同じです。
>doubleの前にfloatを教えてる可能性が高いから
通常はdoubleを教えてfloatは教えさえもしない場合の方が
多いような気がしますよ。敢えてshortを教えない場合がめずらしくないのと、
同じ理由です。
「doubleが速いは時代遅れ」というからには、かつてはdoubleが速いのは常識だったのです。
歴史的な経緯もあり、標準math関数がdoubleを扱っていることもあり、
浮動小数点型はdoubleを使え、は常識だと思うけど。
170 :
デフォルトの名無しさん :2011/07/22(金) 00:20:54.52
173 :
デフォルトの名無しさん :2011/07/22(金) 00:31:26.23
>>169 > >doubleの方が早いというのも特定のCPUとコンパイラで成り立つ話だよな。
> 他の人もそうですが、早いからdoubleにしろ、ではないです。
ライブラリの可搬性が悪いとか、精度が不十分とか、藤原本(doubleの方が高速)を
引用してdoubleデフォルトの根拠にしようと必死だったろ。
> C言語の仕様そのものが浮動小数点型は、doubleが基本になっているのです。
ようやく、本質に辿り着いたな。
doubleを基本としたのは関数プロトタイプがなかったK&R時代の名残。
floatを引数に渡すdoubleに格上げされた。この一点。
今は、プロトタイプ書かないクズは死ね。つーかエラー。なのでdoubleを基本とする根拠がない。
174 :
デフォルトの名無しさん :2011/07/22(金) 00:32:57.16
>>171 UNIX(Linux)だったらENTER押すまえにctrl-Dでその状態になるが、まさか知らない。www
175 :
デフォルトの名無しさん :2011/07/22(金) 00:33:44.24
[1] 授業単元:情報工学 [2] 2次正方行列AとBの各成分の値をキーボードから読み込み AとBの積、各行列式の値を求めるプログラムを作成せよ。 [3] 環境 [3.1] window7 [3.2] MinGW gcc [3.3] 言語: C言語 [4] 期限:あと8時間 よろしくお願いします
176 :
デフォルトの名無しさん :2011/07/22(金) 00:40:10.01
余りに笑撃的だったので、疑問符付け間違えちまったぜ。ww
>>171 UNIX(Linux)だったらENTER押すまえにctrl-Dでその状態になるが、まさか知らない? www
178 :
デフォルトの名無しさん :2011/07/22(金) 00:44:08.60
>>177 それは前に書いた。FLT_MAXは質問者は確実に習ってないからあえて10000にした。
>>174 その場合も問題ありません。E, T, F, A, B を非終端文字として、LL(1)文法
E -> TA
A -> +TA
A -> -TA
A -> epsilon
T -> FB
B -> *FB
B -> /FB
B -> epsilon
F -> 0...9
F -> (E)
の A->epsilon, B->epsilon が効いており、
http://hibari.2ch.net/test/read.cgi/tech/1308749241/846 では表示は乱れますが、
解析可能な代数式である限り評価は完了します。
解析可能でない場合は?\n が入力されるまで狂ってしまいますが‥‥‥。まあそういうことです。
>>169 >通常はdoubleを教えてfloatは教えさえもしない場合の方が多いような気がしますよ。
符号部、指数部、仮数部を教える際は普通単精度から教える。なぜなら短いから。
単精度をすっ飛ばして倍精度から教える学校なんて存在しないと思うけど?
10年以上前は事情が違ったんだろうか
[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] その他の制限: 変数は変えない。関数は出来れば増やさない。
さらに付記しますと 1+3= とか 1+3X 1+3) 1+3EOF でも 4 を返してしまうのが、この文法の弱点なわけです。これも A->epsilon, B->epsilon のせいで、仕方ありません。
>>173 私も最後に言いたいこと言って止めます。乗り遅れて入った分、
他の人より呆れるまで時間がかかったようです。識者の方々すみません。
>ようやく、本質に辿り着いたな。
>doubleを基本としたのは関数プロトタイプがなかったK&R時代の名残。
>floatを引数に渡すdoubleに格上げされた。この一点。
そうですよ。そしてこれがdoubleを基本とせよ、との理由です。
多くのプログラマはこれが理由でfloatではなく、doubleを選択するのです。
ですからfloatが推奨されるような環境では、その点が明示されます。
doubleのペナルティが顕著な環境でも、やはりその点が明示されます。
もし、コードレビューで、doubleではなくfloatが使用されていれば、
必ずその根拠を確認されます。プロトタイプ宣言をしていてもです。
なぜ、floatで宣言したか、確認されます。逆は無いです。
どうぞ、floatが推奨されるような環境ではfloatを使用してください。
185 :
デフォルトの名無しさん :2011/07/22(金) 00:56:08.37
>>179 これでループるけど。ww
$ echo -n '(1+2+' | ./a.out
まさか、echo -n '(1+2+'と等価な入力はキーボードからはやってこないとか言うなよ。w
186 :
デフォルトの名無しさん :2011/07/22(金) 00:58:58.97
>>184 都合の良いところだけ抜き出すな。著作権者として下記のように全部引用しなおす事を要求する。
> ようやく、本質に辿り着いたな。
> doubleを基本としたのは関数プロトタイプがなかったK&R時代の名残。
> floatを引数に渡すdoubleに格上げされた。この一点。
>
> 今は、プロトタイプ書かないクズは死ね。つーかエラー。なのでdoubleを基本とする根拠がない。
>>185 ふむ。リダイレクトするとだめか。コンソールは EOF を受け取ったあとでも、さらに入力があれば getchar() できる、という点にかかっているわけですかね。
ちなみに、echo -n '1+2' | ./a.out は OK ですね。
まあ、ファイルからの読み込みには対応していない、ということですかね。
仕様です霧
189 :
デフォルトの名無しさん :2011/07/22(金) 01:13:29.78
>>127 交叉の例
単純交叉(crossover)
親1 子1
1001|1010 1001|0011
親2 ↕ 子2
0010|0011 0010|1010
二点交叉(two_crossover)
親1 子1
100|11|010 100|00|010
親2 ↕ 子2
001|00|011 001|11|011
こうなっています。
そこの解釈間違って作ってくださっていたら教えてください。
作ってくださり、ありがとうございました。
190 :
デフォルトの名無しさん :2011/07/22(金) 01:15:19.77
>187 > ふむ。リダイレクトするとだめか。コンソールは EOF を受け取ったあとでも、さらに入力があれば getchar() できる、という点にかかっているわけですかね。 死ねクズ。一度エンドオブファイルになったらgetcharはずーっとEOFだ。 > まさか、echo -n '(1+2+'と等価な入力はキーボードからはやってこないとか言うなよ。w まさか、これとおなじデータ列をキーボードから入力する方法を知らない? www $ ./a.out (1+2+CTRL-DCTRL-D CTRL-Dを二度押し
>>190 やってみてください。私の環境では EOF の後も読み込んでくれます。
ともかく、
仕様です霧
>>191 EOFの後読み込むか規格票にはどう書いてある?
>>173 まだやってたのw
嘘はいけないよ、誰も速度の話なんてしてない
誰かがその藤原本だかの引用(
>>67 )を入れたが、直後に君はそんな話はしていないと
>>68 で言ったじゃないか
皆が呆れたようだから私も呆れる事にしよう
>>188 だから何?
K&R: 関数の引数はdoubleでしか受けられないのでデフォルトもdoubleで良いだろ。どーせ、本格的な数値演算はFORTRANでやるし。
C99: 可変個引数関数だけがdoubleでしか受けられない。
全然違うね。
>>193 誰か(
>>67 )が藤原本引用して速度の話を出しただろ。
トリップついて無いんだから敵(doubleデフォルト説支持者)の認識しかしてないよ。
>>191 仕様はend-of-fileに達した後はずーっとEOF
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file,
the end-of-file indicator for the stream is set and fgetc returns EOF. Otherwise,
the fgetc function returns the next character from the input stream pointed to by stream. If a read error occurs, the error indicator for the stream is set and fgetc returns EOF.
[1] 授業単元:プログラミング及び演習
[2] 問題文(含コード&リンク):
http://codepad.org/qstTADEC [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限: 2011/07/23
[5] その他の制限:特に無し
>>191 つまりQの使ってる処理系は規格に合致してない糞環境って事か
そんなもんで「やってみてください」もクソもねーだろと思う
>>192 C99 の 7.19.2 にはなにも。
端末を非カノニカルモード(stty -icanon min 1 time 0 とか)にすると、そもそも ^D が EOL にならないみたい。
カノニカルモードで端末は ^D を渡さないだけで普通にバッファリングしているみたいですね。この辺の詳しいことはどこに書いてあるのだろう?
>>194 ISO/IEC 9899:1999 6.5.2.2.6 には float -> double の格上げをわざわざ
These are called the default argument promotions.(JIS では 「既定の実引数拡張」という表現)
と呼んでますよ。プロトタイプがない場合は 整数型は全部 int になるし、実数型は全部 double になる。
という事実は、int や double が基本だ、ということになりませんか。
これが言葉だけの話、というのならば、話を最初
http://hibari.2ch.net/test/read.cgi/tech/1308749241/906 にもどして、
のちのち可変長引数関数である printf() において いずれ double に変換されるにきまっているのに、最初に float にしておくのはなぜか?
最初から double にしとけばええやん、という話になりませんかね。無駄に変換をかける必然性はあるのかなあ?
もともと私はそこを問題視しているんですけれどもね。
>>189 >gene[1]とgene[2], gene[3]とgene[4] ... のように親にする
こうあるんだけど、この1と2,3と4の組合せ、個体の決め方はどうするの?
書いたソースでは、1番目と2番目、3番目と4番目の個体を、
固定で交換するようにしてるけど、ランダムに変えなくてもいいのかな?
>>198 Linux(Vine 5.2)/bash も FreeBSD(8.2)/bash も Windows 上の cygwin/bash も挙動は同じですね。たぶんあなたの環境でもそうでしょうよ。
>>196 端末ディシプリンは ^D をストリームの終了とはしないようですね。そもそも、カノニカルモードでは端末は ^D をプロセスに渡さないだけで、普通にデータをバッファリングし、NL/EOL で吐き出す。
ただ、これは C の話からはだいぶ外れますが、典拠がみつからない。
>>201 VC10ではちゃんと動くんだがgccが糞だという事だろ
>>202 お前自分の性格の糞さを棚に上げて人様の事を非難できる立場にあるとでも思ってるのか?
どれだけ自分が嫌われてるのか他の人の書き込みから類推も出来ないんだとしたらクズだよお前
お前らこんな夜遅くまで元気だな
208 :
205 :2011/07/22(金) 03:09:05.22
189じゃなく、
>>204 ね
嫌ってるという人も、トリップを付けてよ。
>>206 何で俺が人のプログラムのバグを見つけてやる義理があるんだよ?馬鹿か?
>>209 >>7 でバグ入り危険とのたまうのなら、じゃあ、そのバグはなんですか?と聞いているだけですよ。それともあるある詐欺ですかね。
>>7 と
>>209 が別人だったら、それは
>>209 のおっしゃるとおり。私にも異存はありませんが。
>>7 は俺じゃないが?
相当人に突っかかりたいストレスを溜めてますね
だからクズって言われるんですよ
行っておきますが人に突っかかってもストレスは晴れませんよ
自分の中のゴミを掃除するまではね
今北産業 >210 先に言っとくが>7じゃないからな まぁ、バグって程でもないけどmain()の変数pは危険だよね サイズ指定していないので脆弱性があります 別にデーモンとかじゃないからいいけどね
どなたかいらっしゃいませんか?
いらっしゃいますよ
課題を丸投げしたいのですがよろしいですかね? 数十個あるうちのいくつかをおねがいしたいのです。
誠に申し訳ございませんが、そのような案件をお引き受けすることは出来ません
それはそうですよねー。 とりあえず自分で頑張ってみます。ご丁寧にありがとうございます。
全部別人を装って投下すればバレようはずも無いのに なんて素直な人なんだろう
探索系でなるべく高速に動作するように って問題だと俺が釣られる
doubleはfloatの倍の情報量を持つと規格されているの?
何度もすみません。
時間がありません。誰かお願いします。
[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] その他の制限: 変数は変えない。関数は出来れば増やさない。
>>222 ん〜。実に実践的な課題だな。
ある意味感動した。
根本的な設計の問題を抱えたソースを
過剰な規則で縛り上げつつ
修正という名の再設計を
末端のプログラマに丸投げする。
おまけに「時間がありません」ときたもんだ。
まさに「殺し文句」。
職業プログラマの現実って、大体こんな感じ。
こういう課題を易々と乗り越えられる奴は、
職業プログラマに向いていると思う。
あと、
>>222 は上流工程の仕事に適性があるね。
224 :
デフォルトの名無しさん :2011/07/22(金) 07:28:36.38
>>199 > 端末を非カノニカルモード(stty -icanon min 1 time 0 とか)にすると、そもそも ^D が EOL にならないみたい。
非カノニカルモードを知らねー事を告白しなくても良いんだぞ。wwww
> 最初に float にしておくのはなぜか?
ヒトの身長を表現するには単精度で充分だからだよ。死ね。
>>201 > 端末ディシプリンは ^D をストリームの終了とはしないようですね。そもそも、カノニカルモードでは端末は ^D をプロセスに渡さないだけで、普通にデータをバッファリングし、NL/EOL で吐き出す。
必死でググった結果がこれかよ。噴飯ものだよ。www
CTRL-Dをバッファリングする。wwwwww
CTRL-Dをバッファリングする。wwwwww
CTRL-Dをバッファリングする。wwwwww
CTRL-Dをバッファリングする。wwwwww
CTRL-Dをバッファリングする。wwwwww
CTRL-Dをバッファリングする。wwwwww
>>202 > そもそも、
http://codepad.org/imsXD8tD のバグを見つけてください、という話なのに、
あると言っているんだから「見つけてください」じゃなくて「教えてください」だろ。
「もしあるなら、このスレには二度とこない」というのなら教えてやるよ。www
>
>>124 では
http://hibari.2ch.net/test/read.cgi/tech/1308749241/846 のバグの話にもどすとは性悪ですね。
お前がクズだってことはfreeの宗教戦争で充分にわかったからな。クズに相応しい対応をしてるだけだ。
お前は、たかだか数十行の学生の課題のバグフリーな回答を作成する能力が無い。
その上、他人に指摘されるまでその単純なバグの存在に気づく能力が無い。
このスレから出ていけ。
>>222 > 上記のプログラムを実行すると8/3*3=6となります。
> このソースを正常に8/3*3=8となるようにif文で前の演算子に'÷'次の演算子に'*'が来た時に
> 乗算を優先的に行うようにプログラムを付け加えていただけますか?
この仕様は「プログラミングの世界では左結合」という原則に反するんだよ。
原則に反する仕様が必要な理由を説明できればやる奴もいるかもしれない。
ギャラ次第では原則を曲げた仕様も受け入れるけど。ここは無料スレだしな。
>>224 > ^D をプロセスに渡さないだけで、普通にデータをバッファリングし、
とは書きましたが
>CTRL-Dをバッファリングする。
とは書いていませんね。頭おかしいんじゃない?
>ヒトの身長を表現するには単精度で充分だからだよ。
なるほど。十分に納得しました。
>このスレから出ていけ。
気が向いたら。
>>222 その通りにやったら8/3/3*3*3とかが正しく計算されないと思うんだが
>>222 のソースコードが気持ち悪い
無意味に型が違って気持ち悪い
中置記法の計算にはポピュラーな方法を使って欲しい
整数型だけでどうにかしたいなら(既約)分数の型を使うべき
お前自分のスレでトリップはずすって言ったのに、なんでまだつけてんの? 自分で言ったことも守れないクズの分際で他人にどうこう言うとか人間として恥ずかしくないの?
> この仕様は「プログラミングの世界では左結合」という原則に反するんだよ 面倒だから嫌だって言えば良いじゃん、俺はそう言うよ
恥というものを知っていれば、わざわざトリ付けて醜態晒すなんてことはハナからしない
233 :
デフォルトの名無しさん :2011/07/22(金) 08:11:45.88
>>226 理解してない検索結果を継ぎはぎしてるから、↓が意味不明なんだよ。
> 端末ディシプリンは ^D をストリームの終了とはしないようですね。
するよ。
$ stty
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
^^^^^^^^^
> そもそも、カノニカルモードでは端末は ^D をプロセスに渡さないだけで、普通にデータをバッファリングし、NL/EOL で吐き出す。
「だけ」とはなんの「だけ」か? ここいらへんの概念まるっきり理解してないだろ。
> >「もしあるなら、このスレには二度とこない」というのなら教えてやるよ。www
> 絶対にありません。それでいいです。霧
って言わないのか? www
なんかみんな必死だな どんなに正しい事を言ってても、相手にバカとかクズとか頭おかしいとか言ってると必死に見えてしまう 俺なら、ただ事実のみを言うことで相手をねじ伏せる 本当に自分が正しいならば、それで勝てる そして、常に冷静な自分vs必死な相手という構図を作り出す。これだね これが上手く出来たときの快感は何事にもかえがたい
>>232 名無しで醜態を晒すよりは、トリ付けて醜態を晒す方が正々堂々としていて良いが。
>>212 提供されたもとのソースの内容を放置してましたね。ご指摘感謝。
でもそれは
>>7 も一緒。
>>85 >> 君は省メモリの観点で float を使うような仕事をしてるの?
>1000万×1000万のマトリックスが相手だよ。
それ、1400万×1400万になったらどうする?
>>235 ヒトの身長をμmやnmの精度で計測可能な測定器は存在しないので問題ない。
> >「もしあるなら、このスレには二度とこない」というのなら教えてやるよ。www
> 絶対にありません。それでいいです。霧
って言わないのか? www
>>236 正々堂々としているかどうかと、その行為が恥であるかどうかは別問題。
自宅で全裸になるのと屋外で全裸になるのとでは、明らかに後者の方が正々堂々としているが、
恥であるのもまた明らかに後者。
>>238 1000万以上の二乗とかくのが面倒だったからそう書いた。
1000万超 × 1000万超
とでも書けばわかるか?
>>240 同じ場所に書き込みをしているのだから、屋外なのはどちらも同じだろ。
トリを付けているか名無しかというのは、
素顔を晒して全裸になるか仮面で顔を隠して全裸になるかの違いだけ。
>>234 それは相手がある程度物事を理解できるっていう前提が必要で、
Qみたいな頭の悪すぎるクズには通用しない
>>241 数値計算の分野で、
doubleとfloatの選択をメモリ節約なんていう観点で決めないだろう・・・
という突っ込み。
逆に、700万×700万ならdoubleでも足りるからdoubleでやるの?そうじゃないでしょ。
>>243 私が挙げた例えは、あくまで「正々堂々としているかどうかと、その行為が恥であるかどうかは別問題」ということを示すための(極端な)例えであって、
このスレにおける一連の流れとは独立したものであると考えて欲しい。
今の状況は、「無理数同士の積は無理数とは限らない」ということを示すために、私が√2×√2という例を挙げたところに、
あなたが「でも√2×πは無理数だ」と指摘したようなものである。
分かっているとは思うけど、 1000万でdoubleがNG、floatならOKというなら 1400万なら(充填率が一定の前提なら)1.96倍になるのでfloatでもほぼNG 700万なら0.49倍になるのでdoubleでもOK という意味の数字。
>>244 確かに、どうしても自分の間違いを認めようとしないような人を相手取るとちょっと困るね
それでも、自分が暴言を使わなければ少なくともその点では相手より勝ることになるから
俺はこういう場であえて暴言を使うことはほとんどない
大人はNGワードを設定しているので問題ない。
>>245 > doubleとfloatの選択をメモリ節約なんていう観点で決めないだろう・・・
精度に関しては当然だから言及していない。
> 逆に、700万×700万ならdoubleでも足りるからdoubleでやるの?そうじゃないでしょ。
そう(メモリ無尽蔵にあるからdoubleで良いじゃん)と言ってたのがdoubleデフォルト派。
案件による。 で終わる話題なのにいつまでQZで遊んでるん?
ここも夏休みに入るから思う存分やれよ
>>252 案件によるでは終わらんだろ
ディフォルトが double か float かって話なんだから
>> べつに なら書き込まなくていい、と私は思う。
258 :
デフォルトの名無しさん :2011/07/22(金) 13:13:30.68
>>256 任意単位の入力を仮定しなければいけないというのならば、doubleでもlong doubleでも
表現範囲が不十分なので、無限精度浮動小数点を使わなきゃいけないな。
まず、これまでのてめーの回答を任意単位の入力を受けられるようになおしてから
修正を要求しろ。てめーが回答したもの全部だ。
他人に要求するんだから、当然自分もするんだよな。wwww
バカの言いがかりは底が浅すぎる。ブーメランのようにてめーに帰る。ww
259 :
デフォルトの名無しさん :2011/07/22(金) 13:34:52.50
>>257 926 名前: デフォルトの名無しさん 投稿日: 2011/07/19(火) 22:15:14.88
> あと、float をあえて使う場面はそうそうない。浮動小数点は double がデフォと学校で習いませんでしたか?
キミみたいな底辺PGは使う機会そうそう無いだろうけど、数値演算やってると不要な処でdoubleは使わないんだよ。
話の発端はこれなんだが、こんな非常識な事を書いて後に引けなくなった馬鹿が強弁してる
学生が見てるスレだから白黒は付けた方が良いと思うよ
260 :
70 :2011/07/22(金) 13:38:34.25
>>122 返事が遅れましたが、有難うございました、非常に参考になりました。
261 :
デフォルトの名無しさん :2011/07/22(金) 13:54:45.91
>>259 死ねよ。QZ。
floatを選択する場合は普通にある。QZが学校で習ったという(浮動小数点は double がデフォ)はウソ。
2011年時点のスタンダードハードウエアではdoubleよりfloatの方が速い、メモリ消費量は言わずもがな。
速度なんかどうでもいい場合は、doubleにしとけば精度や表現範囲に関する考慮を省ける。
速度を気にするならば、doubleの精度が必要な場合以外はfloatを使った方が良い。
結局doubleを教えてfloatを教えない学校ってあんの? 専門学校とかがそんな感じなの?
>>261 俺はQZじゃないよ
QZはアレな部分もあるけど基本的にはトリを付けるじゃん、そこだけは認めてる
float の方が速い環境で速度を優先するならって前提が付くだろ
『基本は double だけど理由が有れば float を使う場合も有る』で良いと思うぞ
> 数値演算やってると不要な処でdoubleは使わないんだよ
これを撤回するつもりは無いの?
>>263 > > 数値演算やってると不要な処でdoubleは使わないんだよ
> これを撤回するつもりは無いの?
無いよ。常に精度や値域考えて(floatで充分なところはfloat)選択するから。
数値演算やってると言いながら、無神経に「double選んどけ」っていう方が信じがたいわ。
>>266 キュートだろ
職業プログラマだったら100%こんな問題には手を付けないもんなぁ
考えなくても書けるコードなんて暇つぶしにならん、Qzあたりも回答しないレベルだ
積み残されて時間切れになりそうなら仕方ないから書いてやろうかなって思うけど、
前スレをチェックしたら出題から回答まで20分くらいかw
嬉々として回答したらQzにケチ付けられて強弁に強弁を重ねてる脳内プログラマにしか見えないんだよw
floatが4byteであるって規格されてるの? doubleがその2倍の情報量だって規格されてるの? floatが16byteでdoubleが8バイトって違法?
floatが4バイトとしても、1000万x1000万のマトリクスだと その必要情報量は360Tを超えてる。これをまともに扱う 処理系と環境を教えて下さい。(スパースマトリクスだとかは 理屈になりませんので)
doubleのほうがfloatより常に情報量(≒精度)が多いことは 法律で決まってる?
疎行列とか言ってなかったか?
275 :
デフォルトの名無しさん :2011/07/22(金) 16:11:18.08
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): パーティクルを採用した、エフェクトプログラムデモを作成する。
>>267 ところで、前回はとぼけられちゃったけど、C99禁止で浮動小数点例外の
ハンドリングどうやってんの?
277 :
デフォルトの名無しさん :2011/07/22(金) 16:13:21.32
>>275 ・光の粒子が回転移動。
・爆発エフェクト(破片の物理移動) など。
例)花火
>>275 なにかしらのライブラリが必須を思われるので
何使ってるのか教えろハゲ
279 :
デフォルトの名無しさん :2011/07/22(金) 16:15:37.49
>>276 1.情報の洗い出し → 構造体
2.初期化 → 爆発時に初期データセット
3.実処理 → 移動、加減速、色調
4.後処理 → 情報の削除(メモリの解放)
280 :
デフォルトの名無しさん :2011/07/22(金) 16:18:43.88
>>276 [3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: Cのみ
[4] 期限: 8月1日
281 :
デフォルトの名無しさん :2011/07/22(金) 16:24:23.64
>>278 なれてなくてすいません。
[5] その他の制限:エフェクトは自由にとのことでしたが、炎や、爆発や雷で作っていただけるとありがたいです。よろしくお願いします。
DirectXは使用不可です。コンソールアプリでお願いします。3Dは使わず、"*"や、"+"などの記号で表現お願いします。
282 :
デフォルトの名無しさん :2011/07/22(金) 16:26:50.04
>>281 お手数ですが、コメントよろしくお願いします。
printfとwhileかsleepあたりでそれっぽく作ればいいってことか
bool load(const char *pData) { unsingned long num_ = *( reinterpret_cast<const unsigned long *>(pData) ); pData += sizeof( unsigned long ); //etc } この関数で移動したpDataのアドレスを返すにはどうするのがスマートですかね? 引数を2重ポインタ使って返す? 返値で返す? 一般的な解法がわからん
今のDOS窓ってエスケープシーケンスが使えないんじゃなかったっけ? printf と sleep でそれっぽく作れるのか?
>>285 すれ違いすいませんでした。
違うところで聞いてきます。
>>276 お前の相手するのもう嫌なんだけど技術的な話だから答えるよ
まず、例外処理を使わないなんて言った覚えは無いよ
可搬性を重視するといっても程度問題だ、C++も使うって書いたよな
構造的例外処理がまだ一般的ではない時代は例外ハンドリングの概念は無かった
よって、ゼロ割や溢れが起きないように演算の前後に数値チェックを入れるのが必須だった
現在でもゼロ割で例外に引っかかる様なコードを書くと馬鹿にされるよ
ちゃんとチェックすれば例外なんて生じないからね
>>289 curses みたいなもんか、MSって知らんうちに変なモンを作ってるなぁ
宿題以外で需要有るんだろうか?
ANSI.SYSを導入して解決
何でディフォルトから ansi.sys を外したんだろうな? 入れとけば昔のDOSプログラムもリコンパイルして動かせるのに....こっちも需要は無いかw
>>290 超小規模だけど、1文字を文字色と背景色を上手く変えて1画素として扱えるようにして、
ファミコンクオリティゲームをコマンドプロンプトで動かそうってのがある
>>288 > お前の相手するのもう嫌なんだけど技術的な話だから答えるよ
撤退宣言したくせにノコノコでてきたのはお前だぞ。しかも呼んでないのに。
> まず、例外処理を使わないなんて言った覚えは無いよ
C99のライブラリダメでFP例外はアリかよ。ずいぶん都合の良いルールだな。
そんな曖昧なルールを根拠にdouble強要すんなよ。
> よって、ゼロ割や溢れが起きないように演算の前後に数値チェックを入れるのが必須だった
> 現在でもゼロ割で例外に引っかかる様なコードを書くと馬鹿にされるよ
それ古くねーか。
うちのスタンダードは、いちいち数値チェックなんか、(速度的に)入れてらんねーから、
とりあえず計算する→例外発生したら条件替えてやり直しだな。
稀にしか発生しないから*例外*な。
>>295 > C99のライブラリダメでFP例外はアリかよ。ずいぶん都合の良いルールだな。
程度問題って言葉が理解できないからお前の相手は嫌なんだよ
> それ古くねーか
> うちのスタンダードは、いちいち数値チェックなんか、(速度的に)入れてらんねーから、
> とりあえず計算する→例外発生したら条件替えてやり直しだな。
やり直しが可能なら落ちたってかまわないよ
でも例えば、NC加工中に落ちたり止まったりしたら材料が無駄になるだろ
素人に使わせるコードが例外出してダイアログ出したら電話がかかってくる
だいたい関数の引数チェック程度だったらたいしたオーバーヘッドでもねぇだろ
まぁお前さんの脳内でどんな凄いプロジェクトが進行中なのかは知らんけどねw
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/biBuP97v このプログラムの入力処理、出力処理をそれぞれvoid input(???),void output(???)として関数化し、
同じ動きをするプログラムに書き換えなさい
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/29まで
>>296 > 程度問題って言葉が理解できないからお前の相手は嫌なんだよ
そういうあいまいな*程度問題*とやらで、デフォルトdoubleを強要すんな。
floatな関数の可搬性を根拠にしてみたけど、引っ込みつかなくなって強弁してるのお前だろ。w
> でも例えば、NC加工中に落ちたり止まったりしたら材料が無駄になるだろ
> 素人に使わせるコードが例外出してダイアログ出したら電話がかかってくる
誰がプログラム止めるって言ったよ。例外をプログラム中で捕捉するための例外処理だぞ。
例外が発生したことなんて利用者は気づかねーよ。
>>298 まだ続けるつもりかよ、素人がw
float の可搬性なんて話を俺が本気で根拠にしてると思うのか?
だからお前は素人なんだよ
ある一文を書けば俺はグウの音も出なくなるんだが、お前はそれについて気が付かない
だから俺はお前を素人だと断定してからかってるんだよ
悔しかったらある一文を書いてみなよw
でもなぁ『数値演算やってると不要な処でdoubleは使わないんだよ』これは撤回しろよ
あまりに認識が現実離れしすぎてる
理由はfloat 使うと面倒だからなんだよ
レビューじゃ絶対突っつかれるし、後で精度不足に気が付いたら書き直しになる
普通の現場じゃ double と float が混在した不気味なコードは使わないからなw
後の面倒を考えたら全部 double にした方が楽なんだよ
まぁお前さんも現場に入ればすぐ判るよ
>>299 そうか? 逆にオレは
> 数値演算やってると不要な処でdoubleは使わないんだよ
これを撤回しろというお前の素性を疑っている。
> a = (float)tan( (double)b );
このキャストでもヘボPGと認定したが。w
> 理由はfloat 使うと面倒だからなんだよ
また新しい根拠を捏造しだしたのか? 墓穴掘ってるぞ。
面倒でもやらなきゃいけないのがお仕事なんだよ。
特別に教えてやろう。SSEにfloatはdoubleの倍突っ込めるんだよ。
何度も申し訳ありません。
少し流れてしまったのですがどなたか
>>77 をお願いいたします。
>>301 俺の質問の答えは判らんのか?
まぁ素人は知らんかもな
別に捏造でもなんでもないぞ、どっちかというと可搬性が捏造だw
double にしといた方が楽だからって理由はカッコ悪いだろ、だから隠してたw
そろそろ終わりにしたいから本音を書いただけだ
敢えて double と float の混在ソースなんて面倒を買う必要はないだろ
勿論、何らかの必然性が有れば別だけどな、SSEもその一つとなりうるだろう
>>302 その問題は前スレで見たよ、回答も有ったと思う
誰も回答しないのはそういう理由じゃないかな
>>303 > ある一文を書けば俺はグウの音も出なくなるんだが、お前はそれについて気が付かない
それを書けばグウの音でなくさせて終了させられるんじゃないのか? ww
うーん、何故それをせず、可搬性とか適当な事言ってたのを認めたんだろう? www
> SSEもその一つとなりうるだろう
SSEはスタンダードっていってるじゃん。
逆に、いまどきSSE使えない環境で数値計算やってますって方が嘘くさいぞ。
それだけじゃないけどな
>>305 素人な上に読解力も無いのか?
可搬性に関して俺が書いた時にC99の仕様なんて持ち出さずに『ある一文』を書けば俺はグウの音も出なかった、
その一文とは何かと聞いてるんだよ
素人には判らないと思うけど可搬性について考慮した事が有る奴なら誰でもわかる話だ
お前は素人なんだよ
>>309 memcpy(p2,p1,2); → p2 = p1;
memcpy(p2,&p1,10); → p2 = p1;
全体的にコードの意図が不明だが、
第3引数の2とか10はどういう意図?
>>312 2と10はコピーするためのバイト数を表わしたつもりです...
>>314 自分の中で
何やる(やりたい)のか
わかってる
>>314 何をコピーしたいの?
とりあえずmemcpyの第一引数、第二引数にはポインタを渡さなければ
ならないが、それも間違っている。
2,10はなんのサイズ?わざと半端なサイズコピーして、メモリの中を
見ようとしているの?その割にはprintfのなかで%sで受けると、
まずいことになるのだけれど。
320 :
B :2011/07/22(金) 23:33:45.45
#include <stdio.h> typedef struct{ char name[8]; int age; } PROFILE; int main(){ char c[10]; PROFILE p1; PROFILE *p2; strcpy(p1.name, "hoge"); p1.age = 10; printf("%s;%d\n", p1.name, p1.age); p2 = &p1; // memcpy(&p2, &&p1, 4); p1の先頭アドレスをp2にコピーすることによりp2をセット printf("%s;%d\n", p2->name, p2->age); memcpy(c, &p1, 10); printf("%s;%d\n", c, c[8]); }
>>319 やっぱり2,10の意図が不明。
memcpy(&p2,&p1,2); → memcpy(&p2,&p1,sizeof(p2));
memcpy(c,&p1,10); → strcpy(c,p1.name);
なら、まぁいいかと思うけど。
>>320 ありがとうございます!
>>321 実を言うと、そこは適当な容量ってことだったので特にこだわってません
>>320 p1, p2の型が違うっていうのは、バグになり易い。
PROFILE prof1, *pProf2;
とかの方がいい。
後、
printf("%s;%d\n", c, c[8]);
これは何を期待している?エンディアン次第で結果が変わるし、
%dは%hhdにすべきかな。
>>323 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char name[8];
int age;
} PROFILE;
int main(){
char c[10];
PROFILE prof1,*prof2;
strcpy(prof1.name, "hoge");
prof1.age = 10;
printf("%s;%d\n", prof1.name, prof1.age);
prof2 = &prof1;
memcpy(&prof2, &prof1, 4); //p1の先頭アドレスをp2にコピーすることによりprof2をセット
printf("%s;%d\n", prof2->name, prof2->age);
memcpy(c, &prof1, 10);
printf("%s;%hhd\n", c, c[8]);
}
>>320 >memcpy(&p2, &&p1, 4);
&&p1だと出力できない気がする
327 :
デフォルトの名無しさん :2011/07/23(土) 00:34:30.83
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/biBuP97v 20人分の生徒の名前と、5教科(国語、数学、英語、理科、社会)の点数を入力し、
data.txtファイルに保存するプログラムを作成しなさい。( 保存ファイルの書式は、各自で設計すること)
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/29まで
よろしくお願いします。
328 :
デフォルトの名無しさん :2011/07/23(土) 01:08:54.56
>>323 のリンクの所気にしないでください。
ミスです。
330 :
329 :2011/07/23(土) 01:21:24.65
DNUMを20に変え忘れた orz 直しておいてください
333 :
デフォルトの名無しさん :2011/07/23(土) 01:43:19.38
doubleが共通規約から廃止(=処理系毎の拡張扱い)されても、floatは残るだろうね ただし相互互換性は原則的に保証されない 処理系のfloatはA type of floatとなり処理系が異なれば精度も違ってくるだろうし (勿論最小限の制約は残るだろうけど) それこそSSEを前提とするようなものも出現するかもしれない。 これに対してdoubleはIEEEかどっかが決定するThe type of doubleって感じで ま、業界標準の浮動小数点実数型で、多くの言語もこれと互換のものを用意する ことが多くなるって感じ(つまり事実上すべての言語処理系が言語的には非公式に実装) そもそもsingleが無いからdoubleは形容詞じゃなく名詞として扱われてるし
>>311 お前がしつこく聞いていた「どんなプロジェクト」か?
狭い業界なんだから身バレの可能性が高くなるわ。こんなクソスレで書けるかバカ。
結局言いがかりの根拠は押し付けられた古いしきたりだったようだな。
> a = (float)tan( (double)b );
ヘボなハケンがよくこういうの書くんだよな。やっぱり直感は正しかったようだ。
>>331 うんこ:
> 教育的配慮から、私の「float をあえて使う場面はそうそうない」という発言は撤回します。
ほら、梯子外されちゃったぞ。w
お前らもっと面白い話をしろよ
337 :
デフォルトの名無しさん :2011/07/23(土) 08:25:32.82
>>331 メモリの時もそうだったが、てめーが勝手に設定したルールを押し付けるから、
オレも勝手にルールを設定しててめーに押し付ける。
てめーがオレのルールに従うなら、オレもてめーのルールを受け入れてやる。
過去のうんこコードを任意単位と任意値域に対応できるようになおせ。
>>325 longの十進法表示に対応するのが%ld
intの十進法表示に対応するのが%d
shortの十進法表示に対応するのが%hd
chrの十進法表示に対応するのが%hhd
floatってゲームだと使うよね? だって三次元データを扱おうとすると、3つセットだし、 4x4の行列を用意すると16個。 オブジェクトを生成するにしろ、リプレイデータを保存するにしろ、 doubleじゃあ息苦しくなってくる。
.
>>335 解らないなら解らないって言えよw
別にお前の脳内プロジェクトなんて知りたくもないわw
『可搬性を考えたら float を使うべきではない』これは誤りではない
しかし、『可搬性を考えたら double を使うべきだ』これは誤りだ
お前にこの違いが解るか?
341 :
デフォルトの名無しさん :2011/07/23(土) 09:14:06.01
>>340 > 『可搬性を考えたら float を使うべきではない』これは誤りではない
これは捏造だと認めただろ。アルツハイマーが進行しているようだな。
>>303 > 別に捏造でもなんでもないぞ、どっちかというと可搬性が捏造だw
>>341 お前は本当に頭が悪いな
『可搬性を考えたら double を使うべきだ』は誤りだって書いてるだろ
こんな良いヒントに無意味な突っ込み入れるなよw
343 :
デフォルトの名無しさん :2011/07/23(土) 09:49:16.90
>>342 QZの尻馬にのってノコノコでてきて、完膚なきまでに叩きのめされ、その上にQZに梯子外されて。
何度も撤退表明しときながらまだ粘着するのか。惨めすぎる。ww
>>337 >任意値域に対応できるよう
実は面白い。整数に関していえば実は今インプリメント中だったりします。遠くない未来にこのスレでお見せできるかと思います。
いい加減に収集つけろよ。個人の信条云々はわかったからさ、反応しなきゃいいだけじゃん。 質問者こんなんじゃ質問し辛いだろ。現に荒れてから質問一気に減ったじゃん。 日々の仕事からの現実逃避娯楽を奪わんでくれw
347 :
デフォルトの名無しさん :2011/07/23(土) 09:59:46.97
>>345 そんなうんこコードで回答されてもお前以外は誰も得しない。隔離スレで勝手にやってろ。
>>346 夏休みに入ったからだよ。
俺も収集つけたいんだけどね 俺の質問に float 馬鹿が答えるか降参してくれるのを待ってる
> a = (float)tan( (double)b ); こういうクソコードかく底辺派遣はストレス溜めてるねえ。 主張に欠陥があることを認めながら粘着つづける。ああ、惨めすぎる。w
>>349 降参ならさっさと降参しろよw
そもそも、そんなコードを書くことは無い、だって double しか使わないんだもんw
どこまで見苦しいんだよw
352 :
デフォルトの名無しさん :2011/07/23(土) 10:42:32.71
> a = (float)tan( (double)b ); 普段は書かないとか言い訳してる。wwww つい、底辺派遣の地がでちゃったんだろうね。一発で底辺派遣と見分けられるクソコード。ww きっかけ作ったうんこも撤退したのに粘着し続ける底辺派遣惨めすぎる。 学生さんは底辺派遣にならないように、自分で課題こなしてしっかり勉強しようね。
敢えて言おう 夏ですね^^
>>352 お前は本当に終わってるな
部分抜粋じゃなくて全部を引用しろよ
それは『こういうコードを書くハメになるから駄目でしょ』って意味で書いただろ
答えも解らん、降参するのも悔しい、つまりは頭が悪い上に潔さも無いって事か
もう回答か降参以外にはレスしないからね
355 :
デフォルトの名無しさん :2011/07/23(土) 10:50:11.89
> a = (float)tan( (double)b ); 今度はダメな例とか言い訳してる。www 底辺派遣惨め。www
>>355 しつこいわ、俺もだけどw
>>17 を見て駄目な例じゃないと読むならお前は何処の国の人間だ?
まぁ
>>17 は嘘なんだけどな、float を使うにしてもこんな実装にはならん
最後に大ヒントだ『生と裸は駄目だよ』
解るかなぁ、解んないだろうなぁ
大学のプログラミングの課題です 3で割った余りを表示したいんですがうまく出来ません よろしくお願いします #include <stdio.h> int main(void){ int num,c; num=getchar(); c=num%3; switch(c){ case '0': printf("num/3の余りは0です\n"); break; case '1': printf("num/3の余りは1です\n"); break; case '2': printf("num/3の余りは2です\n"); break; default: printf("入力ミスです\n"); break; } return 0; }
>>358 ×num=getchar();
○scanf("%d", &num);
>>359 書き換えましたが、何を入力しても「入力ミスです」と表示されてしまいます
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/vPJorQaD はじめに操作メニューを表示し、データの新規入力か閲覧かを選択させる。
新規入力は、上記のリンク先のプログラムの仕様に沿ったものとし、閲覧はdata.txtの内容を読み込み、読み込んだ人数分を表のように各項目が上下に揃って表示されるように設計しなさい。
詳細設定は、各自で行って良い。各自で決めた設計は、プログラムの先頭にコメントで記述すること
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/29まで
364 :
デフォルトの名無しさん :2011/07/23(土) 11:39:47.02
> a = (float)tan( (double)b );
見れば見るほど底辺派遣コード。
>>357 >>17 はダメな例じゃなくてwarinigを避けるための例
底辺派遣らしく真偽を間違えて
> と書くと『有効精度が失われます』みたいな warning が出るから
とかいてるけど、
> と書かないと『有効精度が失われます』みたいな warning が出るから
が正しい。
つまり、warningを避けるために本気で書いた底辺派遣コード。www 底辺派遣惨め過ぎる。
同じことを繰り返し書くのも荒らしだろw
367 :
デフォルトの名無しさん :2011/07/23(土) 12:02:22.70
> a = (float)tan( (double)b ); 言い訳も突き崩されて涙目でコピペを続ける底辺派遣。www 惨めすぎる www 学生諸君はこういうコード書いたら一発でバカにされるという事を良く覚えておこう。 「デフォルトはdouble」は憶えちゃだめだぞ。ウソだから。
しつこい奴は嫌われる
370 :
デフォルトの名無しさん :2011/07/23(土) 12:56:29.61
>>369 > a = (float)tan( (double)b );
言い訳も突き崩されて涙目でコピペを続ける底辺派遣。www 惨めすぎる www
このスレに来るような落ちこぼれ候補の学生諸君のために特別に講義だ。
これが、底辺派遣が書いたコードだ
(1) a = (float)tan( (double)b );
さて、これのどこが悪いか? bをキャストしている点だ。floatからdoubleへ
の格上げは自動で行われるから、不要なのである。
(2) a = (float)tan( b );
これが
>>17 で例示すべきだった記述だ。これなら「コンパイラの警告を避ける
ために面倒な記述が必要」という屁理屈を付ける事は可能だ。
キャストは強力すぎて、せっかくコンパイラが発見しているコーディングミスを
隠してしまうので、使用は必要最小限にとどめるべきである。
ところが、底辺派遣と呼ばれる連中は要不要の判断が面倒なのか、それもと出来な
いのか、はたまた脊髄反射なのかわからないが、全部キャストする。
あらゆるところでキャストする。意味不明のキャストをする。
したがって(1)のようなコードを書く奴は底辺派遣と見なされバカにされる。
(2)も、C99ではtanfが定義されてるからバカにされる対象となることを忘れてはいけない。
371 :
デフォルトの名無しさん :2011/07/23(土) 16:25:22.27
[1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): 演習目的 @構造体やポインタを利用して、データ構造を設計することができる。 A構造体をreturn文で返却する関数を作ることができる。 Bポインタを扱うことができる。 課題 プロフィールを入れる構造体を定義し、その構造体に値を入れる関数と、 メンバの値を表示する関数を作成しなさい。 ただし、呼び出し側では構造体の配列を宣言して、複数人のプロフィールを 入れた例を示しなさい。プロフィールとする項目は自由に決めてよい。 ただし、3つ以上の型を使用すること。 例 氏名:char name[] 取得単位数:int unit 身長:double height … [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:7月27日 [5] その他の制限:特になし 前板で回答がなかったのでもう一度投稿させてもらいました。 お手数ですが、どなたかよろしくお願いします。
『(1990年代の意味での)可搬性を考えたらCではfloatを使うべきではない』○ 『(1990年代の意味での)可搬性を考えたらCではdoubleを使うべきだ』○ 『(長いタイムスパンでの)可搬性を考えたらCではfloatを使うべきある』○ 『(長いタイムスパンでの)可搬性を考えたらCではdoubleを使うべきだ』△
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/WIFtlyRf 管理できる生徒数を最大20人とし、入力を途中で中断する機能、追加入力する機能を追加しなさい。
各自で詳細設定を行い、プログラムの先頭にコメントで記述すること
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/29まで
>>304 そうだったんですか...すみません、確認してみます。
>>310 ありがとうございます。過去ログにあったようですが、助かりました。
>>313 ありがとうございます、いろんな書き方があって勉強になります。
>>316 ありがとうございます。大勢のかたに解答していただいて申し訳ありません。
378 :
デフォルトの名無しさん :2011/07/23(土) 20:39:53.29
同じような演習問題の質問何度もすみません。宜しくお願いします。
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/Iks8CtjTのプログラミングはscanfでint型の配列に数値 char型の配列に四則演算子を入れています。
これを利用して多項でも入力可能な電卓を作成させなさい。
例:式:10/3*3 enter key 答え:10
答えの結果はint型で宣言すること。
・講師の方がアルゴリズムが好きな方なので割り算、掛け算が多く連続しても結果が
正確にでプログラミングも教えて頂けると幸いです。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (
[4] 期限: [2011年07月24日18:00まで
[5] その他の制限: 習って2ヶ月です。多項の式に対応したif文やfor文で回して計算結果が出せるようなアルゴリズムがあれば教えて頂けますか?
宜しくお願いします。講師の方がアルゴリズムが好きな方なので割り算、掛け算が多く連続しても結果が
正確にでプログラミングも教えて頂けると幸いです。
8/3*3/4*2+5*9/3
結果:19
>これを利用して多項でも入力可能な電卓を作成させなさい。 誰かに丸投げしろっていう課題なのか?
いや、ここはそういうスレでしょww
2/3+1/3 こういう時はどうするのかな?
385 :
デフォルトの名無しさん :2011/07/23(土) 21:57:37.77
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):
http://codepad.org/Iks8CtjT scanfでint型の配列に 数値、char型の配列には四則演算子が入ります。 これを利用して多項でも入力可能な電卓を作成させたいです。計算結果はint型とする。
[3.1] OS: Windows
[3.2] コンパイラ:gcc
[3.3] 言語:C
[4] 期限:2011年07月24日18:00まで
[5] その他の制限:習って2ヶ月です。多項の式に対応したif文やfor文で回して計算結果が
出せるようなアルゴリズムがあれば教えて頂けますか?
int型なので左辺から順番に先にやると(/が先に来た場合)結果がおかしくなる。
OK:8/3*3/4*2+5*9/3 結果:19
NG:8/3*3/4*2+5*9/3 結果:21
386 :
デフォルトの名無しさん :2011/07/23(土) 22:00:28.70
>>387 早速の回答ありがとうございます。
問題に記したソースを基に作成して頂ければ幸いです。
たぶん、計算の優先順位をどう作るかだと思います。ご指導お願いいたします。
>>389 では
>>331 をチェックしてみてください。
この問題はすでに、
>>221 で依頼があり、そのときは与えられたプログラムに沿うようにして
>>331 を書きました。
なお、当時は期限切れであったので、
>>331 は隔離スレに飛ばしていますが、このスレはネタスレで、当然無料です。:-)
>>376 >入力を途中で中断する機能、
データを入力するところで中断要求(例えばctrl+D)が来たらメニューに戻るってことでOK?
>追加入力する機能
現状でも追加入力できてね?
追加入力のイメージが湧かないんだけど・・・
>>387 まともなもん作れよ。うんこ。
$ ./unko < X
Bus error (core dumped)
393 :
デフォルトの名無しさん :2011/07/23(土) 23:10:15.06
>>390 実は
>>221 でやってる方法を提示したら結果が違うと指摘されました。
たぶん、分子と分母で分けて計算する考えだと思います。
例8/3*4*9/4+5
8×4×9
------------ + 5というイメージだと思います。ご指導お願いします。
3×4
出来ればmain関数の中だけで行えませんか?まだ関数をつくる所まで習っていないので。
>>392 Vine Linux 5.2 でも FreeBSD 8.2 でも Windows/cygwin (すべて x86) でも現象が確認できませんね。
bus error ということは、アラインメントの厳しいアーキテクチャかな?
よろしければ実行環境の詳細を教えてください。
395 :
デフォルトの名無しさん :2011/07/23(土) 23:17:07.63
>>393 演算順序を入れ替える方法(実は難しい)でも、
>>331 で採用している「途中経過を有理数(分子分母)でキープする」方法でも、
8/3*4*9/4 と 8*4*9/(3*4) とで結果は一緒なのに、
「結果が違う」という返答は極めて不正確ですね。
「やり方が違う」なら異論があるにせよ意思疎通が図れる可能性があるのですが。
値はあっているはずですので、プログラムの内容をしっかり把握したうえで、もう一度アタックしてみてください。
それでも反応が同じならば、日本語を正確に扱えない馬鹿講師みたいですから、あきらめたほうがいいと思います。弟子は師匠のいうことをきかなければいけませんが、師匠を選択する権利と自由だけはあります。
あと、main() にまとめるのはしんどいですね。
>>392 「./unko < X」の X ってなんですか?
あとコンパイラとコンパイルオプションも教えてください。
397 :
デフォルトの名無しさん :2011/07/23(土) 23:28:13.18
>>398 ソースを一回眺めれば、すぐにわかるバグだが。www
ヘボはいつまでたってもヘボ。
バックトレースやろうか? 余計混乱するだろうけど。w
(gdb) run <X
Starting program: unko <X
Program received signal SIGBUS, Bus error.
0x00000008008cb403 in malloc_usable_size () from libc.so
(gdb) where
#0 0x00000008008cb403 in malloc_usable_size () from libc.so
#1 0x00000008008cde16 in malloc_usable_size () from libc.so
#2 0x00000008008ce1c7 in malloc_usable_size () from libc.so
#3 0x00000008008d139f in malloc () from libc.so
#4 0x0000000800947b8b in memchr () from libc.so
#5 0x0000000800947a45 in memchr () from libc.so
#6 0x000000080093c657 in open () from libc.so
#7 0x000000080093e0ca in vfprintf () from libc.so
#8 0x000000080092bf2a in printf () from libc.so
#9 0x0000000000400bfb in main () at unko.c:82
>>399 なぜ、
int a;
printf("%d\n", a) / unko.c 82 で bus error が出るのかちょっと想像がつきません。
よろしければ リダイレクトで与えた X の内容を教えてください。
if( (a<0) ^(b<0) )とかキザなことやってる割に コアダンプしてるしWWW 必死でウケ狙ってるわけだな
>>391 >データを入力するところで中断要求(例えばctrl+D)が来たらメニューに戻るってことでOK?
それでいいです
>追加入力する機能について
データ入力するところで中断要求したあと、そのデータ入力を再開できるようにする機能のこと
>>400 判ってて言ってると思うけど、Xの内容は出してこないよ。
うちの環境を幾つか試したけどBus errorにはならない。
イチャモン付けたいだけで、検証可能な証拠は絶対にみせないから。
というより、他のスレに移動してやってくれ。
>>402 演算の優先順位を変えずにintでやってるから、
8/3*3 -> 2*3 -> 6 になる。
406 :
デフォルトの名無しさん :2011/07/24(日) 01:45:07.69
[1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): 演習目的 @構造体やポインタを利用して、データ構造を設計することができる。 A構造体をreturn文で返却する関数を作ることができる。 Bポインタを扱うことができる。 課題: 直交座標系の座標(x,y)を極座標系の座標(r,θ)に変換する関数と、 その逆変換をする関数を作成しなさい。 ただし、直交座標系(orthogonal coordinate system)の座標と、 極座標系(polar coordinates system)の座標はそれぞれ構造体を 用いて定義すること。 {x=rcosθ,y=rsinθ {r=√(x^2+y^2),tanθ=y/x 例えば、次のように定義することができる。 typedef struct{ double x; /** x座標 **/ double y; /** y座標 **/ } orth_coord_t; [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:7月27日 [5] その他の制限:特になし お手数ですが、よろしくお願いします。
407 :
デフォルトの名無しさん :2011/07/24(日) 01:45:19.81
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): パーティクルを採用した、エフェクトプログラムデモを作成する。 ・光の粒子が回転移動。 ・爆発エフェクト(破片の物理移動)など。 例)花火 情報の洗い出し → 構造体 2.初期化 → 爆発時に初期データセット 3.実処理 → 移動、加減速、色調 4.後処理 → 情報の削除(メモリの解放) [3] 環境 [3.1]OS:Windows7 [3.2]コンパイラ名とバージョン:VC6.0 [3.3]言語:Cのみ [4] 期限:8月1日 [5] その他の制限:エフェクトは自由にとのことでしたが、炎や、爆発や雷で作っていただけるとありがたいです。よろしくお願いします。 DirectXは使用不可です。コンソールアプリでお願いします。3Dは使わず、"*"や、"+"などの記号で表現お願いします。お手数ですが、コメントよろしくお願いします。
[1]C言語課題 [2]あたりくじ付き自動販売機のシミュレーターを作りなさい。 入力インターフェースはコンソール入力とします。 お釣りに帯する対応(例えば10円玉不足の場合は、ボタンを 押しても釣り銭切れで、商品が出ないようにするとか)が 必要になることでしょう。 商品種数、在庫、表示方法、状態出力方法は自由としますが、 わかりやすさ、面白さの作り込みの工夫は高い評価ポイントに なります。 あたりくじは、商品購入時点で777が出たら当選で、 単価が一定金額以下のもう一本好きな商品の選択が出来るように するというものを想定していますが、他に良いアイデアが あればそれを採用しても構いません。 [3] Linux/gcc4.6/C言語 [4] 7/31迄
>>406 #include <math.h>
typedef struct {
double x;
double y;
} orth_coord_t;
typedef struct {
double r;
double theta;
} polar_coord_t;
orth_coord_t polar_to_orth(polar_coord_t p)
{
orth_coord_t ret;
ret.x = p.r * cos(p.theta);
ret.y = p.r * sin(p.theta);
return ret;
}
polar_coord_t orth_to_polar(orth_coord_t o)
{
polar_coord_t ret;
ret.r = sqrt(o.x * o.x + o.y * o.y);
ret.theta = atan2(o.y, o.x);
return ret;
}
>>402 >>331 はその問題をクリアしています。
8/3*3 enter
と入力すると
8
と返ってくるはず。これは、最後の出力まで、途中経過を分数(分子分母)で記憶しているからです。
>>404 サイズ固定(1024バイト)の配列を内部にもっており、これがあふれれば場合によっては printf() の第一引数を壊すこともないではない。
elf ではなく coff とか a.out とかにして、セクションの順番を変えているのか?
しかし bus error はどうやっても引き起こせそうもない‥‥‥。
ともあれご要望にしたがい、再現可能な情報を出してくるまでは一切応答いたしません。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):テキストファイルtest.txtを単語ごとによみだして表示するプログラム
http://ideone.com/8MhVjがあります 。これを改変して切り出した単語の出現回数を調べ、
各単語の出現回数をアルファベット順に出力するプログラムを作っていただけないでしょうか。
例えば、Sato Aoki Suzuki Yoshida AOKI SATO Suzuki Satoという文章であれば
Aoki 2
Sato 3
Suzuki 2
Yoshida 1
という感じです。その際以下の条件があります。
・線形リストを用いて単語の出現回数を記憶し、単語をファイルから読み出す度にこれを更新すること。
・線形リストの内部では、単語が常に辞書順に並ぶように管理されること。単語は大文字と小文字を区別しないこと
・ノード作成、ノード挿入、ノード探索、ノード削除のそれぞれを関数として独立すること
以上です。よろしくお願いします
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
よろしくお願いします
413 :
デフォルトの名無しさん :2011/07/24(日) 08:18:11.63
>>400 うんこ、てめーは敵を作りすぎた。
> printf("%d\n", a) / unko.c 82 で bus error が出るのかちょっと想像がつきません。
バックトレースまで乗っけてやってんのに、ヘボはヘボ。
>>404 てめーもバスエラーがどういう場合に発生するかわかってねー。自称技術計算10年の底辺派遣か? w
: 0x8008cb3ff <malloc_usable_size+24783>: lea (%rax,%rdi,1),%r12
: rdi 0x3131313131313131 3544668469065756977
こういう状況でバスエラーが発生するんだ。憶えとけ。
> うちの環境を幾つか試したけどBus errorにはならない。
やるべきことは検証ではない。推理だ。www
もっとも、うんこのコードがうんこ過ぎるからBus errorという一見発生しそうもない
例外が発生してるんだが。←大ヒント。www
> というより、他のスレに移動してやってくれ。
うんこは「恥と引き換えに荒らす」と宣言してるんだから、このスレでたっぷり恥をかいてもらう。
残念なところはうんこは恥を持ち合わせていない事だ。←矛盾w
Program received signal SIGBUS, Bus error.
0x00000008008cb403 in malloc_usable_size () from libc.so
(gdb) x/i 0x00000008008cb403
0x8008cb403 <malloc_usable_size+24787>: cmp %rbp,0x130(%r12)
(gdb) info registers rbp
rbp 0x1000 0x1000
(gdb) info registers r12
r12 0x3131313131314031 3544668469065760817
414 :
デフォルトの名無しさん :2011/07/24(日) 08:25:50.18
415 :
デフォルトの名無しさん :2011/07/24(日) 08:45:18.57
>>404 >>413 はコピペミス。↓が正しい。 ツツシンデオワビシマス。
てめーもバスエラーがどういう場合に発生するかわかってねー。自称技術計算10年の底辺派遣か? w
: 0x8008cb403 <malloc_usable_size+24787>: cmp %rbp,0x130(%r12)
: r12 0x3131313131314031 3544668469065760817
こういう状況でバスエラーが発生するんだ。憶えとけ。
>>412 ノード削除の条件を具体的に。
例えば、指定単語に前方一致とか。
418 :
デフォルトの名無しさん :2011/07/24(日) 12:28:54.63
>>416 問題ではノードの削除について具体的な指定はないで、
その条件で大丈夫だと思います。それから、後付けになってしまい申し訳ないのですが、
線形リストは単方向線形リストを使って頂くとありがたいです
必死にQたんのバグ探しする
>>413 たんかわいいお*´Д`*
420 :
デフォルトの名無しさん :2011/07/24(日) 13:23:09.88
>>419 悔しいなら、自分で見つけろよ。
仕様未達一件追加 www
たった160行にバスエラー1、「欠陥ロジック」1、仕様未達1 www
>>418 問題にノードの削除関数は必要無いから使われない関数を作れって事?
ノードの開放関数なら解るけど
>>421 すみません。問題をきちんと把握してませんでした
この問題の参考資料に、ノードの削除関数は今回は使わないかもしれないが、一般的には必要である。と書いてあるので
削除関数は作らなくても大丈夫だということだと思います
>>420 バグ調査の労、重ね重ね感謝いたします。以下の点修正いたします。
・バッファオーバーランの可能性を排除しました。
・プログラム内にて 0 割り自体は発生しませんが、1/0 という分母が 0 の形で出力していました。今回演算処理中に 0 割りが発生した場合は、その旨表示するようにしました。
・仕様上、内部表現の分数表現の分子・分母それぞれに上限があります。(int 型 4 バイトに 2 つの整数を押し込んでいる以上仕方ありません。)
ただし、式評価の最中にその上限を超える可能性が発生した場合にエラー表示を出力しておりませんでしたので、今回エラーを出力するようにいたしました。
なお、その上限とは 16782 です。
http://codepad.org/9MSpIXlt なお、本プログラムは再帰呼び出しにて記述しておりますので、以上の対策をとっていても入力によっては暴走等異常が発生する可能性があります。
プログラムのバグを報告していただく際には、プログラムに与えた入力と実行ファイル生成時に設定したスタックサイズをあわせてご連絡いただければ幸いです。
よろしくお願いいたします。
>>423 失礼、誤記を訂正します。上限は 16382 です。
プログラム中の #define LIMIT 32767 の1/2 (端数は切り捨て)にあたります。
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/jd2TiJfa 同じ名前の学生はいないものとして考える。入力データの修正と削除の機能を関数を作成して追加しなさい。
各自で詳細設定を行い、プログラムの先頭にコメントで記述すること
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:7/29まで
>>412 申し訳ありません
問題文を修正します
・ノード作成、ノード挿入、ノード探索のそれぞれを関数として独立すること
ノード削除関数は必要ありません
よろしくお願いします
>>427 ありがとうございます!
とても助かりました!
>>427 >p = (Word*)malloc( sizeof( Word ) );
>assert( p );
nice におもったけれども、assert() はりリース時には消えてしまう前提、とすれば、めんどくさいけれども if() ではじくしかないのかなあ。
先頭に_は……
>>429 malloc() エラーなんて滅多に起きるもんじゃないからね(引数異常は除く)
起きるとしたらスワップ使い果たしてOSがハング寸前の時だろうか
ワンオフなら業務でも許されるんじゃないかな
>>431 たしかにそんなときには、スラッシング状態(いやその前に切り捨てられるか)・なにをやっても無駄・打つ手なしでしょうからね。assert() で意思表明する程度でいいのでしょう。
そういう意味でも
>>427 は nice な表現ですね。
C++のnew なら例外だから放置もありだろうが NULLアクセスにするのはなぁ
>>432 nice っていうより普通に使われる便利なマクロ(だったかな?)
>>433 assert() は引数が false なら exit() するよ
>>434 リリースビルドの話に決まってんだろ
あとexit()じゃねーし
>>435 abort() だっけ、どうでも良いことは忘れるタイプなんでね
だからワンオフなら許されるかもと書いた、普通はリリース前に assert() を消すか妥当なエラー処理に直すかするよ
ミッションクリティカルな業務においても実装開始時にエラー処理系の方針が固まっていない事も有る
そういう場合に assert() を用いた実装でテストを行い、エラー処理の実装を待って正規の処理に書き換える
てのはよくある話だ
そも assert() はデバッグツールの一種だから
>>436 assertがリリースのとき消えるのすら知らない人かと思ったもんで
あと俺が死ねといってるのは、ナイスな表現とか言ってるQZの方だ
ワンオフの話は別にいい
>>437 程度が低い奴って相手も程度が低いと決め付ける事が多いから仕方ないよねw
なんでお互いにassertの仕様説明しあってるもんな
完全なC言語初心者なのですが、
先日JAVAをC言語に変換しろという課題が出ました
JAVAのソースは以下の通りとなっています。
http://codepad.org/mEqlSVQe これをC言語に変換したいのです…。
尚、自宅のパソコンのスペックがとても低く、
JAVAの再生環境がない状況で打ち込みましたので
もしも間違いがあったらすみません。
何卒宜しくお願いします。
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): マインスイーパ(地雷ゲーム)を作れ
[3] 環境
[3.1] OS: Windows xp
[3.2] 学習用C言語開発環境
[3.3] 言語: C言語のみ
[4] 期限: 7.26
[5] その他の制限:配列までは習いました。
>>440 ネストが変だけどコピペミスしてないか?
>>441 本当にお聞きし辛いのですが、ネスト、とはなんでしょうか、
直ぐに訂正いたしますので教えていただけると幸いです…
>>440 >尚、自宅のパソコンのスペックがとても低く、
>JAVAの再生環境がない状況で打ち込みましたので
ideoneにJavaがあるだろ
>>442 括弧の対応の事
これが変だからコピペミスしてソースの一部が欠損してるんじゃないかなって話
445 :
デフォルトの名無しさん :2011/07/24(日) 19:16:21.07
>>409 ありがとうございます!!
すごく助かりました。
>>443 こんなサイトがあったのですね、ソフトを導入する余地が無かったので
うちのパソコンではもうJAVAは出来ないだろうなと思ってました。
ありがとうございます。
[1] 授業単元:C++プログラム
[2] 問題文(含コード&リンク):ハンバーガーショップの注文管理システムを考える。管理する注文は必ずハンバーガー、ドリンク、
ポテトのセットとする。またハンバーガーとドリンクの種類は選択可能である。
選択されたハンバーガー、ドリンクとそのセット価格を構造体で管理したい。ハンバーガー、ドリンクに対応する数値が#define
により定義されているものとする。
条件:
<1>構造体ORDERの変数に注文を入力できるようにする
<2>ハンバーガーの種類が既に格納された構造体変数が引数として渡されたとき、ハンバーガーの種類によって決定する
価格をメンバー変数priceに格納する関数set_priceを作成しなさい
<3>ハンバーガーの種類によって焼くべきバンズとパティが決定する。ハンバーガーの種類が既に格納された構造体が引数
として渡されたときに、パティと肉の枚数を格納する関数を作成しなさい
枚数は適当で良い
http://codepad.org/QaLvqKSk ←エラーの原因が分かりません
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C++
[4] 期限:7/26日まで
よろしくお願いします
>>410 385 ?? 386,388: デフォルトの名無しさん [] 2011/07/23(土) 21:57:37.77
http://codepad.org/Iks8CtjT まだ、define定義ななど習ってないので計算をしている関数とmain関数内の二つ程でやってるように教えて頂けますか?
上記の方法にプログラムは数値、演算子を取り出すだけのプログラムです。それに付け加えて頂けますでしょうか?
あと、説明もしなければならないのでコメントを入れて頂ければ助かります。宜しくお願いします。
>>444 メモ帳の通りコピペは出来てるんですが、
打ち込みをどこか間違っているのかもしれません。
一応{}の対応を見ていったのですが、
私ではミスを見つけきれません…色付きで表示がせめてあれば…
>>447 scanf() と set_price() には実体ではなくアドレスを渡すべき
>>450 一番最初の { と return 直前の } が対応してるよ
メモ帳以外のエディター持ってないの?
最近のエディターなら『対応する括弧へジャンプ』の機能は付いてるよ
打ち込み間違いなら確認は困難かな?
推測して書いてみるけど期待はするな
>>452 丁寧にお返事いただいて本当にありがとうございます。
実はメモ帳以外のエディターはDLが上手く進まず
途中で全て中断されてしまうorフリーズしてしまう為(恐らく容量不足です)
仕方なしにメモ帳で打ち込んだ次第です…。
>>455 ttp://codepad.org/G604AWOL 修正後のコードを見る前に書いた
色々、バグと見られる部分も有ったのでオリジナルとロジックが異なる
又、マインスイーパーなら白地(周りに地雷が無い)を踏んだ場合、数字が出るエリアまで自動的に開くはずだが、
そのロジックは見当たらないから組んでない
はっきりいってクリアは非常に困難だし面白くないよw
457 :
455 :2011/07/24(日) 20:40:34.21
>>447 他のソースとか問題全部無視してエラー箇所だけつっこむと
scanf("%d",&data.burger);
set_price(&data);
の様にアドレスを渡すこと。
あと関数はポインタ渡してるからアロー演算子使わないとね。
459 :
455 :2011/07/24(日) 20:50:52.59
>>456 わざわざ打っていただいたようで本当にありがとうございます!!
初心者丸出しで本当にお恥ずかしい限りです…申し訳ない…。
言われてみれば元のソースが確かにゲームとして破綻してますね…
もし
>>456 様の仰る部分を組んだらどのようになるのでしょうか?
>>457 多分、Main.javaというファイル名になるので、クラス名をMainにしなければいけない。
>>457 pbulic で Jirai2 というクラスを宣言するならソースファイル名は Jirai2.jave でなくてはいけないって書いてるね
だとすると ideone では public class を含むソースはコンパイル不可能って事になっちゃうのかな?
ネストは直ってるけどロジック的な問題は残ってるし白地を踏んだ時の自動処理は無いね
そのプログラムだと最初に踏んだ場所が白地か1だったら後は同じマスを踏んでればクリアになっちゃうよw
462 :
455 :2011/07/24(日) 21:02:23.37
>>456 すみません追記になるのですが、
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
これが3つ並んでいるのを初めて見たのですが
1つにする事は出来ないのでしょうか?
授業で使うことがないもので、本当にすみません…
>>462 ヘッダ関連はその程度の規模なら無視してかまわない
465 :
455 :2011/07/24(日) 21:13:00.50
>>461 すみません、ロジック的な問題とはなんでしょうか…
プログラムとしてねじれている、という解釈でもよいですか?
>>464 無視ということは削除しても構わないという事でしょうか?
あーごめん言い方悪かったね。無視して良いって言ったのは省略できないけどこの程度の行追加は必要なことだから気にしなくて良いって言いたかった。
467 :
455 :2011/07/24(日) 21:17:37.93
>>466 いえ、私こそ本当に知識がなくて申し訳ないです。
そういう意味だったんですね、ありがとうございます。
468 :
デフォルトの名無しさん :2011/07/24(日) 21:20:10.46
>>413 >cmp %rbp,0x130(%r12)
>r12 0x3131313131314031
たぶん、X ファイルの中身は"111111111111111111111111111111111111111111......." で容量は1G? 2G? とメモリ空間を埋め尽くすくらいあったのですね。
はじめはとても信じられなかったんですが、ありうる話。
で、メモリ空間の最初の方の静的配列が書き様がまずいせいであふれて、とうとう、もう端っこのほうにあるスタックエリアまで到達してしまった。
libc/printf() の下の下のどこかで、0x31313131......31 という値がレジスタ r12 によみこまれてしまった。
この値、2byte, 4byte, 可能性の高いのは 8byte のアラインメントからずれてしまっている(そもそも奇数だし)。
したがって、cmp ebp, (r12 + 0x130) のオペランド r12+0x130 自体がアラインメント不整。で、バスエラー例外が発生した。
というシナリオでいいでしょうか。
であれば、
>>423 で封じ込めることができているはずですね。
レジスタ bp や r12 があるということは、x86 かつAMD64 以降でしょうね。
>やるべきことは検証ではない。推理だ。www
深く同意し感謝いたします。
[1] 授業単元:C++プログラム [2] 問題文 Nr(i)は身長とし、Na(i)氏名のデータとする どちらも10個の要素を持つ配列であり、それぞれは10人の身長と氏名のデータとして持つ。 キーボードから身長Xを入力し、二分検索処理を用いてXの氏名をもとめ、結果をディスプレイへ表示するプログラムを作成せよ。 よろしくお願いたします 二分検索がいまいち理解できないので軽く解説も書いていただければ幸いです [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C++ [4] 期限:7/26日まで
>>465 ねじれてるというか誤ってる
>>457 の42, 44行目の nokori--; は有ってはいけない
開いたマスを踏み続けても nokori--; が実行されるとゲームはクリアされてしまう
jimen[fumi] が 2, 3 の場合は、1 と同様に既に踏んでいますのメッセージを出すべきだろう
472 :
455 :2011/07/24(日) 21:33:39.73
>>468 >>471 ありがとうございます!
色々な方からのコメントを見る限りプログラム自体がかなり破綻していたのに
色々と手を加えていただいたり根気強くコメントを頂き本当に嬉しい限りです…
実はこの課題がJAVAで出たのは1年前で、当時のデータ(教科書含め)を持っておらず
課題の趣旨が把握仕切れて居なかったので色々指摘していただけて助かりました。
一応明日課題の出題内容をもう一度見直して
もう1度ギリギリまでプログラムと向き合ってみます!
また明日も来るかもしれませんがそのときは宜しくお願いします…
>>469 1Gも食わせる必要有るのか?
バッファサイズを越える数字の連続が有ればオーバーフローが生じそうだけど、
オーバーフローでスタックが破壊されたらリターンアドレスが変わって変な挙動をするんじゃないか?
>>469 > で、メモリ空間の最初の方の静的配列が書き様がまずいせいであふれて、とうとう、もう端っこのほうにあるスタックエリアまで到達してしまった。
ちげーよ低能。64ビットの端っこのスタックまで到達するわきゃねーだろ。wwww
これまでの情報から、そうじゃないことも推測できる。
476 :
デフォルトの名無しさん :2011/07/24(日) 22:19:57.48
>>423 おいこら。
「欠陥ロジック」の修正もちゃんと書けよ。www
・前スレから他人に対してしつこく粘着していたのと同等の「欠陥ロジック」が自分のコードにありました。それを修正しました。
Qの人気に嫉妬
>>475 ,
>>476 >ちげーよ低能。64ビットの端っこのスタックまで到達するわきゃねーだろ。
発端は、printf() の第一引数が 0x31313131313131.... で書きつぶされた、と踏んでいます。が、どのように書きつぶされたのかが見当がつきません。
main() が 0x40,0000 スタート
shared lib が 0x8.0000,0000 スタート
bp が 0x1000?
スタックが頭?
スタック, bss, const data, text/lib の順?
>>476 バッファオーバーラン=前スレから他人に対してしつこく粘着していたのと同等の「糞味噌欠陥ロジック」
で勘弁してください。
>>478 だからさ、
スタックが破壊されてリターンアドレスが腐ったら printf をコールする直前にジャンプするかもしれないでしょ
その時に引数として用意されるスタックの内容に何が入ってるか判ったもんじゃないんだからw
スタックが破壊されたらデバッガの出す情報はあんまり役に立たないんだよ
481 :
デフォルトの名無しさん :2011/07/24(日) 23:30:46.25
[1] 授業単元:配列 [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C [4] 期限:7/ 26 全く分かりません。どなたかお願いします。 次のプログラムにおいて,sumrangeは,M行N列の行列A = (a_{ij})(実際には, 大きさM×Nのint 型の2次元配列で表される)を引数として渡されると,各行の最大値から最小値を 引いた値の(全体での)和を返す関数である.(ここでは,C 言語の配列の添え字にならって,i, jは 0から始まると考えている) 例えば,M = 3, N = 4のとき,主プログラム中で,配列aの値に {7・5・-2・4 -3・11・-5・6 2・6・6・14}が入力された場合,0行目の最大値は7,最小値は-2であり,その差は7 - (-2) = 9, 1行目の最大値は11,最小値は-5であり,その差は11 - (-5) = 16, 2行目の最大値は14,最小値は2であり, その差は14 - 2 = 12 となるので,sumrangeは9 + 16 + 12 = 37を返す.関数sumrangeを,下記のプログラムの /* INSERT HERE */ の部分に挿入できるように書け.なお,行列の(i, j)成分は,2次元配列の[i][j]要素に 対応するものとせよ.また,配列中のデータは,-10000以上10000未満であると仮定してよい. #include <stdio.h> #define M (適当な正整数) #define N (適当な正整数) /* INSERT HERE */ int main(void) { int a[M][N]; /* ここで a[0][0]〜a[M-1][N-1] の値を入力する */ printf("sumrange = %2d\n", sumrange(a)); return 0; }
>>481 その書き方だと期限がわからないように見える
要するにスタックオーバーフロー(再帰呼び出しの設計ミス)なんじゃん。 とんでもないものプレゼントされた依頼者が可哀想 これってリアルな世界じゃ完全に損害賠償訴訟モノだね 事故を伴った場合はへたすりゃ業務上過失致死傷に 問われかねないね。
484 :
デフォルトの名無しさん :2011/07/24(日) 23:56:30.63
481です。期限は7/26です、宜しくお願いします。
>>483 >リアルな世界じゃ完全に損害賠償訴訟モノだね
事例があるのか?
>>485 荒らしはもう放置しなよ。
宿題スレという入門レベルに一日中粘着する奴が業務にかかわれるわけ無いじゃん。
>>483 数式処理プログラムに1000桁越える数字を入力する馬鹿なユーザーが損害賠償裁判起こしても負けるよ
運用が常識を逸脱してるって理由で
488 :
デフォルトの名無しさん :2011/07/25(月) 00:10:13.25
>>478 > 発端は、printf() の第一引数が 0x31313131313131.... で書きつぶされた、と踏んでいます。
ちげーよ、低能。
>>479 ちげーよ、低能。
> 入力値の妥当性チェックを手抜きした=前スレから他人に対してしつこく粘着していたのと同等の「糞味噌欠陥ロジック」
>>480 ちげーよ、もう一匹の低能。
>>399 のバックトレースは完璧。スタックは壊れてない。
「ちげーよ」をNG推奨
>>488 バッファオーバーランしてスタックが壊れていないとはこれ如何に?
そりゃまぁ printf() 以降のトレースは完璧だろうけどw
>>488 なんか見てるとよほどQZにかまって欲しいみたいだね。
スレがガシガシ流れちゃうから、ツイッターのIDとか教えあってやれば。
ズバリ不具合ある箇所と、改善案出せばいいのに
コードの隅々まで見てますよアッピールがすごすぎて、引くわ。
>>480 お邪魔らしいよ。二人の間に割り込まないようにしようよ。
>>483 今回は再帰呼び出しが深くなりすぎた、ということはなく、単に "111111111111111111111111111...." のようなデータに対応していなかった、ということになります。
>>413 r12 = 0x31313131,3131xx31 がいかにも。(いや、"00000000..." じゃなくてよかった。)
でも再帰呼び出しのリスクにも対処しないといけないでしょうね。
http://codepad.org/CVZ0npDo ある程度の深さに到達すると(1024レベル、おおよそ項数が 1024 個くらい)そこで打ち切ってエラーを表示して終わります。
>>490 バッファオーバーランでスタック壊れるって誰が決めたんだよ。低能
普通はスタックこわれるが、うんこが書いたうんこコードだからスタック壊れない。www
495 :
デフォルトの名無しさん :2011/07/25(月) 00:36:33.83
[3.3] 言語:C [4] 期限:2011/7/27 問題:「ここに処理が入る」というところの入力をお願いします。 #include <stdio.h> void print_bit(unsigned short int x); //プロトタイプ宣言 void left_rotate(unsigned short int *x, unsigned short int n); int main(){ unsigned short int usi; usi = 0xb85f ; print_bit(usi); print_bit(left_rotate2(&usi, 3)); return 0; //システムに値0を返す} void print_bit(unsigned short int x){ int length , i , mask ; mask = 1; length = sizeof(x) *8; mask =mask << (length -1); printf("数値%xのビット状態\n",x); for(i = 1;i<= length ; i++){ if(x & mask){ printf("1"); }else{ printf("0");} mask =mask >> 1; } printf("\n");} void left_rotate2(unsigned short int *x, unsigned short int n){ ここに処理が入る printf("%d ビット左回転しました\n",n);} 実行結果: 数値b85fのビット状態 1011100001011111 3ビット左回転しました 数値c2fdのビット状態 1100001011111101
496 :
デフォルトの名無しさん :2011/07/25(月) 00:37:05.86
497 :
デフォルトの名無しさん :2011/07/25(月) 00:38:35.72
ありがとうございます、助かりました!!!>492
>>494 厳密に言うと壊れない場合も有る
スタックが詰まれる方向によってはオーバーランした分が後から積まれたスタックに上書きする処理系も
有り得るからだ、当然、後ろに何も積まれて居なければ破壊されたとは呼ばないだろう
また、1〜3バイト程度のオーバーランならパディングの隙間に入って壊さない場合も有るだろう
しかしQzのケースはスタックを破壊してリターンアドレスが腐ったと断言して良いだろう
しかし千桁以上の数字を食わせてまでして人のコードにケチつけて楽しいのか?
虚しくならんか?
お邪魔みたいだからお暇するけどねw
>>494 >うんこが書いたうんこコード
static char buf[1024];
としたから。
500 :
デフォルトの名無しさん :2011/07/25(月) 00:43:38.88
>>498 バカ。うんこ同等のバカ。そのバカさは底辺派遣だろ。www
> バッファオーバーランでスタック壊れるって誰が決めたんだよ。低能
501 :
デフォルトの名無しさん :2011/07/25(月) 00:45:34.18
>>498 うんこはスタックが壊れないって気付いたようだぞ。www
理解し出来てねーのは底辺派遣。お前だけだ。www
>>499 良く見て無かったわ、スマン
それでヒープ側から押しよせてきたとか言ってたのね
ちょっと吊ってくる
プログラムスタックとリターンスタックが別々のアーキテクチャなんて 普通に存在している事もしらないQ さすが無職
>>503 6809? 68000?
最近の事情はしりませんが、x86 もセグメントレジスタ増えましたし、ありうることだと思います。
>6809 68000 >最近の事情 お前どれだけオッサンなんだよ
失礼、68000 はちゃいました。
>>506 68000にSSPとUSPがあった事もしらないバカ
>>507 USPはシステムコールが掛かると使われる
本当はこんなの必要ない物だったけどな
それに仮想記憶が使えないとか致命的だったろ
逆だ逆 SSPがスーパバイザモード、つまり特権モード用、USPが通常モード用だった あの時代にスタックだけでも保護モードがあったのは先進的だったが、残念ながら ユーザー領域にはセグメントの考え方がなく保護もされなかった
>>495 呼び出し側が unsigned short の戻り値を期待してるようなので型は変更させて貰った
でも引数が unsigned short* だから呼び出し側が間違ってると考える方が正しいのか微妙
この関数のプロトタイプ宣言を追加してね
unsigned short left_rotate2(unsigned short int *x, unsigned short int n)
{
unsigned long a;
a = ( *x << 16 ) + *x;
a = a << n;
a = a >> 16;
printf("%d ビット左回転しました\n",n);
return (unsigned short)a;
}
なんか美しくないな
511 :
デフォルトの名無しさん :2011/07/25(月) 01:55:42.13
[1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): 演習目的 @構造体やポインタを利用して、データ構造を設計することができる。 A構造体をreturn文で返却する関数を作ることができる。 Bポインタを扱うことができる。 課題: 2つのビット列(unsigned char型の2変数)を受け取り、 そのビット列のハミング距離を返す関数を作成しなさい。 また、ビットの並を表示する関数を作成しなさい。 ビット列x=(x0,x1,…,x7)とy=(y0,y1,…,y7)の ハミング距離dは次で定義される。 すなわち、異なるビットの個数である。 d=納i=0,7](xi^yi), xi,yi∈{0,1} 例えば、x=5,y=3のとき、x=(00000101),y=(00000011)であり、 ハミング距離はd=2となる。 01の並びを入力し、変数に代入する関数を作ってもよい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:7月27日 [5] その他の制限:特になし お手数ですが、どなたかよろしくお願いします!
512 :
奈緒 :2011/07/25(月) 02:31:43.68
>>514 こんな時間に起きてて今日は仕事は遅刻するのか?
>>488 rdata + bss + heap という古来からのセクション/セグメント順序を仮定します。text や stack はなんか別んところにあるみたいですね。
>>413 では malloc() 関係のところでストップしていますから‥‥‥シナリオを二つ。
(1)
main() を呼び出すスタートアップの扱うところとして malloc() に関する重要なグローバル変数があって、それが、たまたま
bss 内の static buff[1024] の先(下位)に位置していた。buff[] のオーバーフローにより書き換えてしまった。
※リンク順序からして、buff の先(下位)にcrt管轄の変数があるのだろうか?
(2)
main() を呼び出すスタートアップ crt はすでに malloc() を呼んで何がしかのヒープを所有していた。
buff[] のオーバーランが発生して、bss の後ろにある heap 一帯は 0x31313131... で埋め尽くされてしまった。
その後呼び出された printf() も malloc() を呼び出してメモリブロックを確保しようとし、すでに壊れたヒープ管理構造の一部からデータを拾ってきた、その内容が 0x313131... であった。
※ありそうなシナリオだが、crt の内容を入手しても確認する気力もない‥‥‥。
>>503 その昔、ds!=ss はやっかいでした。今もデータ・スタック・ヒープは同一空間にあると思います。
手持ちの 32 bit 環境の gcc -S の結果をながめていましたが、sp, bp の動きやインデックス修飾のやりかたをみるかぎり、関数の引数、sp, bp, 関数ローカル変数の置き位置は ms-dos と変わりませんね。
たぶん一つのスタックにこれら全部が押し込められています。
64 bit 環境はよくわかりませんが。
>>517 歩いて 3 分だから‥‥‥ 2 時間くらいは寝れるでしょう。おやすみなさい。
>>470 作ろうと思ったけど与えられるデータ10*10個どう扱えば良いか(例えばファイルから読み込み?)
わからんからその辺ちゃんとしないと誰もやってくれないかと。言わんとしてることは構造体ネストして作るんだろうけどねー
2分検索はググればわかると思うんだけどまずデータをソートしてその中央値を見つける。
探したいデータが中央値より大きいなら中央値より小さい数は探さなくていい。逆も然りで検索量を減らす事ができる。
って考えの検索法。
データが10*10個とか、構造体とか、どっから出てくるんだろう
QZは今熟睡中なんだろな
>>523 >どちらも10個の要素を持つ配列であり、それぞれは10人の身長と氏名のデータとして持つ。
ここじゃね?
問題文がおかしい気がする
身長をデータとして持つ10個の要素からなる配列Nr[10] 氏名をデータとして持つ10個の要素からなる配列*Na[10]
int Nr[10]; char Na[10][64]; // or char *Na[10]; このように読み取れないなら、日本語の勉強しなおせ。
>>511 例えば、x=5,y=3のとき、x=(00000101),y=(00000011)だと、
ハミング距離はd=7にならないかな。
529 :
528 :2011/07/25(月) 09:06:08.43
ごめん、論理的排他和か。2です。すみません。
いいえ、排他的論理和です。
531 :
デフォルトの名無しさん :2011/07/25(月) 09:09:14.77
>>200 遅くなりました。
問題文その他から判断してみましたがはっきりと明示されてはいませんでした。
ですが、おそらくランダムに変える必要はないと思います。
ありがとうございました!
532 :
528 :2011/07/25(月) 09:28:03.45
534 :
デフォルトの名無しさん :2011/07/25(月) 10:03:40.43
>>200 プログラムコンパイルは通ったんですが、実行できませんでした。
コンソールから引数指定する必要はないですよね?
>>509 >あの時代にスタックだけでも保護モードがあったのは先進的だったが、残念ながら
>ユーザー領域にはセグメントの考え方がなく保護もされなかった
ユーザーモードとスーパーバイザモードではメモリーアクセス時のファンクション
コードが違うから、適切な外部回路があれば、保護することができる。
逆に、スタックも通常のメモリーアクセスだから適切な外部回路がないと保護もさ
れない。
よく理解もせずに、適当なこと書くなよ。
>>534 /*** この部分を自分で書く ***/
この記述があるところだけ書き加えました。
コンソールから引数指定する場合は
mainを手直しすると良いのではないかな?
537 :
デフォルトの名無しさん :2011/07/25(月) 10:41:23.01
>>536 引数指定はする必要はないはずなんですが文字化けエラーが起こってしまい
result.datが生成できていない感じです。
>>537 実行したときに、
><< 世代数 : 1 >>
>平均適応度 : 4.400000
>最大適応度 : 7.000000
このような表示が出てきていませんか?
それと同じ内容がファイルに出力されるはずですが。
出ていない場合、表示内容を教えて下さい。
539 :
奈緒 :2011/07/25(月) 13:22:39.57
ほんとにありがとうございます!>514・515
540 :
455 :2011/07/25(月) 15:03:45.70
昨日こちらでお世話になった
>>440 です。
正しい課題のソースが手に入ったのでまたこちらに来ました。
以下が正しいソースコードになります。
(おそらくこちらなら皆さんが指摘してくださったロジック的な問題などは無いかと思います)
http://ideone.com/0M3Vi これをC言語に変換しろというのが課題です。
何卒宜しくお願いいたします。
>>540 [3.2] 学習用C言語開発環境
これ何使ってる?
542 :
455 :2011/07/25(月) 15:23:36.53
>>541 いつも使っているエディタ+コンパイラのことでいいんですよね?
そのままの名前のものを使っています…
Verが0.0.9.0です。
544 :
455 :2011/07/25(月) 15:44:22.30
>>543 ありがとうございます!助かりました!
少しお尋ねしたいのですが
・ #define RAND(n) (rand() / (RAND_MAX / (n) + 1)) はどういう意味なのでしょうか?
この課題の提出の際に口頭で問題が出されるので
念のために教えていただけると幸いです
>>544 > #define RAND(n) (rand() / (RAND_MAX / (n) + 1)) はどういう意味なのでしょうか?
●#defineの意味を聞いている場合
マクロといって、繰り返し出現する記述を一回で済ませる記述法。習って無いなら。
13 int n = rand() / (RAND_MAX / 11);
15 n = rand() / RAND_MAX / 11;
としてもよい。
●式の意味を聞いている場合
rand(0〜RAND_MAXを返す)が返す乱数の下位ビットはランダム性がとても悪い。
なので上位ビットを使うためにこのようにするのが定石。
http://www.kouno.jp/home/c_faq/c13.htmlの13.16読んで理解できなければ 、
そこに書いてあるように
#define RAND(n) (rand() % (n))
としてもよい。
>>544 括弧が抜けた
> 15 n = rand() / (RAND_MAX / 11);
すまん
>>545-546 は、ウソだ。
13 int n = rand() / (RAND_MAX / 10 + 1);
15 n = rand() / (RAND_MAX / 10 + 1);
が正しい。
549 :
470 :2011/07/25(月) 18:25:34.04
>>470 です 変な誤解を与えるような書き方をしてすみまません
例として以下のような
Nr Na
0 120 taro
1 145 tinta
2 以下略 以下略
3
4
5
6
7
8
9
とソートして二分検索で求めたいです
550 :
470 :2011/07/25(月) 18:26:36.81
Nr Na 0 120 taro 1 145 tinta 2 以下略 以下略 3 4 5 6 7 8 9 ずれましたすみません
551 :
455 :2011/07/25(月) 18:28:27.43
>>547 お返事が遅くなってすみません、回答ありがとうございました
この課題に対して口頭で問題が出されるのでその対策をしたいと思います。
もしまたコードについて解ら無くなった時はこちらに訪れますので
ご迷惑かもしれませんが何卒宜しくお願いいたします。
>>520 ありがとうございます!
私の勉強不足です
もっと勉強して理解できるようになります
>>540 俺が昨日の最初に書いたコードと大きな違いは無いよ
・メッセージが少し違う
・隣に地雷が有るマスを踏んだら『オットット危ない』のメッセージが出る
なので俺はパス
554 :
デフォルトの名無しさん :2011/07/25(月) 19:25:25.78
[1] ネットワークシステム(TCP) [2] 問題文(含コード&リンク): チャットシステムサンプルを用いてパスワード設定(初めて入室したクライアントに4文字でパスワードを設定させ、 以降に入るクライアントにパス入力を求める。パスが正しければ接続。パスが正しくなければ接続せずに終了)と自身の発言時にecho。 また、発言時にIPアドレスを標準出力させる。 ex. 211.9.36.148:こんな感じで 211.9.36.148:こんな感じで 172.31.10.96:出力されます
555 :
554 :2011/07/25(月) 19:30:27.99
556 :
554 :2011/07/25(月) 19:35:39.07
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):4つの頂点座標の引数を与えると線の長さを返す関数を作成して下さい。 計算された長さはdouble型で返されるものとする。 [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C++ [4] 期限:7/29 [5]その他制限:次の計算関数を用いるものとする double sqrt(double n); double pow(double x,double y); よろしくお願いします
>>470 ,549,550
>> 533 に回答してる人が居るよ。
>>557 >4つの頂点座標の引数
点が4つあるんじゃなくて、例えばx1,y1,x2,y2みたいに、
2点の座標値が4つ渡されるということだよね?
じゃないとできないよね。んでxとy取って3平方の定理やらなんやら使うと。
561 :
470 :2011/07/25(月) 20:10:50.91
562 :
496 :2011/07/25(月) 20:28:09.35
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):選択ソートの交換、比較回数を表示するプログラム
[3] 言語:C
[4] 期限:7/26
http://ideone.com/CDOGT エラーが何を指しているのかわからず困っています
>>562 selection_sortのプロトタイプ宣言がない
>>565 >4つの頂点座標の引数を与えると線の長さを返す関数を作成して下さい。
>計算された長さはdouble型で返されるものとする。
だから、関数にしてあげないと
[2] 問題文(含コード&リンク): 以下の性能を持つ名簿プログラムを作成せよ 氏名、年齢、住所、電話番号、メールアドレス、郵便番号を持つ構造体を使用する 一覧を表示可能である 作成したデータはファイルとして保存、読み込みができる 構造体の追加、削除が可能である 任意の項目を修正可能である 任意の項目をキーとして検索、ソート(昇順・降順)が可能である [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 7/28 お手数ですがよろしくお願いします
二乗するんだからabsいらんだろ っていうか、double型の変数をdoubleにキャストするってなんの冗談?
absいらないね。すまん・・
>>563 見てもらえばわかるけど最初diff〜はintで作ってて後からdoubleにしたから消し忘れた(´Д`)
馬鹿なんだろ
575 :
デフォルトの名無しさん :2011/07/25(月) 21:18:10.60
>>538 なぜかさっきはできなくて改めてやったらresult.datが自動生成されるようになりました。
しかしコンソール上では文字化けが起こってしまい、こんな感じに表示されます。
�̐� : 5
���`�� : 10 bit
�ˑR�ψٗ� : 0.100000
> pow((double)diff_x, 2) プロトタイプあるからdoubleに変換されるのに。キャスト大好き底辺派遣だな。 第2引数の2はなんでキャストしないんだ? www
>>575 実行環境の漢字コードを調べて、
それにソースを変換してから、
コンパイル・実行してみて
579 :
455 :2011/07/25(月) 21:33:03.21
度々訪れてすみません。
http://ideone.com/Vglan で書いていただいたコードの
srand(time(NULL)); を学校で扱ったことがまだないのですが
何か違うものに置き換える事などは可能なのでしょうか?…
モンテカルロ法を使って円周率を求めるものなんですが指定されたプログラム(下に載せました)に (1)全試行回数と結果を表示する間隔をscanf()で読みそれにしたがって処理が進むようにする。 (2)各途中経過で求めたπの近似値のうち最もπの真値(=3.14159)に近い値とその時の試行回数を最後に表示させる。 という2つの点を加えて改良しなければならないのですがどなたか教えていただけませんか?
#include<stdio.h> #include<stdlib.h> int main(){ int i,CircleCount=0; float x,y; for(i=1;i<=100000;i++){ x=(double)rand()/(double)0x7fff; y=(double)rand()/(double)0x7fff; if(x*x+y*y<=1.0) CircleCount++; if(i%10000==0) printf(“%7d回 n=%f\n”,i,4.0*CircleCount/(float)i); } return(0); } c言語初心者で全く分かりません。 なのでココに載せたものを利用して ソースプログラムを書いていただけると幸いです。
質問用のテンプレ使えよ
>>579 srandは乱数のタネ(初期値)を設定する、randと組みだからそれを使わないという方法は無い。
実行の度に異なるタネを与えないと、毎回同じ場所に地雷が配置されてしまう。
タネとしてtimeで現在時刻を取得している。
選択肢:
0 そのままtimeを使う
1 キーボードからタネを入力させる。(入力したタネで配置が決まってしまうのでゲームにならない)
2 プログラムの起動時刻から最初の入力までの時間をタネにする。多分習っていない
3 プロセス番号(getpid())。多分習っていない。
4 /dev/urandomを読む。多分習っていない。
>>584 5 初期化していない変数から rand seed を作る
初期化していない変数のランダム性って、どの程度期待していいの?w
バッファオーバーフローを応用してseedを設定してやればいいんじゃね
>>587 同じになる?
#include<stdio.h>
int main(void)
{
unsigned long seed=0UL;
{
unsigned long arr[1024];
int i;
for(i=0;i<1024;i++) seed^=arr[i];
}
printf("%lu\n", seed);
return 0;
}
591 :
455 :2011/07/25(月) 22:09:12.89
>>584 ありがとうございます、
>>584 さんの仰るとおり
見事にどれも習ってないですね、このまま使う方が良さそうです。
いかに自分が初歩しか習ってないかを今ひしひしと実感しています…
RANDと組であるとの事なのですが、は何を意味する関数(?)なのでしょうか。
>>590 VCのデバッグビルドならフフフが入ってるから seed は 0 になる気がする
更新が頻繁な2chの掲示板の書き込みバイト数を種にする
>>554 プログラムの動作確認した時に -s で動かしたホストと -c で動かしたホストは同じはずだよ
main() の中で -c の場合、gethostbyname( "localhost" ); で得たIPを用いて接続してるから、
サーバーIP = クライアントIPが前提となっている
つまりこのプログラムにおいては『すべてサーバーのIPが出力されてしまいます』は正常な動作だ
課題ではないのですが躓いた点があるので教えてください。 #include <stdio.h> int main(void) { int i, total = 0; for(i = 1; i <= 10; i++) { total += i; } printf("total = %d/n",total); return 0; } 教科書に載っていた問題ですが、 どうしてこれの計算結果が55になるのかわかりません。 1を10回以下足しても55にはなりませんよね 恐らく自分の解釈が間違っているのだと思うのですが 教科書にはそれ以上の記述がないのでわかりません。 誰か噛み砕いて教えてください。
>>596 total=1+2+3+4+5+6+7+8+9+10;
iの値はforのループ一回回る毎に1増えている。
i++がミソ。インクリメントでググれ
599 :
デフォルトの名無しさん :2011/07/25(月) 23:04:57.28
[3.3] 言語:C [4] 期限:2011/7/27 問題:「ここに処理が入る」というところの入力をお願いします。void型の関数としてleft_rotate2の入力お願いします #include <stdio.h> void print_bit(unsigned short int x); //プロトタイプ宣言 void left_rotate2(unsigned short int *x, unsigned short int n); int main(){ unsigned short int usi; usi = 0xb85f ; print_bit(usi); print_bit(left_rotate2(&usi, 3)); return 0; //システムに値0を返す} void print_bit(unsigned short int x){ int length , i , mask ; mask = 1; length = sizeof(x) *8; mask =mask << (length -1); printf("数値%xのビット状態\n",x); for(i = 1;i<= length ; i++){ if(x & mask){ printf("1"); }else{ printf("0");} mask =mask >> 1; } printf("\n");} void left_rotate2(unsigned short int *x, unsigned short int n){ ここに処理が入る printf("%d ビット左回転しました\n",n);} 実行結果: 数値b85fのビット状態 1011100001011111 3ビット左回転しました 数値c2fdのビット状態 1100001011111101
教科書にfor(a;b;c)のa, b, cのそれぞれの意味について書いてないとは考えにくい
>>596 がアホなだけでは?
>>591 randは疑似乱数を発生する。疑似乱数とは乱数のように見えるけれど、
実際は特定のアルゴリズムで計算される数列。
それの初期値を設定するのがsrand
>>599 >>510 で書いたぞ
その例題の『ここに処理が入る』だけを書いても動かないぞ
void 型の left_rotate2() の戻り値を print_bit() の引数として渡してるから
出題者の程度が知れる問題だなぁ
603 :
デフォルトの名無しさん :2011/07/25(月) 23:24:29.74
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/DSBxwIe8 上記のプログラムは数値を入れるとval[]の配列に。演算子を入れるとop[]の配列に
入れられます。これを利用して四則演算が出来る電卓を作成していただけますか?
*計算の優先順位(÷が×より前にあれば、数値を移動する処理は出来ています。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (
[4] 期限: (2011年7月26日12:00まで)
[5] その他の制限:今の処理は8/3*3enterkeyで8*3/3になります。
enterkeyで計算結果を表示できるようにお願いします。
あと、if文、for文だけで行えますか?宜しくお願いします。
電卓問題多いな
電車問題に見えてドキッとした
同じ人じゃないの?
>>608 度々すみません。
同じ人です。今日の講習で出された宿題です。
たぶん、今回で電卓の宿題は終わると思います。宜しくお願いします。
>>609 次の日なればヒントをくれるんですね。あはは。
今回
>>610 はかなり題意に沿ったものとなっているはず、です。
613 :
デフォルトの名無しさん :2011/07/26(火) 00:13:31.20
>>577 nkfコマンドでunicode(UTF-8)にしてみましたが改善されませんでした。
一応プログラム敵には何の問題もないのですがもやもやしています。
調べて見ましたが他の問題候補がありませんでした。
どうしたもんでしょう?
eucじゃなくて?
>>613 telnetでホストに接続してるんだよね?
まさかと思うけど、使っているtelnetソフトの
漢字コードの設定はできてる?
÷が×より前にあれば、数値を移動するってどういう意味があるの
>>616 あえてint型で宣言してますので最初に割り算を行うと、割りきれない値がくると結果がおかしくなる。
8/3*3=8だが、わり算を先に行うと6になってしまう。
ですので割り算を最後に行わなければならない。
逆にすればつながる
>>618 すみません。8/3*3を並び変えないで行うと8/3=2.6666で端数が切られ、2*3=6になりますので、8*3/3に並び変えて24/3=8で行うイメージらしいです。
>>620 以下の結果はどうすれば良い?
1/2
1/2+1/2
1/2+1/3
623 :
デフォルトの名無しさん :2011/07/26(火) 00:54:42.26
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
n個のデータを降順に並び変える関数を作成しなさい。
ただし、個数nを先に入力し、必要なメモリ領域を関数malloc()を用いて確保すること。
すなわち、配列による宣言はせずに、ポインタで宣言する。
また、2つの変数の値を入れ替える関数swap()も作成すること。
http://codepad.org/hZCN4vEh 上の課題を提出したのですが、再提出を要求されました。
コメントに対する直しがわかる方よろしくお願いします。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:7/28
[5] その他の制限:特になし
どなたか、よろしくお願いします。
626 :
デフォルトの名無しさん :2011/07/26(火) 02:07:28.95
>>623 ああ、かわいそうに。
QZっていうのはここに巣食ってるクズだから、そんなクズが作ったの
提出したら再提出になっちまうのもあたりまえ。
>>624 もカスだから、そのまま提出したらダメ食らうよ。
でも、クズのコードなおす気はないので、悪いのに引っかかったと思って、
自分でなおす事を考えた方が良い。
[1] 授業単元:プログラミング演習 1 [2] 問題文(含コード&リンク) 符号無し整数xのposビット目を、1にした値を返す関数sec,0にした値を返す関数reset,反転した値を返す関数inverse unsigned set( unsigned x, int pos) { /* ••• */ } unsigned reset ( unsigned x, int pos) { /* ••• */ } unsigned inverse ( unsigned x, int pos) { /* ••• */ } を作成せよ。 <実行例> 非負の整数を入力してください:0x0B セットしたいポジションを入力してください:3 Original bits: 00000000000000000000000000001011 set 1 to pos: 00000000000000000000000000001011 reset 0 to pos: 00000000000000000000000000000011 inverse the pos: 00000000000000000000000000000011 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:7月27日 よろしくお願いします。
>>626 そうですか。すみません。
よろしければ、
>>623 のために直してやっていただけませんか?
↑スレ違い
632 :
デフォルトの名無しさん :2011/07/26(火) 04:33:24.00
>>615 いえ、WinとLinuxデュアルブートにしてるのでtelnet接続ではないです。
ここはCの宿題坂なのでこれ以上はあきらめときます。
>>627 unsigned set(unsigned x, int pos) { return x | 1 << pos; }
unsigned reset(unsigned x, int pos) { return x & ~(1 << pos); }
unsigned inverse(unsigned x, int pos) { return x ^ 1 << pos; }
634 :
デフォルトの名無しさん :2011/07/26(火) 05:18:43.40
>>615 いえ、WinとLinuxデュアルブートにしてるのでtelnet接続ではないです。
ここはCの宿題坂なのでこれ以上はあきらめときます。
635 :
デフォルトの名無しさん :2011/07/26(火) 05:20:57.57
>>615 void show_gene(int t, int gene[POP_SIZE][G_LENGTH],double fitness[POP_SIZE],FILE *fp)
関数で個体の値・遺伝子の表示はしなくても問題ないのでしょうか?
>>622 1/2 = (int)0.5 = 0
1/2+1/2 = 2/2 = 1
1/2+1/3 = (3+2)/6 = (int)0.833 = 0
でいいんでない?
分数を読み取って分母を合わせろというのか ここで質問するような人には確実にできない宿題だな
638 :
デフォルトの名無しさん :2011/07/26(火) 08:41:30.09
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): 4つの数字を入力して四則演算の組み合わせを考えて 10になる数式を表示せよ。10になる数式がなければ"NG"と表示。 入力できる数値は1〜9までとする。 例) 入:1 2 3 4 答え:2×3+1×4 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2011年07月26日18:00まで [5]文の作り方はif文とfor文で出来ればお願いします。 あと、値の入力はscanfでお願いします。 宜しくお願いします。
639 :
ディ :2011/07/26(火) 08:54:30.01
>>622 1/2 = 0
1/2+1/2 = 0 + 0 = 0
1/2+1/3 = 0 + 0 = 0
でいいんでない?
8/3 が 2 だということなら。
因子の単位で / の演算優先順位を下げるのか (
>>639 )
項の単位で / の演算法を変えるのか (
>>636 )
>>639 つまり
1/2+1/2=0
1/2*2=1
ということか
>>624 その意味には興味が有るので教えて欲しい
>>638 1199や1158もできるようにすんの?
645 :
ディ :2011/07/26(火) 09:57:53.19
分数の足し算なら小学生で習ったし、8÷3=2.666 と習ったが、 <int>(8÷3)=2 は大学レベル。 こうゆう時学歴が物を言うと。
>>644 できないのはNG表示で良いです。
説明も出来なければならないので考え方も教えて頂けますか?
宜しくお願いします。
scanfで1234と数字を入れてエンターキーを押したら配列num[0]からnum[3]までに num[0]=1 num[1]=2 num[2]=3 num[3]=4と入るプログラムを教えて頂けますか?
648 :
千夏 :2011/07/26(火) 11:59:12.15
[1]C言語課題(夏休み期間中) [2]M,Nを与えられた自然数(キーボードから読み込む)とする。MxNのサイズの迷路を作り表示する。 ただし壁は*、道は+であらわすこと 表示例:M=12 N=5 *+********** *+**+++++++* *+****+***+* *++++++***++ ************ [3]Windows Vista・Visual studio 2008・C言語 [4] 8/31まで [5]当然だが、正解経路は一つに決まること お願いします
>>649 電気回路の問題なんて専門的(高校物理程度かな)過ぎてここのドカタじゃ解けない
じゃないか
654 :
デフォルトの名無しさん :2011/07/26(火) 18:03:36.21
問題の解法自体はぐぐればでてくるけどレポートはめどいな まあ、単位落とそうが知ったこっちゃ無いし
>>648 そのサイズで作り得る全ての迷路をあげる問題?
期限が延びましたのでお願いいたします。
[2] 問題文(含コード&リンク): 4つの数字を入力して四則演算の組み合わせを考えて
10になる数式を表示せよ。10になる数式がなければ"NG"と表示。
入力できる数値は1〜9までとする。
例) 入:1 2 3 4 答え:2×3+1×4
[3.1] OS: WindowsXP
[3.2] gcc
[3.3] 言語: C [4] 期限:[2011年07月27日16:00まで
[5]小町演算の作り方はif文とfor文で出来ればお願いします。
http://codepad.org/hBuUU9YQ ←は値を取り出すだけのプログラムでです。
このmain関数内だけに追加お願いします
>>656 本当に何度もすみません。皆さんの力を借りないと解けないような問題です。宜しくお願いします。
658 :
デフォルトの名無しさん :2011/07/26(火) 19:30:20.89
助けてください。5つあります。 明日提出期限です。 入力した数の階乗を計算するプログラムを作れ。 nの階乗とは、n!と書いて、次のような計算をするものである。 n! = n × (n – 1) × (n – 2) × … × 2 × 1 ヒント)関数 fact(n)を n!を計算するプログラムとする。 この時、 n! = n × (n – 1)! だから、fact(n) を計算するには、fact(n-1)を計算してから、nをかければ良い。
659 :
ディ :2011/07/26(火) 19:52:09.80
>>658 コンパイラは何を使うのか? C++ か?
660 :
デフォルトの名無しさん :2011/07/26(火) 19:54:50.89
>>659 cです。 すいません。点プレ通りじゃなくて 明日提出なので焦って舞うs。
661 :
デフォルトの名無しさん :2011/07/26(火) 19:55:24.59
入力された数を16進数で表示するプログラムを作れ。但し、文字(数字やアルファベット)を表示するのに関数 putchar()を使うこと。 (例)hexという名前のプログラムを作り、217を入力した場合に以下のようになる。 Q:\hello> hex Input? 217 Kotae = D9 (注) 217 == 13*16 + 9 Q:\hello> (注意)この例でInput? や Kotae = の部分は入力したものではなく、プログラムが表示した部分である。これらは、出来るだけ分かりやすいものにすることが望ましい。 cでお願いします。
662 :
デフォルトの名無しさん :2011/07/26(火) 19:57:46.00
次の式を計算するプログラムを作れ。 Sum = 12 + 22 + ... + N2 (注意) Nの値は、キーボードから入力できるようにすること。 Q:\prog> calcsum (注) この例ではプログラムの名前をcalcsumとした。 Input N? 10 Nの値として10を入力する Sum is 385 12 + 22 + 32 + 42 + 52 + 62 + 72 + 82 + 92 + 102 を計算すると385になる。
663 :
デフォルトの名無しさん :2011/07/26(火) 20:02:25.88
[1]C言語単位認定課題 [2] 課題8-2. 配列に順番に入力した数字を代入するプログラムを作れ。 すなわち、例えば以下のようなものを作れ。 1度目にinput_number()で入力した数を、numbers[0]に代入し、 2度目にinput_number()で入力した数を、numbers[1]に代入し、 … n 度目にinput_number()で入力した数を、numbers[n-1]に代入する。 input_number()という関数は、自分で定義するように [3]Windows Vista・cygwin1.7・C言語 [4]今夜まで お願いします、
どういう計算したら385になるんだろう
>>656 お願いします。本当に切羽詰まってます。
>>664 多分n^2という書き方が分からなくてn2とか書いちゃったんだろ
>>655 与えられた迷路を脱出する問題じゃないかな。
> Sum is 385 12 + 22 + 32 + 42 + 52 + 62 + 72 + 82 + 92 + 102 を計算すると385になる。 杏仁豆腐 杏仁豆腐 この白く甘いスイーツが 豆腐だと 今の僕には理解できない
671 :
デフォルトの名無しさん :2011/07/26(火) 20:48:50.69
次の式を計算するプログラムを作れ。 Sum = 12 + 22 + ... + N2 (注意) Nの値は、キーボードから入力できるようにすること。 すいません 385計算ミスでした。 相変わらずjk巷のかわいいハァハァ
初期値がわからん 初期値2でNまで10ずつ足せば良いの?
Σ(i*10+2) | i=1〜N というふに読めるが… はて
676 :
デフォルトの名無しさん :2011/07/26(火) 21:22:29.56
デフォルトの名無しさん殿 誠にかたじけない。 できればかわいい女の子のm字開脚の写真を貼りたいのだが、拙者持ってない。 本当にありがとう。
>>656 >> 638向けに作ってたやつです。
好きに加工して下さい。
>>679 作成して頂いて誠に申し訳ありませんが、ポインタと別の関数を作るのは習っておりませんのでmain関数内だけで行う事は可能でしょうか?
本当に申し訳ありません。
682 :
デフォルトの名無しさん :2011/07/26(火) 22:03:31.98
[1] 授業単元:C言語演習 [2] 問題文:引数argvに以下の3種類がある。 組み合わせて使用した場合にNGを出力しなさい。 例) 0 ... 指定なし 1 ... 指定あり 引数 | --a | --b | --c | -----+-----+-----+-----+------ | 0 | 0 | 0 | OK | 0 | 0 | 1 | OK | 0 | 1 | 0 | OK | 0 | 1 | 1 | NG | 1 | 0 | 0 | OK | 1 | 0 | 1 | NG | 1 | 1 | 0 | NG | 1 | 1 | 1 | NG [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:07/27 10:00まで [5] 特になし
683 :
デフォルトの名無しさん :2011/07/26(火) 22:20:06.42
>>676 先ほどの者です。 課題は通年なので夏開けでした。 急いで作ってくれた方申し訳ないです。
本当にありがとうございました。
685 :
デフォルトの名無しさん :2011/07/26(火) 22:36:50.03
>>684 わざわざありがとうございます。
せっかくコーディングしていただいて申し訳ないですが、
もし可能であればビット演算を利用していただけないでしょうか?
すいません typedef struct{ R:符号なし整数8ビット G:〃 B:〃 }COLOR; の構造体の作ってください おねがいします
ここまで俺の自演。
>>693 ありがとうございます
[1] 授業単元:-
[2] 問題文(含コード&リンク):次の構造体を完成して下さい
typedef struct{
R:符号なし整数8ビット
G:〃
B:〃
}COLOR;
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C++
[4] 期限:7/27
[5]その他制限:なし
おねがいします!!
typedef struct {unsigned short int R, G, B;} COLOR;
699 :
デフォルトの名無しさん :2011/07/26(火) 23:22:54.17
>>682 について内容が不足していたので再投稿します。
[1] 授業単元:C言語演習
[2] 問題文:引数argvに以下の3種類がある。
組み合わせて使用した場合にNGを出力しなさい。
例)
0 ... 指定なし
1 ... 指定あり
引数 | --a | --b | --c |
-----+-----+-----+-----+------
| 0 | 0 | 0 | OK
| 0 | 0 | 1 | OK
| 0 | 1 | 0 | OK
| 0 | 1 | 1 | NG
| 1 | 0 | 0 | OK
| 1 | 0 | 1 | NG
| 1 | 1 | 0 | NG
| 1 | 1 | 1 | NG
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:07/27 15:00まで
[5] フラグ・判定にビット演算を使用してください。
すいません コンパイルしたら できないんですが…
>>700 typedef struct {unsigned int R:8;
unsigned int G:8;
unsigned int B8;} COLOR;
705 :
デフォルトの名無しさん :2011/07/27(水) 00:04:16.24
>>704 日本語が読めない人は回答しないでいいです。
言うことももっともだが、
>>704 の時点では00:05くらいに生成されたURLを貼ることはできないぜ
嘘つくと信用なくすよ
>>707 テスト用にcloneで作って修正した新しい方を閉じて古い方を間違って貼ったから再度cloneして作り直した
>>705 はビット演算してないと勘違いしてんだろ その部分は
>>704 の時点から変わってない
「貼り間違えた」のどこに矛盾があるんだ
お願いします。 [1] 授業単元: 課題 [2] 問題文 1. ランダムに決めた10個の整数(0〜50)を要素とする配列Aと配列Bを用意する。 2. 配列Aと配列Bに共通する整数を表示する。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C [4] 期限: なし [5] 大学2年生レベル ・総当りで調べる ・配列を昇順にソートしてから調べる この2つの方法が思いつきました。 要素の数が増えた場合も考慮して、 さらに速い方法があれば教えてください。
>>707 だってドカタのプだもん
嘘吐きや日本語が読めないはドカタのプには当たり前です
>>710 A,Bがそれぞれの中で重複無しなら、cnt[A[i]]++;cnt[B[i]]++;
715 :
デフォルトの名無しさん :2011/07/27(水) 10:45:34.37
[1] 授業単元:C言語 [2] 問題文:1358をを並び替えた数字を24通り表示させるプログラムを完成させない。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:07/27 11:30まで [5] sacnfで入れた4文字を並び替えるようにお願いします。
>>715 >投稿日:2011/07/27(水) 10:45:34.37
>[4] 期限:07/27 11:30まで
>>715 #include <stdio.h>
int main()
{
int uk[4];
int i, j, k, p;
scanf("%d%d%d%d", &uk[0], &uk[1], &uk[2], &uk[3]);
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (i == j)
continue;
for (k = 0; k < 4; k++) {
if (i == k || j == k)
continue;
for (p = 0; p < 4; p++) {
if (i == p || j == p || k == p)
continue;
printf("%d%d%d%d\n", uk[i], uk[j], uk[k], uk[p]);
}
}
}
}
return 0;
}
入力は 1 3 5 8のようになります
1358のように入力させる仕様がいいならそうする
無駄多すぎだろw
720 :
718 :2011/07/27(水) 11:44:49.74
>>719 俺もそんな気がするがどうすれば良いのか判らん
美しいコードを見せてくれ
721 :
710 :2011/07/27(水) 11:49:26.04
>>720 美しいかどうかはさておき自分はこんな風になった
期限すぎてる時点で駄目だけどw
#include <stdio.h>
#define N 4
void printNumber( int *pd, int *ps, int n )
{
int i, j, k, d[ N ];
if( ! n ) {
for( i=0; i<N; ++i )
printf( "%d ", pd[ i ] );
printf( "\n" );
return;
}
for( i=0; i<n; ++i ) {
pd[ N-n ] = ps[ i ];
k = 0;
for( j=0; j<n; ++j )
if( j != i )
d[ k++ ] = ps[ j ];
printNumber( pd, d, n-1 );
}
}
int main()
{
int i, d[ N ], t[ N ];
for( i=0; i<N;++i )
scanf( "%d", & d[ i ] );
printNumber( t, d, N );
return 0;
}
724 :
718 :2011/07/27(水) 15:38:34.19
i!=jは外のループで処理したほうがいいだろ
726 :
デフォルトの名無しさん :2011/07/27(水) 15:52:38.71
[1] 授業単元:プログラミング演習
[2] 問題文:char str[4]="ABCD"
上記の変数strには"A" "B" "C" "D"がstrの[0]〜[3]が入っています。
この文字を三つ取り出して文字が同じになってもいいので組み合わせを表示
させるプログラムを教えてください。
例:
ABC
ACB
ADC
AAA
AAB
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:07/27 18:00まで
[5] さっき、数字を並び替えるプログラムを学んだのでそれの応用問題だと思います。
以下に今日習ったソースコードを追加します。
http://codepad.org/ye1dWylL 習い始めて2ヶ月ですので、上記のソースに近いイメージでお願いします。
2時間でって、宿題じゃなく、今日の居残り課題だろ
>>725 処理的にはそうだが美しさ的にはネストが一つ深くなるから嫌だ
731 :
デフォルトの名無しさん :2011/07/27(水) 16:41:34.80
>>726 すみません。提出することが出来ました。
明日に行う課題を出されました。
出来れば教えていただけますか?
[1] 授業単元:C言語プログラミング
[2] 問題文:4つの数値をを入力して結果が20になる数式(+,-,*,/)を全て表示させる.
()は考えない。
組み合わせがない場合はエラー表示とする。入力できる数値は一桁のみとする。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:07/28 09:00まで
[5]数値を並び替える
http://codepad.org/wXuq003F 演算子を三つ取り出す
http://codepad.org/cLkTFiYX 上記を今日、習ったのでコレを使って行いたいです。宜しくお願いします。
小町算最近このスレで出たと思うんだけど
>>734 >>712 でも構いませんが、習った内容を生かさないとコピペだと思われるので評価に響くので宜しくお願いします。本当に申し訳ありません。
大丈夫 採点する人はたいていここ見てるから
>>735 >コピペだと思われるので
コピペなのになに言ってんだか
なんでばれるんだ?
>>739 教えてるのを生かして作成しないと疑われるからです。
出題者がここを見てる?ならここで聞いたら意味無いような
>>740 糞コードの書き方を教えられても困ります。
745 :
デフォルトの名無しさん :2011/07/27(水) 19:20:44.58
[1] 授業単元:情報処理概論 [2] 問題文(含コード&リンク):0 が入力されるまで正整数を読み込み、最大値、(最後の0 を除いた)最小値、全入力数値の平均(最 後の0 を含めず) を出力するプログラムを作りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 7 /28 13:30まで [5] その他の制限: forあるいはwhileを使用すると思われます よろしくお願いします。
>>744 >組み合わせがない場合はエラー表示とする。
これ入れてあげて
お前らってブサイクだなぁ
褒めるなよ
てれるなよ
[1] 授業単元: プログラム [2] 問題文 構造体TACを作成しなさい メンバー、変数は以下のとおりである データ 変数名 型 輪の数 ver 整数型 輪の色 r_color 構造体COLOR 背景色 b_color 構造体COLOR 座標 x 整数 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C [4] 期限: なし [5] なし お願いします
757 :
548 :2011/07/27(水) 23:28:41.03
759 :
754 :2011/07/27(水) 23:42:31.37
いいからはやく
>>759 あせるなよ。作る人がいるにしてもある程度は時間がかかるものだ
[1] 授業単元: プログラミング基礎 [2] 問題文 各頂点座標vertexが構造体REXに格納されている。 この構造体を頂点数に合わせて動的に確保できるように書き換えなさい。 さらに、引数として頂点数を格納した構造体を渡すことで、頂点数分のメモリーを確保して そのアドレスを構造体のメンバー変数に格納する関数を作成しなさい。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語:C++ [4] 期限:29日 [5] -
>>762 書き換える?
元のソースがあるんじゃないの?
765 :
762 :2011/07/28(木) 00:01:33.72
>>764 ありません
あるという前提で作成しなさいという意味らしいです
なんだかハイレベルな問題の出し方する学校だなw
>>766 低脳は講義にほとんどついていけないんですよ
>>762 の宿題も低脳じゃ駄目。一を聞いて十を知る奴でないと駄目ね
768 :
762 :2011/07/28(木) 02:11:05.81
>>767 その低能に教えてください
おねがいします
>>762 こんな感じなのだろうか?
struct vertex
{
double x,y,z;
};
struct REX
{
vertex *pVertexes;
int nCount;
};
void allocVertex( struct REX *pRex )
{
pRex->pVertexes = new struct vertex[ pRex->nCount ];
};
>>768 教えてくださいって自分でやりたいのか?
低能だからここに丸投げじゃなかったのか
>>768 は動的に確保、静的に確保の違いとやり方すら知らんと思われ
772 :
デフォルトの名無しさん :2011/07/28(木) 10:10:35.59
(9 * 9 + 9) / 9 = 10
そこより10のほうを突っ込めよw
776 :
デフォルトの名無しさん :2011/07/28(木) 12:31:15.28
最近は電車に乗るとき定期範囲外もカードだから、切符の4桁の数字を使って10にするとかやんなくなったなぁ
9999 はNGになったよ / 0 のケースは無条件NGにすれば良いのかな
780 :
デフォルトの名無しさん :2011/07/28(木) 16:27:26.96
再提出になってしまいました。
問題点は4521を入力した時に5*2+1/4という結果が表示されます。
計算は10.25になり、int型ですので小数点以下は切り捨てられ10になりますが、
端数を切捨てでの数式は表示させないようにといわれました。
http://codepad.org/gZD3P4xg ご指導お願いいたします。
実数で演算したら不都合が生じる組み合わせは有るんだろうか?
>>780 をみてふと疑問に思ったんだが
4つの整数を計算して、計算途中に小数を含むが最終的に10になる、っていうパターンってあるのかな?
あ、あった 5/2*4*1 割り切れない割り算があるとやめて次にいけばいいかと思ったが、そうはいかないな
>>779 入力可能範囲は0〜9でお願いします。
例:0025 結果2*5+0+0
>>782 その条件を満たすためには 和で整数に成る か 差で消える ってことだろうけど
和,差の被数がそれぞれ分数になるためには
a / b + c / d a / b - c / d
の組み合わせに制限されちゃう
なんとなく、その制限下では演算結果が10にはできない気配
786 :
785 :2011/07/28(木) 17:00:57.15
>>783 orz
因子の演算で消えるのとは別の話かと思ってた
>>783 そのケースが駄目なら割り切れない時はアウトで良いんじゃないか?
5*4/2*1 はオーケーって話なんだから
>>785 その組み合わせで10にできるわけはないんだがw
>>780 >> 731は結果が20になる組み合わせだろ?
まあ、課題を装ってあれこれ修正させて遊んでるだけかもしれないが。
>>780 の再提出理由をみると小数の場合も考えろっていってるように見えるから
5/2*4*1 も表示すべきなんじゃないかと思うがどうだろ
もしそうなら面倒くさいな
割り算は項の最後に持っていくとかの処理が必要か
double v[4],vx[4] でOK
最近の依頼人は、習ってない割りに面倒な処理が必要な宿題が多いな
誤差はどうするの?と聞こうと思ったが どういうときに誤差が発生するのか自分がよく分かっていないことに気がついた
>>793 この程度の数値では誤差は考慮不要と思う。
#include <stdio.h>
int
main()
{
double i, j;
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
if (i / j * j - i)
printf("%g %g¥n", i, j);
}
}
return 0;
}
>>790 それをOKとするなら実数で処理すれば良いし、NGとするなら割り切れない場合をNGとすれば良い
どっちを選択するかは提出者が考える事だろう
800 :
797 :2011/07/28(木) 21:41:21.77
(1 + 1 / 9) * 9 8 / (1 - 1 / 5)
なるほど
804 :
デフォルトの名無しさん :2011/07/29(金) 03:34:16.98
[1] 授業単元:並列計算
[2] 問題文(含コード&リンク):
http://codepad.org/UfRWs3k5 [3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio
[3.3] 言語:どちらでも可
[4] 期限:2011年 7月 30日
[5] その他の制限:何とかお願いします
[1]授業単元:プログラミングU [2]問題文:番号、数学点数、英語点数を一組としたデータを線形リスト形式で保存 全データ一覧 入力した番号の点数のみ表示 新しいデータを入力しリストの最後に追加 番号のみを入力してデータ削除 ← 可能ならば、出来てなくても大丈夫です プログラム終了 [3] 環境 [3.1]OS:Mac [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4] 期限: 7月31日まで [5] その他の制限: 必ず構造体(new_nodeやpool等)を用いること 「switch」を用いて任意の順番で出来るようにして下さい
始めから与えられているデータを入れ忘れました。申し訳ありませんでした 番号 数学 英語 N0003 82 100 N0006 73 91 N0020 69 83 N0011 44 70 N0025 34 62 N0022 32 52 N0015 16 12 N0013 61 100 N0001 70 88 (本当はデータ数が25個程あるのですが、これだけでお願いします) 全データ一覧ではリスト通りの表示でOKです
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://codepad.org/P8lye0BT このプログラムを応用し、100以上200未満の乱数を10000回発生させ、各数値が何回乱数として発生したのかをcsv形式ファイルに出力し、結果をExcelのグラフを示しなさい。
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C
[4] 期限:8/2まで
808 :
807 :2011/07/29(金) 17:58:08.22
ここまでがんばりたんですが #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ int num, loop; int times[100] = { 0 }; srand( (unsigned)time( NULL ) ); for (loop = 0; loop < 10000; loop++){ num = rand()%100+100; ++times[num - 100]; } for (loop = num; num < 100; num++) printf("%d,%d\n", num+100, times[num] ); return (0); } あとどうすれば良いですか?
809 :
807 :2011/07/29(金) 17:59:49.20
for (num = 0; num < 100; num++) でした
C言語の部分はそれで完成でしょ あとは出力をcsvファイルにしてExcelにつっこんだらおしまい
要は1から10000までの回数に合わせてその乱数も保存しろって事でしょ。あとからエクセルで処理しやすい様にする配慮かと 例えば 1 149 2 24 3 87 . . . 10000 134 的な
>>811 あれ?808-809でできてたのになんで違うコードなの?別人?
csvを標準出力に出せてるから、リダイレクトとかでcsvファイルとして保存して
Excelで開いてグラフにすれば終わりだよ
無理にC上でファイルに出力することも無いと思うよ
814 :
807 :2011/07/29(金) 19:06:35.43
リダイレクトでいけるって
csvで出せって言ってるんだからその辺は省略しちゃダメだろ
>>814 どうしましょうも何も完成してるじゃん
Excelで開いてグラフ作ったらおしまい
818 :
807 :2011/07/29(金) 19:50:52.71
>Excelで開いてグラフ作ったらおしまい をプログラムからしたいんですが、難しいですか? 簡単ならプログラムしたいんです 今はsystem(fname); でExcelが起動して、csvは出るんですが
相当ハードルは高い やめておくことを勧める WindowsのCOMと言うものを勉強して、COMの操作方法を覚えて、Excelを開いたときの操作方法を覚えれば可能だろうね そんなwindows限定の狭い知識は、必要になったときに覚えればいいと思うよ
グラフがExcelで作るように指定されてるから駄目だけど プログラムからグラフ作りたいならgnuplotとか使うとそれなりにはできるね まあこれもgnuplotの使い方を覚えんといかんけど
何でもかんでも必要だと思って覚えようとすると確実に破綻する すでにある知識やその他ちょっとした知識で解決方法を探すべき 本当に必要なものを見極めて必要ないものはその時点ではあきらめることも必要
826 :
デフォルトの名無しさん :2011/07/29(金) 22:01:28.52
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): パーティクルを採用した、エフェクトプログラムデモを作成する。 ・光の粒子が回転移動。 ・爆発エフェクト(破片の物理移動)など。 例)花火 情報の洗い出し → 構造体 2.初期化 → 爆発時に初期データセット 3.実処理 → 移動、加減速、色調 4.後処理 → 情報の削除(メモリの解放) [3] 環境 [3.1]OS:Windows7 [3.2]コンパイラ名とバージョン:VC6.0 [3.3]言語:Cのみ [4] 期限:8月1日 [5] その他の制限:エフェクトは自由にとのことでしたが、炎や、爆発や雷で作っていただけるとありがたいです。よろしくお願いします。 DirectXは使用不可です。コンソールアプリでお願いします。3Dは使わず、"*"や、"+"などの記号で表現お願いします。お手数ですが、コメントよろしくお願いします。
正直どんなプログラムなのかほとんどイメージできない コンソール画面に記号を使って炎や爆発や雷やらを表現しろってこと? cursesでもつかってがんばってアニメーションさせるのかなあ
動くAAって感じ?
>>805-806 の者ですが
期限が少し延び、8月1日の12:00までとなりました。
宜しくお願いします
>>832 ねぇ、ねぇMacの機種・OSは何を使っているの?
Macでプログラミングを教える学校ってFラン?
有名女子大って1つしか無くね
有名女子大ってMacでプログラミング教えるようなFランだったんだ
>>805 >[5] その他の制限: 必ず構造体(new_nodeやpool等)を用いること
>「switch」を用いて任意の順番で出来るようにして下さい
これどういうこと?
new_nodeやpoolって構造体?関数?どんな仕様か書かないと回答できないよ
「switch」を用いて任意の順番で処理〜って主語はなに?
ソース中にxmallocという文字列が見つかった場合、それはQ製かもしれません・・ という怪談
>>838 >正解経路は一つに決まること
これを読む限り正解でない(袋小路となる)経路も存在させる前提が見えるね
はい、リテイクできるね。楽しいね!
この形式の迷路は棒倒しじゃなくて壁を延ばすアルゴリズム使わないとあれじゃない?
>>840 それはごく最近の話。malloc()/free() のバグがなかなか取れなくて、とうとうラッパを作ってしまいました。
ごく最近、codegurad/borland を教えていただいた次第。プロはみんなこんなのを使うんですね。
>>841 それは曲解というもの。袋小路が存在しなければならない、とは指示されてはいません。
せいぜい「袋小路ができてもよい、解がひととおりであれば」くらいが限界でしょう。
>>842 棒倒しで十分ですよ。
846 :
デフォルトの名無しさん :2011/07/30(土) 01:49:48.69
>>827 >>828 >>830 検索したら3年前に似たような問題があったのですが回答が見れなくて書き込み
しました。*や+が画面にちらばり雷や*が広がって花火になるようなパーティクル
でエフェクトを作っていただきたいのです。説明下手ですいません。
どうかよろしくおねがいします。
>>846 パーティクルとエフェクトとは何か?
一般的な単語の理解でいいのかなんなのか
「パーティクルを採用した」ってのと
「エフェクトプログラムデモ」ってのが具体的に何をさしているのか
Windows7だとコンソールAPIで制御しないとだめじゃないかめんどいな
>>833 Mac OS Xです
>>839 自分自身この辺を理解してないので上手く説明出来ませんが
poolなどはstructで
ポインタなども使います
switchで閲覧、入力などを選ばして欲しいと言う意味です
851 :
デフォルトの名無しさん :2011/07/30(土) 10:22:35.19
アフォな質問ですまんが winMEでも使えるフリーのC言語統合開発環境を教えてください
>> 839,850 エスパーしてみた。 typedef struct { char n[6]; int suugaku; int eigo; struct pool*new_node; } pool;
>>805 ロード、セーブ、表示、追加、削除ができれば良いの?
セーブや全件表示の場合はソートが必要?
854 :
デフォルトの名無しさん :2011/07/30(土) 14:53:15.40
855 :
デフォルトの名無しさん :2011/07/30(土) 14:56:56.57
変なこと言ってすいません 質問板で聞いてくる
>>850 俺のエスパーだとその説明は間違ってて↓を要求されてるんじゃないかと疑ってる
・nodeという構造体を使用
・poolというnode型のポインタで未使用nodeのリストを持つ
・new_nodeという関数でpoolからnodeをひとつ取得して使う
・del_nodeという関数で使用済みnodeをひとつpoolの末尾に返却する
857 :
デフォルトの名無しさん :2011/07/30(土) 16:41:03.38
858 :
デフォルトの名無しさん :2011/07/30(土) 16:45:06.55
>>848 説明へたくそですいません。一般的な単語の理解でいいです。
パーティクルを使って炎などのエフェクトを作りなさいとのことでした。
>>849 コンソールAPIでお願いします。お手数かけます。
859 :
548 :2011/07/30(土) 18:14:48.98
何度も申し訳ありませんが、750の問題6-2のプログラムを ファイルポインタを用いたものにしていただけませんか
ならなぜC++とか抜かしたんだ
861 :
548 :2011/07/30(土) 18:24:21.95
>>860 複素計算を行うためにはC++でなければいけないと習いましたもので
ベターCの癖にC++とか指定するの死んだほうがいいのに
>>861 C++じゃなくても複素計算できるよ
その先生おかしいから信じないほうがいいよ
864 :
805 850 :2011/07/30(土) 18:52:21.71
こんな感じになるらしいです、各処理の仕方が分からないんです #include<stdio.h> #include<string.h> #defineN20 struct student{ int id; double suugaku; double eigo; struct student *next;}; struct student node[N]; struct student *make_pool(int n); struct student *new_node(struct student **p); void back_node(struct student **p, struct student *n); void print_list(struct student *p); int main(){
865 :
548 :2011/07/30(土) 18:56:58.72
CとC++についての理解力が足りずご迷惑をかけてしまったことについてはお詫びいたします すみませんでした ですが、そこをどうにかお願いできませんか
867 :
548 :2011/07/30(土) 19:13:37.66
>>866 ありがとうございます
今後はCとC++についてよく考えるようにします
>>864 の
struct student node[N];
struct student *make_pool(int n);
は何をするんだ?
869 :
デフォルトの名無しさん :2011/07/30(土) 20:22:40.99
void back_node(struct student **p, struct student *n); も十分に謎だ
870 :
805 :2011/07/30(土) 20:48:00.46
>>868 struct student node[N];
ノードプール用配列
struct student *make_pool(int n);
空ノードのプール作成。nは確保するノードの個数
ノードプールの先頭アドレス
>>869 void back_…
プールに返されたノードは最後尾にリンク
**pはプールの先頭へのポインタのアドレス
*n、返すノードへのポインタ
と、教員から頂いた資料に書いてあります
>>870 とりあえず頂いた資料うpしろ
話はそれからだ
先生から許可貰ってないのにうpしたら駄目だろ
>先生から許可貰ってないのに 宿題を依頼するのに、許可がいるのか?
入出力する番号は"N0003"形式なのにint? しかもNは全角だったか・・・
875 :
805 :2011/07/30(土) 22:17:02.46
これ最初から出しとかないと先生の指定したものと全然違うものが出来て0点だっただろwwwww 有名女子大生なにしとんwwwwwww
これを公開せずしてやらせようとしてたとは・・・
malloc() を使わないで線形リストを実現したいのかなぁ.... 困った問題だ、ちゅか困った講師だ
>>878 malloc()/free() は鬼門ですからね‥‥‥。java/c# を教材にすればいいのにね。
>>880 盗作防止に変な問題作ったって線は無い?
malloc()/free() が無かったらC言語じゃないと思うんだけどなぁ
それはhello world!はC言語じゃないってディスってるの?
>>883 組み込みだって動的確保くらいできるだろ、インターフェイスの違いは有るだろうけど
C言語の味わいって (void*) を返す大雑把な動的確保に有ると俺は信じてる(多分俺だけ?)
>>884 リッチな組み込みとそうじゃない組み込みがある
後者は確保とか無くて用途ごとに使うアドレスが固定
886 :
デフォルトの名無しさん :2011/07/31(日) 00:45:53.79
>>885 何を言ってるんだ?
malloc/freeが無い環境だろうがなんだろうが、
必要なら作るのがcプログラマだろ?
以前より少なくなったが旧製品のメンテだと、たまにバイト単位の節約が必要な事があるな。 これ以上はスレ違いなので、必要なら組み込みスレで。
>>884 思いはわかるんです、とっても。つい先日も私も嵌って一日うんうんいってましたし。(これで何十回目でしょうかね。)
でも「C言語じゃない」といいきってしまうと、んー、C の適用範囲が広いだけに、いろいろと異論もでてこようものでして、あはは。
>>875 >>878 >>886 こういう方式はフリーリストとか読んでいました。
実際に組み込みでこの方式を採用して開発の経験があります。
ノード1つの大きさが固定で、最大数が正確に見積もれるのならば、
有効な方法です。
malloc/freeの替りにnew_node/back_nodeを使うことになります。
mallocと違い、確保できるメモリ領域サイズは固定です。
>>889 なるほど。
lisp の実装の一つに特定の固定長の領域を先に大量にプールしておくというのがあったことを記憶しています。
6809 上の処理系でした。
貴様らの意見をまとめると>
>>805 の講師は組み込み系のプログラマだったってこと?
ゼビウスで使われたタスクシステムがこんな感じだね
893 :
デフォルトの名無しさん :2011/07/31(日) 02:35:01.17
>>889 サイズ固定のメモリ確保/解放を高速におこなうためのメモリプールは良くやる手法だと思う。
Effective C++にもplacement newで出てるのと考えは同じ。
>>891 組み込みの人なのかね?
new_node()の対がback_node()なのが頂けないなw
仮想メモリのページングを自分で実装したり、仮想マシンのメモリ管理に BIBOP を使ったり する事を想定した授業なのかな
uITRONにある固定長メモリプールはまさしくこんな機能だよ
896 :
805 :2011/07/31(日) 12:03:13.46
>>884 >C言語の味わいって (void*) を返す大雑把な動的確保に有ると俺は信じてる(多分俺だけ?)
いや、それはC言語と関係ないだろ。
むしろI/O叩きだろ
>>897 そう?
それは malloc()/free() がライブラリ関数という形式で提供されているから、という理由でですか?
そういえば pascal にも new/dispose がありましたね。これは規格内だったか外だったか?
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): C言語の乱数発生関数を使ってサイコロ関数 int dice( void ) を作成し、以下の統計的な性質を検証せよ。 (1) 10,100,1000,1万回、10万回、100万回、1000万回、1億回の試行での 期待値(平均値)の変化 (2)前記の試行回数での各数字の出目の確率 (3)2つのサイコロを投げた時の11、22のようなぞろ目の確率 レポートのグラフはExcelを用いる。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語: C [4] 期限: 2011年8月3日 [5] その他の制限: 特になし お願いします
>>900 結果の出力はコンソール画面でいいのかい?
csvファイルに出力するとかだったりしないか?
宿題とは関係ないけど、8月になっても大学・高専・専門は 正規授業がいまやあるのか?
今年の場合は例外もいろいろあるんでないの? 3.11の影響で開始を遅らせた所はいくつかあったようだし
>901 コンソール画面でいいです。
ありがとうございます!
一億回呼ぶ関数の中で初期化の分岐とかw
[1] 授業単元:プログラム概論 [2] 問題文(含コード&リンク): 多角形を中心座標に対し上下反転させる関数を作成しなさい。この関数の引数は、多角形のデータが 収められた構造体のアドレスをとる。また、上下反転された座標は元の頂点座標に格納する変数に再代入される。 [3] 環境 [3.1] OS: Windows 7 [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C++ [4] 期限:2011年 8月2日 [5] その他の制限:なし おねがいしますm(__)m
911 :
デフォルトの名無しさん :2011/07/31(日) 22:23:32.58
>>905 826です。助かりました!ありがとうございます!
[1] 授業単元:プログラム概論
[2] 問題文(含コード&リンク):ファイルの商品名を順に読み込んで、オーダー
の順を出力する関数を作成しなさい.
http://codepad.org/q5G3hxdB ←ここまで作りましたが、"ファイルが見つかりません"と表示されます.
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C++
[4] 期限:2011年 8月2日
[5] その他の制限:おねがいします
>>914 ほんとにC++か?
C++なら自分で連結リスト作ったりしないと思うんだが
>>914 最初に
if((fp=fopen(filename,"r")) == NULL){
fprintf(stderr, "Could not open file\n");
exit(1);
にぶつかっているのが直接の原因だと思いますが、"test.txt" は実行ファイルと同じフォルダに存在しているでしょうか?
vs の統合開発環境からビルドしているのであれば、たしかに "test.txt" の置き場がややこしい。(今手元にいれていないので、即答できなくてすみません。)
>>915 file_read() をオーバーロードしているので、c++じゃないとコンパイルできないです。
自分がやってる授業がCなのかC++なのか分かってないやつなんなの・・・
919 :
デフォルトの名無しさん :2011/07/31(日) 23:20:46.24
C++はCのスーパーセット
CはC++の片手落ち言語
>>916 はい
"test,txt"は実行ファイルと同じフォルダにあります
さっき新しくテキストを作り直したところ
「0x000a156d でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000100 を読み込み中に
アクセス違反が発生しました。」というエラーメッセージが出てきました
これはどういうことなのでしょうか?
>>922 コンソールAPIを使う ただしデフォルトパレットの16色限定
>>923 test.txt の内容を、空白も含めて codepad にあげてください。
たぶん、
if(fread(&data,1,sizeof(ORDER),fp)!=sizeof(ORDER)){
break;
の fread() の書きようがまずくて、即座に break -> return NULL
引き続いて
void file_read(ORDER *node){
が
file_read(NULL)
でコールされ、
printf("[%d] (%s, %d)\n", k++, node->name, node->price);
の
node->nameが
NULL->name
となってセグメンテーションエラー(例外)がでている
と推察します。
>>914 ,926
25c25
< void file_read(ORDER *node)
---
> void data_print(ORDER *node)
59c59
< if(fread(&data,1,sizeof(ORDER),fp)!=sizeof(ORDER)) {
---
> if(fread(&data,1,sizeof(ORDER),fp)>sizeof(ORDER)) {
91c91
< file_read(order);
---
> data_print(order);
>>914 ,926,927
c++なら
< if(fread(&data,1,sizeof(ORDER),fp)!=sizeof(ORDER)) {
---
> if(fread(&data,1,sizeof(ORDER),fp)>sizeof(ORDER)) {
>>927-929 書いてあった通りに修正したら、無事問題文通りの動作をしました
何故今回は、上手くいったのか教えてもらえますか?
931 :
デフォルトの名無しさん :2011/08/01(月) 14:52:57.30
どなたかよろしくお願いします。 自然数n > 1 と整数g, x>= 0 を入力として, g^x をn で割った余りg^x mod n を求めて表 示するプログラム
932 :
デフォルトの名無しさん :2011/08/01(月) 14:55:19.36
933 :
デフォルトの名無しさん :2011/08/01(月) 14:57:39.68
すみません追加です。 [1] 授業単元:プログラム概論 [2]931に記載。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C [4] 期限:2011年 8月2日 [5] その他の制限:おねがいします
934 :
デフォルトの名無しさん :2011/08/01(月) 15:03:39.26
>>934 要求したページが見つかりません.
問題が解消されない場合,こちらに連絡してください: サーバ管理者.
936 :
デフォルトの名無しさん :2011/08/01(月) 15:12:34.30
[1] 授業単元:プログラミング問題 [2] 問題文(含コード&リンク):ファイルに格納された適当な文字列を代入した 連結リストからある特定の文字列を削除し,削除後のリストをファイルに出力する関数を作成せよ. [3] 環境 [3.1] OS: Windows 7 [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C++ [4] 期限:2011年 8月2日 [5] その他の制限:おねがいします
>>931 #include <stdio.h>
int main(void)
{
int n, g, x, r;
scanf("%d%d%d", &n, &g, &x);
for(r = 1; x; x--, r %= n) r *= g;
printf("%d\n", r);
return 0;
}
939 :
931 :2011/08/01(月) 15:18:44.73
>>936 ime.nu/削っても見られないぞ
ってかime.nu/は2ちゃん側が勝手に付けるもんだから関係無いと思うが
941 :
デフォルトの名無しさん :2011/08/01(月) 15:20:48.77
>>940 936です
えっ?そうですか??
では問題を貼付けていってもいいでしょうか?
5個あるんですがお願いします。。
>>941 いいんじゃね
答える奴がいるかどうかは知らんが
943 :
デフォルトの名無しさん :2011/08/01(月) 15:24:11.31
これらが5個の課題です。 お願いします。 入力された長さをもつ線を表示するプログラムを作成せよ.プログラムは以下を満たすものとする. 入力として受け取る長さは,1以上20以下となるようにすること. 入力された縦・横の長さをもつ長方形を表示するプログラムを作成せよ.プログラムは以下を満たすものとする. 入力として受け取る縦と横の長さは,1以上20以下となるようにすること. 横の長さは縦の長さ以上になるようにすること .入力された縦・横の長さをもつ平行四辺形を表示するプログラムを作成せよ.プログラムは以下を満たすものとする. 入力として受け取る縦と横の長さは,1以上20以下となるようにすること. 横の長さは縦の長さ以上になるようにすること. 入力された高さをもつ数字の正三角形を表示するプログラムを作成せよ.プログラムは以下を満たすものとする. 入力として受け取る高さは,1以上20以下となるようにすること. i段目にはiを表示する.ただし,10段目以降には一桁目の数字を表示する. 3×3行列に整数のデータを入力し,その縦・横・斜めに足した合計がすべて等しくなるかを確認するプログラムを作成せよ.プログラムは以下を満たすものとする. 整数のデータの入力では,for文を用いること. 予め3×3個の整数の要素を持つ二次元配列を準備する. 縦は3本,横は3本,斜め2本のそれぞれの合計が等しいかを確認する必要がある.
944 :
デフォルトの名無しさん :2011/08/01(月) 15:29:03.82
お願いします。 [1] 情報処理演習T [2] 自然数n > 0 を入力として, その自明でない約数(1とその数以外の約数)を一つ出力するプログラムを作 成せよ. [3.1] Linux [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] C言語 [4] 今から1時間以内 [5] 特になし
Mac使ってないから線を表示ってどうやるのか知らんな 他の人任せた
946 :
デフォルトの名無しさん :2011/08/01(月) 15:35:07.77
>>945 *で代用みたいです。
説明不足ですいません。
947 :
デフォルトの名無しさん :2011/08/01(月) 15:41:10.92
********** こうやってアスタリスクを並べたものを線というそうです。
>>930 > if(fread(&data,1,sizeof(ORDER),fp)!=sizeof(ORDER)) {
これだとファイルから改行も含め、ORDERのサイズ(272バイト)だけ読み込もうとするが、test.txtは88バイトしかない。
freadは正常時は「272バイトの塊を何個読んだか」(通常は1)を返す。
読み込んだバイト数ではない。
--->1 != 272で1回目でbreakするため、mallocを1回も実行しない
--->メモリを確保出来ていないので、正常printできない。
対策:
if(fscanf(fp,"%s",s)==0) {
とすると、ファイル1行にデータ1個なので、sには1件文のデータが入る。
>>947 なんだそういう事か。だったらすぐ出来たのに
もう時間過ぎちゃったけど俺ぁ知らんぞ
>>944 コンパイル、実行してないので動くかはしらんけど
#include <stdio.h>
int main(void) {
int n;
int i;
printf("自然数nを入力 : ");
scanf("%d", &n);
for (i = 2; i < n; i++)
if (n % i == 0) printf("%d", i), break;
return 0;
}
952 :
944 :2011/08/01(月) 16:12:32.01
953 :
デフォルトの名無しさん :2011/08/01(月) 16:12:58.18
>>949 時間が少し延長されました。。
あと20分ぐらい大丈夫です!
>>937 ですが、補足します
「特定の文字列のみ削除する部分」と「出力表示する部分」は同じ関数内でおねがいします
955 :
デフォルトの名無しさん :2011/08/01(月) 16:17:54.19
お願いします。 [1] 授業単元:情報処理演習 [2] 問題文:2 つの整数a, b, s を入力として, ax + by = s を満たす整数x, y を一組求めてそれらを表 示するプログラムを作成せよ. ただし, 望みの整数x, y が存在しないときは, その旨を表 示するようにすること. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:8月2日 [5] その他の制限:特にないです。
>2 つの整数a, b, s を入力として 無茶言うなw
>>954 後付でしかも、テンプレを使ってないから937に着手した者は954を見落とすだろうな。
修正があるなら、937の発展問題として新規にテンプレ使うべし。
958 :
955 :2011/08/01(月) 16:32:31.90
>>956 すみませんw
2つじゃなくて3つです。
申し訳ないです。
>>957 指摘通り修正しました
[1] 授業単元:プログラミング問題
[2] 問題文(含コード&リンク):ファイルに格納された適当な文字列を代入した
連結リストからある特定の文字列を削除し,削除後のリストをファイルに出力する関数を作成せよ.
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C++
[4] 期限:2011年 8月2日
[5] その他の制限:「特定の文字列のみ削除する部分」と「出力表示する部分」は同じ関数内でおねがいします
>>959 追記
ファイルに格納された適当な文字列:
ファイルにどのような形式で文字列群を格納するか
ある特定の文字列:
特定の文字列をどのようにプログラムに指示するか
などいろいろ不備な点がありますが、あとは妄想で補完してあなたがよいと思うプログラムにしてください
>>960 ファイルに格納された適当な文字列:
ファイルにどのような形式で文字列群を格納するか -> 形式はテキストファイル
ある特定の文字列:
特定の文字列をどのようにプログラムに指示するか -> キーボードによる入力
あと妄想は困ります
おねがいします
適当な文字列たんと特定の文字列たんの濃厚な絡みを妄想してしまいまつた
>>961 追記
自分は
warashi wa kichigai
anata mo kichigai
のような形式が好きで、でKichigaiは気に入らないから2つあるkichigaiを消すニダなんです
漢字は苦手ですが
私は基地外
貴方も基地外
こんな形式から2つある基地外を削除するでも良いアルネ
でも、自分で色々考えて講師が気に入ると思うプログラムにしてください
お願いアルニダ
>>955 #include <stdio.h>
int gcd(int a, int b)
{
int r;
while(r = a % b) {
a = b;
b = r;
}
return b;
}
int main(void)
{
int a, b, s, x, y;
scanf("%d%d%d", &a, &b, &s);
if(s % gcd(a, b)) printf("解なし\n");
else {
for(x = 0; ; x++) {
int temp = s - a * x;
if(temp % b == 0) {
y = temp / b;
break;
}
}
printf("x = %d, y = %d\n", x, y);
}
return 0;
}
>>965 >int price; に関する記述は
>>937 のどの部分?
>>937 は、商品の名前と金額を表示するプログラムです
>>937 は余分な金額の記載部分を除いた文章なので、少し違うように見えると思います
重要なのは名前の方ですので、別になくても別に問題はありません
困っているのは「入力した商品名をリストから削除する」部分なので…
969 :
デフォルトの名無しさん :2011/08/01(月) 18:45:25.05
970 :
955 :2011/08/01(月) 18:52:43.23
937をやってみようかと思ったけど、up主が次々にニューバージョンを出して来るので、ペースが落ち着くまで静観。
>>972 放置してたら自力で解きそうだしね
>>971 文字の削除ではなく入力された名前を持つデータの削除だろ
名前が一致したら出力しないだけの話だと思うんだけど
課題を解いて欲しいなら、ちゃんと投げろ
>>975 >なんで、char name[1000];なのに
>char *p=(char *)malloc(10*sizeof(char));では10なの?
name[1000]は特に意味はありません
[300]でも[800]でも構いません
*pが10なのは、10文字以上の文字は無いだろうと思ったので
10にしました
>つまりリスト削除はしないで、一致したものを飛ばして出力するだけってこと
そうです。言葉足らずで申し訳ありません
次スレ立てます
981 :
デフォルトの名無しさん :2011/08/02(火) 13:45:03.74
[1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク):となりどおしの数字の差がその下の数字となるように、 1から15までの数を1回だけ使って例に従ってマスにいれなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2011年8月2日14:30まで] [5] その他の制限: C言語初心者です。宜しくお願いします。
15 1 13 2 10 3 9 4 14 12 11 8 7 6 5 こんなん?
984 :
デフォルトの名無しさん :2011/08/02(火) 14:27:51.78
>>981 説明不足ですみません。
>>981 のかたのイメージです。
逆三角形になるように表示させたいです。
最終的には最後の1個まで数字が重ならないように表示させたいです。
宜しくお願いします。
985 :
デフォルトの名無しさん :2011/08/02(火) 14:30:14.92
>>981 981 名前:デフォルトの名無しさん :2011/08/02(火) 13:45:03.74
[4] 期限: [2011年8月2日14:30まで]
期限、今日じゃないだろ
988 :
デフォルトの名無しさん :2011/08/02(火) 14:50:34.02
期限は今日ですが時間を間違えました。 時間は16時までです。宜しくお願いします。
差は
>>984 の形だけど表示は五段って意味じゃないかな
991 :
デフォルトの名無しさん :2011/08/02(火) 14:54:06.23
五段です。お願いします。
答え二通りしかないのか
993 :
デフォルトの名無しさん :2011/08/02(火) 15:21:58.22
多分、そうだと思います。 宜しくお願いします。
と思ったら、左右反転してるだけだったw
逆三角形で五段を実現する並びって 1つのみしかないの? それとも複数あるの?
996 :
デフォルトの名無しさん :2011/08/02(火) 15:29:57.78
多分 6 14 15 3 13の並びしかないと思います。 あとは逆並びだと思います。
>>981 #include <stdio.h>
int a[5][5], chk[16];
void show(void) {
int i, j;
for(i = 4; i >= 0; i--) {
for(j = 4; j > i; j--) printf(" ");
for(j = i; j >= 0; j--) printf("%2d ", a[i][j]);
putchar('\n'); } }
void f(int y, int x) {
int i;
if(y == 5) { show(); return; }
if(x > y) f(y + 1, 0);
else if(x == 0) {
for(i = 1; i <= 15; i++) {
if(chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; } } }
else {
i = a[y][x - 1] + a[y - 1][x - 1];
if(i <= 15 && chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; }
i = a[y][x - 1] - a[y - 1][x - 1];
if(i > 0 && chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; } } }
int main(void) {
f(0, 0);
return 0; }
998 :
デフォルトの名無しさん :2011/08/02(火) 15:51:14.66
>>997 出来ればメイン関数内だけで行えませんか?
本当に申し訳ありません。
答えはC/C++の宿題片付けます 152代目にお願いします。
宜しくお願いします。
>>997 張ろうと思ったら先を越されたw
>>998 再帰を使わないのは無理じゃね?
main() だけで再帰を実現するには....
IOOO
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。