1 :
デフォルトの名無しさん :
2013/04/22(月) 04:47:19.70
2 :
デフォルトの名無しさん :2013/04/22(月) 05:45:22.91
< `∀´>ニダー
ちんこ
5 :
デフォルトの名無しさん :2013/04/22(月) 20:35:36.96
画像処理プログラミングの話になると思うけど 自動的に滑らかな輪郭のシャボン玉の形を作成したいんだけど どんな実装したらいいですかね?かなり困ってて..... 一応C言語を使用します
6 :
5 :2013/04/22(月) 20:38:58.94
アイディア下さい 曲線をパーツとして作っていって繋げたらカクカクしそうだし
画像をいっぱい用意して順番に表示したらいいよ
>>5 外形とグラデーションを別々に描画してから後で合成する
9 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/22(月) 20:48:19.59
>>5-6 ベジェ曲線、スプライト曲線など
透明な背景に不透明度(α値)付の描画で画像作成
10 :
5 :2013/04/22(月) 20:52:26.45
11 :
5 :2013/04/22(月) 20:59:50.31
>>9 ありがとうございます
スプライト曲線が使えそうですね
12 :
5 :2013/04/22(月) 21:02:06.91
手間掛けさせて申し訳ないんですが五角形でスプライン曲線で滑らかな 閉曲線作るプログラム書いてくれませんかね?Cは画像ライブラリもってないんで Swingで...
解説をするスレであって、かわりに書いてやるスレじゃないぞ。
14 :
5 :2013/04/22(月) 21:11:55.04
>>13 すいません
Cのグラフィックスライブラリ教えて下さい
Win32でもAPIでベジエとかあったろ Linuxは知らん
16 :
デフォルトの名無しさん :2013/04/22(月) 21:24:26.98
OpenGL 2.0
17 :
5 :2013/04/22(月) 21:31:23.49
ありがとうございます
リヌクス
子供はけん玉遊びでもしていなさい。
20 :
デフォルトの名無しさん :2013/04/23(火) 11:41:37.66
FILE *fp sub(){ static char buf[38]; char CHR[7] fgets(buf,36,fp); fscanf(fp,"%6s\n",CHR); puts(CHR); } main(){ fp = fopen("test.txt", "r"); sub(); } こんなプログラムが書きたいんですが,putsで表示したCHRがフフフフフってなります. おそらくfpがsub関数に渡せていないのが問題だと思うのですが,main関数からどうやって渡せばいいでしょうか? グローバル関数は使いたくないのでそれ以外の方法でお願いします.
俺が試してみると フフフノフフフ になった
グローバル変数を消す sub() { → sub(FILE *fp) { main() { FILE *fp = fopen("test.txt", "r"); sub(fp); } CHRがフフフフフ は別件だと思うがなー
ちゃんとfopenの戻り値見ろよ
ちなみにsubの方でfopen()する場合はポインタのポインタを渡してそれに代入しないと値が 戻らない sub(FILE **fp) { *fp = fopen("test.txt", "r"); } main() { FILE *fp; char CHR[7], buf[100]; sub(&fp); fgets(buf,36,fp); fscanf(fp,"%6s\n",CHR); ... return 0; } 最初の頃はこれではまったわ C++ならFILE*& fp) とポインタのリファレンスを使うと呼び出し元の&は省略出来る それとこれはFILEだからいいけど、コンソールは基本的にgets()系とscanf()系は混合 すると改行文字が変な働きをして動作がおかしくなるので、FILEもどちらか一方に 統一してるわ
25 :
20 :2013/04/23(火) 13:03:32.07
すいません. 別関数にtxt行数数えるコードがあるうのを失念してまして,rewindし忘れてました. うまくいきました
何回リロードしても全然書き込みがないと思ったら、昨晩から大規模規制が行われてるのか
&CHRじゃないの?
何でそう思ったのかな
29 :
デフォルトの名無しさん :2013/04/23(火) 20:23:07.10
ここにいる奴らはオブジェクト指向なんだよな?
30 :
デフォルトの名無しさん :2013/04/23(火) 20:58:51.76
c言語内でGZの解凍するのってどうすればいいんでしょうか? @visual stadio
ライブラリの命令で
32 :
デフォルトの名無しさん :2013/04/23(火) 21:27:01.19
いまいちライブラリの使い方がわからないのですが、どこかからlibファイルをとってきてヘッダを指定すればできるんですかね?
どなたか教えてください。 キーボードから入力された文字列の中に、特定の文字の列"abc"が含まれるなら"found!"を出力し、無ければ"Not found!"を出力するプログラムをつくれ。 入力は右の文を使います。char str[50];scanf("%s", str); ○文字列の探し方: 1.str[]の中から、まず先頭の文字'a'を探す。しかし、文字列の終端に達すると'\0'が現れるので、これが現れたら見つからなかったことになる。 2.'a'が見つかったら、次の要素が'b'かチェック。もし'b'ではないなら1に戻る。 3.'b'が見つかったら、さらに次の要素が'c'かチェック。もし'c'ではないなら1に戻る。
34 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 22:14:09.10
>>33 #include <stdio.h>
int main(void){
int i; char str[50];
printf("入力: ");
scanf("%s", str);
for(i=0;str[i]!='\0';i++)
if(str[i]=='a'&&str[i+1]=='b'&&str[i+2]=='c')
{printf("found!\n");return 0;}
printf("Not found!\n");
return 0;}
GZのフォーマットを調べて自前で。
また宿題を持ち込んでるのかwwwwww
dllで良いのでは
なんとかプログラムをつくってみましたが未だにエラーが出てしまいます。どなたかご指摘をお願いします。 問題は、x=10に対してe^xの値をテイラー展開の式を使って解け。ただし、項の大きさが10^(-8)以下になるまで和を取りexp(x)の値と比較せよ。 #include <math.h> int main(void){ float x,t,s,a; x=10.0; t=1.0; s=t; exp(x)=1.0; do{ t=t*x/a; s=s+t; exp(x)=exp(x)+1.0; }while(fabs(t)>1.0e-8); printf("%e\n",exp(x)); return 0; }
>>38 それがどーやってdllファイルを入手するのか、どーやって使うのかよくわからないんです。
もうまる2日ぐぐって格闘してるんですが…
41 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 22:52:12.94
>>39 exp(x)は値を返すだけの関数なので値を代入できない。値を代入できるのは変数。
#include <stdio.h>がない。
片山渾身の自作自演
>>41 回答ありがとうございます。
exp(x)との比較はどうすれば良いですか?
イマイチわかりません
44 :
デフォルトの名無しさん :2013/04/23(火) 23:02:01.22
45 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 23:05:18.11
gunzipはLinuxでメジャーな解凍プログラムだよね MinGW版だとwindowsでも使えるけど
>>45 何度もすみません。その差の絶対値の取り方がわからないんです。教えていただけないですか?
なんでこんな馬鹿にかまってんの 先生に聞けよ
友達いないんだろ 察しろよ
近似値としてeという変数を使うなら近似値との差はe - exp(x)だから差の絶対値はfabs(e - exp(x))
>>40 DLLの使い方ならともかく、DLLの入手方法なんて
圧縮解凍ソフトの「ユーザとしての」初心者レベルの話だぞ…?
ソフトウェア板にでも行きなされ
↑ おまえがどっかいけばすむ話かもしれないね
効いてる効いてる
ズタズタにされたいのか?調子こいてるとリアルで痛い目に会う事になるから注意すべき
あ、産業廃棄物が何かしゃべってる! 効いてる効いてる
たいがいにしろよカスが マジで親のダイヤの結婚指輪のネックレスを指にはめてぶん殴るぞ 多分奥歯が揺れるくらいの威力はあるはずだしね
ダイヤは叩くと割と簡単に割れるぞ
>>57 なんだおまえ?ズタズタに引き裂いてやってもいいんだぞ
あまり調子こくとリアルで痛い目を見て病院で栄養食を食べる事になる
あれれ? びびって逃げちゃったのかな?
あ、産業廃棄物が何かしゃべってる! 効いてる効いてる
お前らは一級廃人のおれの足元にも及ばない貧弱一般人 その一般人どもが一級廃人のおれに対してナメタ言葉を使うことでおれの怒りが有頂天になった この怒りはしばらくおさまる事を知らない
タイヤは叩いても簡単には割れないぞ
63 :
デフォルトの名無しさん :2013/04/24(水) 00:53:37.60
おいィ?お前らは今の言葉聞こえたか?
>>58 やってみれば?
>>56 >親のダイヤの結婚指輪のネックレス
なにそれ?あと
>親
(爆笑)自分のじゃないの?
ブロントにマジレスしてる奴ってなんなの?
>>65 へえ、こんなのがあったんだ昔から踊らされてしまったねえww
発狂するな
プログラミングって ファイル入出力以外の事をシーケンス制御って言うんですか? 中学校でプログラミング必修化するっていう記事で基本的なプログラミング (ファイル入出力・シーケンス制御)等をやるとか書いてました。
Googleという便利なサイトがあります
というか中学生もプログラミング必修か こりゃプログラマーの立場がww
とりあえずC言語やるのかな?一番簡単だし
最初は C以外あり得ねー 中2 春C 秋C++ 中3 春GUI 秋ネットワーク これくらいで無理なく幅広く勉強できるんじゃないか?
BASIC(笑)
Cが一番簡単とかバカか
でけぇ釣り針だなあ
>>74 だから基礎的な文法とかはって事
中学校の授業レベルの話だろう
アセンブリ言語は簡単だがPerlは難しくて挫折したという話は聞いた。
Cはプロ向けだろう C++の方が初心者向きだが、基本からとなるとPASCALの方が良いかな
西部労働レストラン
10 'SHASEI 20 screen 3: cls 3 30 line(0,160)-(330,160) 40 line(0,240)-(330,240) 50 for S=-1 to 1 step 2 60 for T=int(-sqr(2000)) to 60 70 X1=T: Y1=sqr(3600-X1^2) 80 X=X1+330+int(sqr(2000)): Y=-Y1*S+200 90 pset (X,Y) 100 next: next 110 for R=1 to 10 120 for S=0 to 14 130 for T=7 to 0 step -7 140 for U=0 to 15 150 circle (460+S*25,200+2*S^2),U,T 160 next: next: next: next 170 line input "CLS 3 OK?";A$ 180 cls 3 190 end
CとC++を最初に薦めるやつを信用してはいけない
大きな釣り針
83 :
デフォルトの名無しさん :2013/04/25(木) 21:30:05.20
>>81 Cが基礎だって言うやつって、言語が低水準であることと基礎と区別がつかないのかね。
PCのアーキテクチャが分かるってなら、アセンブラでも進めりゃいいのに。
極論出たよ
C言語は低級言語でありながらコンパイラの支援が大きいのが便利 アセンブラは自分で注意しないといけない部分が多すぎる
C言語はアーキテクチャをあまり意識しなくてもいいし組み込みでも何でも使える 機械制御とかにもすぐ使えて便利
COMファイルのあったDOS時代ならともかく、 今の環境でアセンブラだけで実行ファイル作るのはかなり困難
時代はインラインセンブルァ
マイコンならまだアセンブラ。というかアセンブラがわからないと 話にならない
ああマイコンならそうだろうね でもプログラム初心者にマイコン勧めるかというと
個人的にはアセンブラを教育に使うのはアリだと思うんだけど、 CPUによって独自なところが残念。覚えてもほとんど役に立たない。 現実、アセンブラに近いくらい簡単で、覚えて役に立つのはCだと思う。 もしJavaやるなら、Cをやったあとでいいと思う。
インラインアセンブラがx64からVC++で使えなくなったのがね・・・(gccでは使えるけど) 組み込み関数で近い事はできるしレジスタ効率もコンパイラ任せにできるんだが、 ちと物足りない
H300でいいよ
繰り返し 順番 分岐 この3つが基本だろ? オブジェクト指向はややこしいから普通にCでいいじゃん 中学生の頭なら3週間で連立方程式を解くプログラム作れるように なるでしょ
printf() scanf() for() while() goto() こんなシンプルな文法の言語のどこが難しいんだwww
goto()
98 :
デフォルトの名無しさん :2013/04/26(金) 00:32:54.63
別にプログラマーの育成のために学校でプログラミングやるわけじゃないだろう。 だからCでいいかと。javaとか難しすぎるわ。
難しくはないが、Cと比べると覚える質の割に量が無駄に多い
よく知らんが、VBAとかなんじゃね…? なんだかんだでBASIC系の扱い易さは残してるし プログラマに限らず扱う言語ではあるし
VBAあらばなんでも作れるしな
>>85 アスペきたよ。
低水準言語→基礎 って考えがバカらしいって例で極論だしてるのにそれに極論ってツッコミ入れてどうすうる。
Cは言語仕様が小さいから簡単とか言ってる連中ってほんとうにコードを書いたことあるのかね。 コンパイラでも作るなら言語仕様が小さくてシンプルなほうが楽だけど、その言語で なにか処理を書くなら、機能の少ない言語のほうがコードが複雑になるって、ふだんなにか コードを書いてる人間なら分かるよな。
int ary[256]; sizeof ary; このときsizeofに渡されるのはaryの先頭アドレスでしょうか それともary全体を渡すイメージでしょうか 教えてくださいよろしくお願いいたします
その場合のsizeofが返すのは配列全体のサイズってことさえわかってたら、 どっちを渡すイメージかなんてどうでもいいだろ
>>104 ary の型は int[256] だよ。
なので sizeof は ary 全体のサイズ (int が 4 バイトなら 1024 ということになる) を返す。
ポインタ型になるのは条件が揃ったときにだけ暗黙の型変換が適用されるからで、
本来は配列型とポインタ型とは別物。
107 :
デフォルトの名無しさん :2013/04/26(金) 13:17:21.06
アスペとかいうけどプログラマならアスペを誇りに思うべきだろ むしろアスペじゃないプログラマとかいるのかと
floatがあるのにdoubleがあるのは何故? 指数表示じゃ分りにくいし
アスペは褒め言葉だろ サイコパスは軽蔑の言葉だが
アスペだけならいいんだけど 大抵のアスペは強烈な自己愛も併発しててキチガイ化してる
でもPM SE PGはほとんどがアスペだぞ? 誇りに思うべき
PGがアスペだからアスペを誇りに思うべきって理屈がすごいな。
確かにシステムを考える人間はアスペ多いわ
連立方程式、実際組んでみようと思ったことがある、中学生時代 構文解析からやる必要があるから挫折したけど
簡単な迷路ゲームとかでポインタが壁にあたったらアウトみたいなのあるけど あれどういう仕組み?あんなアナログ線だと当たり判定どうしてんの?
>>112 その「誇りにおもうべき」という部分が自己愛なんだよな
アスペにはこの思考がない
構文解析必要か? 係数だけ入力させればいいじゃん
>>103 プラモデルみたいに既にある程度形が出来上がっているパーツを組み立てるより、
レゴブロックでモジュールを作りそれを組み合わせて一つの構造物を作り上げたほうが良い。
…と例えてみる。
連立方程式の解なんかもうアルゴリズムあるしいまさら覚える必要ない
シンプレックス法のお題とかどうだ
並び替えてできる可能な文字列を列挙するプログラムが作りたいです。 例えばchar *x="abc";として abc acb bac bab cab cac みたいな感じにしたいです。 アルゴリズムてかコードお願いします。
124 :
123 :2013/04/26(金) 20:30:05.52
バケッツソートですかね? とりあえず良く分かりません。
>>123 作りたいなら作れよ
作って下さいじゃないんだろ
126 :
123 :2013/04/26(金) 20:34:05.03
>>125 作れないんです
てか結構難しいですよね?
かんたん
128 :
123 :2013/04/26(金) 20:38:35.93
>>127 文字列分解しないといけないので難しいです
>>123 これは難しいぞ
abcをどう並べ替えたらcacになるんだよ。
解説してくれ。
>>132 つダブル
そういう事です。
お願いします......
どうすれば?
例:aabc 4!/2!=8通りだけど それを考慮してなくて 16通り全部書いてしまってます。 どうすればいいでしょう? 基本はそれでいいと思います。
ちょっと何いってるのかわかんない
今度は文字数が増えよった まるで訳が分からんぞ
文字の重複が意味わからん これはもう並べ替えじゃない、入力を元に新たな文字列を生成するプログラムになっている そして、どういう出力を求めてるのか定義が曖昧すぎる 日本語できちんとまとめてから書き直すべき
aabc△ aacb abca abac acab□ acba abca abac acab□ acba aabc△ aacb bcaa bcaa baac baca baca baac caab caba caba caab cbaa○ cbaa○ こういう事です。
つまりユニークな文字列だけ調律したい
140 :
デフォルトの名無しさん :2013/04/26(金) 23:13:53.43
無理じゃね?
アスペにプレゼン力が無い良い例である
>>141 ありがとうございます。
出来れば配列に格納してから重複分を省略するのではなく
再帰の過程で重複をスルーするというのは無理ですか?
148 :
デフォルトの名無しさん :2013/04/26(金) 23:49:46.30
>>147 ありがとうございます。
再帰凄いですね。たった57行ですむんですか。
自分が作ったのはstrcmpとか再帰使ってないから
300行超えましたww
57行からもっと短くする事はさすがに無理ですか?
149 :
123 :2013/04/26(金) 23:56:14.46
データ構造に木を使った場合だともっと短くなりませんか? この時コードどうなりますかね?
3行てw
流石C言語、Pythonでは出来ないことをやってのける
プロトタイプを自分で宣言すれば1行だろ 手抜きしやがって
>>147 改めて凄い賢いプログラム。
並び替える時、二つの文字を選んで交換することしか思い付かなかったけど
シフトレジスタ的に考えればいいのか。しかも再帰。
やっぱりプログラマは天才が多い。
でも再帰って難しいな.......... まさか再帰使うと思わなかった。 再帰ってn!とかクイックソートくらいしか使えないと思ってたわ。 やっぱりプログラマーになるには再帰使いこなさないとだめですかね?
再帰なんか大学でしか使わないよ
というかごちゃごちゃ言いましたけど
>>147 のプログラム理解できません....
whileじゃダメなんですか?
narabe関数の中にnarabe関数は一つだけですよね?
つまり右から左に一直線に戻るだけですよね?
そこらへん分からないので教えて下さい。
再帰は普通に使うよ 並べ替えは再帰が基本 でも C++ の next_permutation みたいに 再帰を使わないアルゴリズムもある 理解が非常に難しいのでライブラリとして使う分にはいいけど 自分の作るのは難しいね
再帰なんか滅多に使わない 見にくくなるしアルゴリズムの練習くらいでしか使わねーよ
void narabe(char *d, int n) { int i, j, len = strlen(d); char c; if (n <= 1) { kekka_shori(d); return; } for (j = 0; j < n; j++) { narabe(d, n - 1); c = d[len - n]; for (i = 0; i < n - 1; i++) d[len - n + i] = d[len - n + i + 1]; d[len - n + i] = c; } } ここなんだけど 一直線じゃないなforでn回呼び出してる。 どういうこと?
>>159 木構造扱う場合に普通に使うだろ
サブフォルダ全検索とかツリービューとか
ポインタより再帰のほうがよっぽど躓くよね
再帰なんて簡単だよ したい処理が自分自身なら自分自身を使えばいいだけの話
フォルダ全部舐めたい場合とか 再帰じゃないとめんどくさくね
再帰は下手をするとスタックを食いつぶす 再帰の深さが決まってるとか、知って使っているならよいが と、組み込みのみの感覚ですかね
製品ではありえん
実装に使うことはあまり無いけど、アルゴリズムの設計時検証とかには良く使うかな。 後は、ディレクトリ構成された複数のファイルに何かしらの機械処理を施すような捨てプログラムとか。 perlとかjavascriptとかで。
再帰も扱えないプログラマって……
>>166 ナイーブな再帰を組込みで使うのは確かに贅沢。
尤も、再帰が必要かもという複雑度なら継続相当の実装が吉。
オフィス系業務プログラムなら、PCのメモリに余裕あるから、よほど酷いコーディングでなければ再帰もあり。
ハイパフォーマンス向けなら、コンパイラを選べば再帰レベルは気にしなくていい。
実際は、再帰に展開されるか否か以外の問題の方が大きい。
再帰は終了条件とか最大ネスト回数とか考えないといけないから あんまり使いたくはないけどね。
まあ明らかに深くなる場合は 非再帰化するけどね
そうそう。 再帰を使うのは、パパっと組むのにその方が簡単だから。 それを製品とかに使うかどうかはまた別の話。
むしろ再起って簡単なのよね ループのがよほど難しいけど、ループのが効率的だからループが使われるのであって 難しいってのが実は最大の勘違い、多分慣れの問題でしかない
基本的にスタックを自分で用意するだけだから 非再帰化もそう難しいわけじゃない ただ美しくない
177 :
デフォルトの名無しさん :2013/04/27(土) 22:04:04.16
再帰よく分かりませんね昨日の者です。 void abc(int n) { @ abc(n-1); A } x番目に格納されてるabc関数の@とAの場所でnの値が変わったりする事 ありますかね?
@とAで変えたりnのアドレスをグローバルに置いて他で無理矢理変えたりしない限り変わらない
180 :
デフォルトの名無しさん :2013/04/27(土) 22:31:09.89
>>178 abcを呼び出したことによって@とAで変わってることってなんなんですか?
これが理解できません。
>>180 その関数ではあまり意味がないよ
まずは簡単な階乗計算とかを見た方が良いと思うよ
>>180 printfとかしてりゃ出力内容は変わるわな
そういう事してなけりゃ何も変わらない
再帰関数で戻り値の型がvoidなのは
そういう副作用を伴う場合しか意味が無い
階乗を求める関数を考えてみる
unsigned int factorial(unsigned int n)
{
if (n <= 1) {
return 1;
} else {
unsigned int tmp = factorial(n - 1);
return n * tmp;
}
}
factorial の再帰の前後で何か状態が変わるかと言うと、全く変わらない
状態は変わらないけど、新たに戻り値が得られる
戻り値は関数への引数が変われば異なる値になる
この関数は数式の
0! = 1
1! = 1
n! = n * (n-1)!
を素直にそのまま関数にしたもの
数式が理解できるならCのコードも理解できなければおかしい事に気付くこと
スタックが128バイトしかないとかザラだしな
組み込みって一言で言っても広いから何とも言えない 豪勢な環境もあるし
何ぼ豪勢でも、再帰と動的メモリ確保はダメだ 理由は組み込みだから、としか言えないが
>>183 まあ確かに入門書にはそう書いてあるな。
組込みにかぎらず、C用コンパイラは、末尾再帰最適化できないものが未だ多いから要注意だな。
末尾再帰なんてどうでもいいだろ
単純なループに直せるものを再帰の例としてあげるアホが多過ぎ
66C33 (二項係数) = 0x64308FE91AE4E60C をunsigned long longで正確に計算する方法を教えて下さい
順列(空の集合)=空 順列(集合)=集合の各要素(但し同じ物は除く)と順列(残りの集合)
一桁ごとに配列に入れて繰り上げ繰り下げを手動で行う
>>191 多倍長演算ライブラリ使え
結果がunsigned long longに収まっているなら、正確にもとまる。
>>191 #include <stdio.h>
long long gcd(long long a, long long b){
long long c;
while((c=a%b)) a=b, b=c;
return b;
}
void cdiv(long long *a, long long *b){
long long t;
t=gcd(*a, *b);
*a/=t;
*b/=t;
}
long long nCr(int n, int r){
long long u=1, l=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&u, &ml);
cdiv(&l, &mu);
u*=mu;
l*=ml;
cdiv(&u, &l);
}
return u;
}
int main(void){
printf("%I64X\n", nCr(66, 33));
return 0;
}
>>195 訂正
long long nCr(int n, int r){
long long u=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&mu, &ml);
cdiv(&u, &ml);
u*=mu;
}
return u;
}
>>155 大丈夫
あるとき回路が通じて、それ以降は再帰で**しか**書けない体に変身します‥‥多分幸せになれると思います、いやしあわせになれるかな、なれるかもしれない、なれるかどうかわからないけれどもふしあわせじゃないとおもいこめることはたしかだ、たしかか?
>>186 ダイナミックに確保も禁忌、というのは、ある意味すごいですね。確かに安産性は向上するような気がしますけれども。
アマチュアには想像すらできない世界なんでしょうね
無職の癖にアマチュア批判とは片腹痛い
どっちでもいいんだよカス プログラムだけでなくて国語まで出来ないのか
人の揚げ足取って喜ぶとか小姑みたいな意地悪さ しかも揚げ足取りになってなくて墓穴を掘ってるし
>>201-202 ×片腹痛し
○傍痛し
言葉の意味を十分にappreciateしてないからこんな間違いをする
あちこち荒らすな まとめて隔離スレへ引っ込め
>>203 だからどっちでも同じ意味なんだって
日本語分からない?
>>205 通例がそうだから、という理由だけで先人の間違いを無批判にそのまま踏襲してしかもそのことに無自覚‥‥
>>207 早く生まれたからと言って無条件に尊敬してもらえると思ってる馬鹿?
通例がそうだからそれでいいじゃん
頭大丈夫?なわけないか
精神科行ってるんだもんな
日本語をまともに理解できないクズがこういう揚げ足取りに必死なのを見ると笑える
>>209 だから精神科行って薬飲んでるんじゃね?
カスとかクズとかゴミとか連呼してるレスを追っていくと 毎回同じことしか書いてなくて面白いよね。
>>211 そりゃあ頭が悪いボキャブラリーが少ない同一人物が書いてるからだろう
同じ人間を罵るのに違うこと書いてたらおかしいだろ
Qが精神攻撃に反撃しようとするなら、Q自身も精神医学を勉強しなければならないが、 そうなると勉強の途中で自分自身に大きな精神の歪みがある事を嫌でも自覚せざるを 得ない時期が訪れる それを乗り越えて初めて精神医学が身に付くのだが、恐らくQには無理で、途中で 逃げ出すだろう事が火を見るより明らかだ
次のようなコードがあったのですが、この2行目って要りますか? if (!msg) return -1; if (!(msg[0])) return -1;
これが思考停止か
>>215 msgがポインタか配列かわからないのでどちらでも対応可能にする。
1行目はmsgがNULLポインタだったら-1を返す。
2行目はmsgが仮に配列であっても要素0の値が0なら-1を返す。
しかし後の祭りである
>>219 なるほど、解説ありがとうございました。
>>186 ん?組み込みはスタックサイズ小さいからメモリ確保は、基本ヒープをつかうときいたことがあるのだけど勘違いか?
昔のcomを作るイメージ
>>222 msg == NULL だと二行目で落ちる
>>223 いやいやヒープとスタックが衝突するのが怖い(そしてこれを厳密に回避することは困難だ)からヒープすら使わずにべったりstaticなのでは?
>>224 msg[0] != 0だったら、msg==NULLってあり得ないかと
>>223 基本ヒープ使っちゃダメだよ
昔のメモリ事情だとどうだったんだろうか
ヒープでもスタックでもなくデータセグメント(セクション)って組み込み怖いなー
>>226 NULL番地のデータが0でないのがあり得るあり得ないの問題じゃなくて
NULL番地のデータを読み出そうとした時点でOSに落とされるからチェックが要るのよ
>>226 パンツ脱ぐのとうんこ出すのと
順序間違えると大変なことに
>>228-229 ああ、そういうことね
組み込みだと普通に0番地使うから、分からんかったわ
>>228 問題のコードではmsgがNULLポインタだったらリターンしてしまうから
2行目が実行されることはあり得ない。
>>231 msgがchar配列、ポインタが32bitの場合で、msg[0]==0でmsg[1]〜[3]のどれかに0以外が入ってるなら2行目行くんじゃね
>>231 その問題のコードの1行目が要らなくねってレスがあったから説明したんよ
組み込みってもOSレスからLinuxみたいなものまであるわけで
死ねゴミw
239 :
デフォルトの名無しさん :2013/05/01(水) 03:30:10.77
うるさいゴミ
240 :
デフォルトの名無しさん :2013/05/01(水) 13:09:29.46
a=f(x)+g(y); これって、f(x)とg(y)のどっちが先に実行されるかって 仕様で決まってたっけ? それとも不定?
不定です
242 :
デフォルトの名無しさん :2013/05/01(水) 14:53:33.39
現在このスレは閑散としてるがQZがいつ自演質問を再開させるか分からない状態 ここ最近このスレで不正に宿題と思わしき質問が投下されたので注意が必要 監視を続ける
>>240 >>241 にはこのコピペが最適↓
ネットでののQ&A見たら、何も勉強してこなかった
日本人の絶望的なほど劣悪なレベルを見せ付けられる想いだ。
質問者の意図も理解できないし、理解する姿勢に欠ける。
自分で確かめもしないで、思いつきで断片だけを回答する。
質問者も自分で解決したら、なにも示さず解決したという
コメントで終了する。
甘やかされて低脳さを遺憾なく発揮している。もう理系も絶望
的だから文系はどうかと思へば、悲惨のひとことだ。
もう日本の大学を折りたためよ文部省。
こういう自分でプログラミング言語を開発する極一部の有能な若者が、
浮いてただ利用されるだけで本当に気の毒だね。
C言語でレジストリのeipやebp等の動きを表示したいのですが どうやってみればいいでしょう? gcc -S test.cだとアセンブラソースが作られてみれるんですがソースだけで肝心のトレース部分をみることができません eipやebpやスタックの動きを見れるやり方教えてください Windows7です
>>245 >教えてください
情報に見あった金額が提示されてないのに誰が答えるの?
インラインアセンブラを使うのが簡単かなぁ。 インラインアセンブラで書いても gcc は最適化しちゃうんで、 最適化をオフにするか volatile 指定を付けるのが楽。 プログラム的に必要っていうのではなく、挙動を観察したいという場合ならデバッガを使った方がいいと思う。 gcc と連携しやすいデバッガと言えば gdb だけど Windows なら OllyDBG か Immunity Debugger が人気。
249 :
245 :2013/05/01(水) 16:07:48.38
>>247 わざわざElipseなんていらねーよバカが死ね
>>248 やっぱりgdbですか
インラインアセンブラはダサいのでデバッガのほうにしてみます
>C言語でレジストリのeipやebp等の動きを表示したいのですが レジスタ と読んでの前提 まさかデバッガを作りたい って話じゃないよな?
QZ急速な勢いで自演レス
>>247 が馬鹿の見本みたいで笑えるw
いや、馬鹿すぎて笑えないレベル
結局入門書どれがいいんでつか? 高いから数買えないんです。・°°・(>_<)・°°・。
eipとebpを見たんですが leaveっていう命令でてこずってます leaveって mov esp,ebp pop ebp これと等価らしいんですが gdbでトレースしてleaveをsiで実行してespを見たけどebpの値になりません ebp=0xbffff4e8 esp=0xbffff4b8 leaveをやったら espはebpの0xbffff4e8になるはずですが espは0xbffff4ecになります 何故ですか?教えてください
enter/leaveなんて誰も使わないから忘れてよろしい 遅いだけ
popしてるからだろ
>>257 popする前に代入してますよね?バカ?
中身の分からないバイナリファイルの中身を調べて型に合った変数に代入ことはできるのでしょうか?
>>258 だから、代入してからpopしてるから
popでずれてんだろw
変数に代入はできる 未知のフォーマットで書かれたものに対して 中身を調べて=バイナリの並びから 型に合ってるかどうかを知る術がない
sub関数 call時 esp=0xbffff4ec ebp=0xbffff508 コード push %ebp 実行時 esp=0xbffff4e8 ebp=0xbffff508 スタックに0xbffff508 mov %esp,%ebp 実行時 esp=0xbffff4e8 esp=0xbffff4e8 スタックに0xbffff508 sub $0x30,$esp 実行時 esp=0xbffff4b8 esp=0xbffff4e8 スタックに0xbffff508
264 :
デフォルトの名無しさん :2013/05/01(水) 20:30:25.46
>>627 3.5のパラグラフ3〜4と7.1.1のパラグラフ8を総合した結果だろうな
分かりづらいけど、例もあるし、少なくとも間違いはない
>>265 右のはebpねミス
leave 実行時
esp=0xbffff4ec ebp=0xbffff508
leaveの命令
mov esp,ebp
pop ebp
ebpをespにやるんだから espは0xbffff4e8になるはず 代入してる
popで最初にpushしておいたebpを取り出して ebpは0xbffff508であってるけど
espがなんでcall時の0xbffff4ecになる?
268 :
266 :2013/05/01(水) 20:40:29.43
誤爆・・・
pushでespが動いてんのにpopで動かないと考えるこの馬鹿
>>267 popしたらスタックポインタが動くのは当たり前だろ
popが何をするものか分かってるか?
というかスレ違いだ
>>270 やっとわかった
espがスタックの末尾にあってプッシュやポップにあわせて常に変化するってことをわすれてた
だからpopしたときプッシュ前のアドレスになったわけね
スレ違いだバカが死ね って言ってやるべきだろ
push %ebp このpushされたebpアドレスはどこでみれんの? info fってやっても表示されないけど
ミス このpushされたebpアドレスが保存されてるスタックって 縦長に見る方法ない? こんなふうに +++++++++++ ESP + 戻り値 + +++++++++++ + one + +++++++++++ + two + +++++++++++ + three + +++++++++++ EBP + 基底 + +++++++++++
いい加減アセンブラスレに行け!
C言語で聞いて
i fでやったら saved eip(戻り値アドレス)は表示されるけど push %ebpが表示されない プッシュされたものが表示できたら便利なのに表示できねーのか?クソだな
アセンブラスレで聞いたらこのドシロウトが!ってバカにされるだろ ここでやってればCしか出来ない奴にスゲーって思わせられるからいいんだよ 俺はずっとここにいるぜ
ほらやっぱ自演だったろ
281 :
デフォルトの名無しさん :2013/05/02(木) 13:44:19.46
メモリ確保したポインタを解放した後NULLで初期化する関数myfreeを作りたいのですが、 以下のようにすると初期化されないので void *myfree(void *p) { free(p); p=NULL; return; } 仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません もっとスマートな方法はないでしょうか? void *myfree(void *p) { free(p); return NULL; }
>>281 #include<stdio.h>
#include<stdlib.h>
void *myfree(void **p)
{
free(*p);
*p = NULL;
return NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
p = myfree((void **) &p);
printf("%p\n", p);
return 0;
}
ポインタへのポインタを使う方法じゃだめなの? void myfree(void** pp)
void myfree(void** p) { free(*p); *p = NULL; } 呼び出しで &付きになるからキショイ
>>282 間違った。
#include<stdio.h>
#include<stdlib.h>
void myfree(void **p)
{
free(*p);
*p = NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
myfree((void **) &p);
printf("%p\n", p);
return 0;
}
キショいね
マクロの #define MY_FREE(p) do { free(p); p = NULL; } while (0) これも賛否ありそう
>>283 規格上はダメ、ゼッタイ
voidポインタとそれ以外のポインタは互換性が保証されないので
あー、でも、charポインタと構造体共用体ポインタは互換性があったっけ?
まあ結局intポインタとかはだめだけど
だから、Cならマクロにするしかない
C++ならテンプレートにできるけど
マクロにしなくてもp=free(p),NULL;でいいじゃん?
>>288 >仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません
>もっとスマートな方法はないでしょうか?
って話なので、その案は微妙な線?かな?
290 :
281 :2013/05/02(木) 14:49:28.70
皆さんどうもありがとうございます
&でポインタへのポインタを使う方法は、自分の環境ではコンパイルエラーになりました
(エラーの正確な内容は失念しましたが、構造体のサイズが不確定というエラーだったような)
関数に渡す時に(void **) でキャストすればエラーが消えるのでしょうか。
しかし
>>287 さんによると規格上ダメとのことなのでやめておきます
>>288 さんの方法は初見でしたが、ポインタ名を二回記述するやり方はポインタ名が長い場合に不便なので1回にしたいのです
マクロを使う方法が一番よさそうなので、試してみます
どうもありがとうございます
291 :
デフォルトの名無しさん :2013/05/02(木) 15:01:42.15
「規格」ってタームが混ざってるだけで簡単に騙される
>>290 哀れwwwww
投稿前に確認すらできないゴミが「アホはだまっとけ」だってよ やっぱゴミはゴミだな
何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前の手順なわけだが、
それができていないってことはプログラミングやる資格はないよ。
そしてそんな奴が調子に乗って回答してる。
>>292-293 はこのスレのレベルがいかに低いかを身をもって示してくれている。
それでもまだここで質問するのはまともじゃないよ。
そりゃ規格を一番に考えるだろう
>何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前
マでなくとも人間なら普通おおかた
>>292 は池沼か社会経験のないニートか学生風情
使い終わったポインタにNULLを入れるのって、ヘタクソの習慣だよな。
リンクを貼るのってコピペするだけでミスの入り込む余地なんてないと思うんだけど、 携帯とかからわざわざ手打ちで貼ってんの?
>>300 俺も思ったw
何をどうしたら間違えるんだろうなw
>>298 それ以前にいちいちfreeすること自体が、設計ができない証。
規制で携帯から手打ちなんだよ 察しろ
>>302 いやいやfree()はするだろ。
free()のあとに機械的にNULLクリアするってスタイルはヘタクソ。
こういうのを真に受ける人がいると思っているのかね 言動からしてレベルの低さが窺えるからスルーしかされないだろうに
>>304 獲得したメモリをいちいち解放するなんて、
自分でメモリが管理できていない証拠じゃん。
設計ができていれば必要なメモリ量もわかるので
獲得した後解放するなんてありえない。
ちょっと何言ってるかわかんないです
がたがた言わずにmallocしちめえ!いらなくなったメモリはそのつどfreeだ!
>>303 やっぱりそうか
ケータイから手打ちしてまで書き込みたいとか
>>292 は自己顕示欲の塊かよw
まっとうなプロダクツはじゃ、まず見ないスタイルだよね。 free()のあとにNULLクリアをするって規則のコーディング。
まあポインタを使い回す事自体があまり良くはないからな でも、全うな製品ならそれでもNULLクリアするのが普通だけど
312 :
デフォルトの名無しさん :2013/05/02(木) 17:01:44.36
うるさいゴミ
「ヘタクソがいる現場だと有効だ」とか思われてるのかもしれないけど、 たぶん実際的な効果はなにも無いんじゃないのかね > NULLクリア
NULLクリアしてるまっとうな製品って、どれのことだろ。
安全性への意識の高さの問題だよ NULL埋めしない人は経験上他も大体いい加減
世間的に安定性とか評価されてるプロダクツでもべつにNULLクリアなんてしてないしな。
安全性への意識て、ミスを根本的になくすことよりミスったときに誤魔化すことを優先すること?
ポインタがNULLか非NULLかでフラグのような動作をさせるってのは よくあるテクニックだよ。TLV式のプロトコル実装とか、当たり前のように 使ってるよね。
free()した直後にポインタ変数の寿命がくるなら nullクリアなんていらないけど まだ使う気があるならnull入れておくかな なんかバグったときにassertにひっかかってくれる
NULLクリアを自動化しておけばバグが入った時の想定される原因の一つが消えるじゃん
>>317 ミスを根本的になくすことと同時に
ミスったときにそれを確実に拾えること
可能なら対処する(ごまかす)のは別の話だね
>>318 そういう話じゃなくて、ルールで機械的に、処理とか文脈とか関係なしにNULLクリアしましょうってのが是か非かって話。
>>322 そんなの、その場の空気と宗教に従え、以上の答えあるの?
答えが分かったうえで議論の練習したい人とかfj.lang.cごっこしたい人は
別のスレでやってね。ぜんぜん入門編じゃないからね。
>>322 是でいいと思うよ
ふつうにうしろに処理足される可能性あるし
なによりnull入れて困ることはないってのが
でかい
free 時に 確保領域に書かれてる内容を適当にぶっこわしてくれる機構 がうれしい ポインタを別変数にコピーしてたテヘッ 用だね
NULLクリアって定数左と同じようなテクニックに見える
NULLを入れない場合→破棄後に参照しても動く事がままある NULLを入れる場合→参照するとほぼ死ぬ どちらがミスった時に誤魔化すことを優先しているかは一目瞭然 NULLを入れない方だ NULLを入れない人は想像力が貧困で、プログラムには向いていない
それ以前にfreeもしないって人は世界が違うんですか?
おそらく神の領域に達しているのだろう
>>329 自信がないからバグを必要以上に恐れている。
典型的似非プログラマの特徴。
俺のプログラムにバグは無い
>>330 組み込みの世界ではそれが当たり前なことも珍しくない。
malloc/freeがあるとは限らない。
マルロック
>>332 みたいなのが、なんとなく動くだけの、分かりにくいバグの多いプログラムを量産するんだよな
プログラマが自分を信用しないのなんて常識じゃない
>>336 プログラムが落ちないと品質を保証できないクズプログラマの典型。
>>336 いちいちNULL入れる人って、mtraceとか使ってきちんとテストしたことないんだろうな、って思う。
>>337 とうとう支離滅裂になったか
論理性の欠片もない
プログラマの資格もない
>>336 プログラムが落ちることを前提にバグとりをする人って、
落ちないバグとりどうしてるの?
NULLだろうがNULLでなかろうが、参照すること自体がバグなのだから
落ちる落ちないってのは、楽をする方法なのであって、品質を確保する
方法でないってのはわかるよね?
>>340 ただのフェイルセーフに何言ってんの?
何かあった時に検出できるというだけで、
基本お世話にならないようにプログラムするに決まってんじゃん
NULL入れようが入れまいが、やることは同じ ただ、NULLを入れた方がバグの検出確率が上がるしデバッグのしやすさも微増するから入れるってだけ 逆に聞くけど、入れないメリットって何よ
343 :
デフォルトの名無しさん :2013/05/02(木) 18:49:20.40
答えは出たみたいだな
だな わざわざNULL入れる無駄な処理書いてる奴は給料泥棒 そんなくだらないことに時間使ってザンギョウガーデスマガー
はたから見てたけど、NULL 入れない人が頭悪そうってことだけは分かった
347 :
デフォルトの名無しさん :2013/05/02(木) 19:05:22.28
糞リンゴがとうとう社債発行w どんどん追い詰められていきますなぁw
ジョブズに影響うけてジョブズ=最先端のIT技術者!!!と思い影響うけてMac買ってた低脳 さっさと死ぬことだなゴミは
>>279 ってどこかクラッキングしてるのか?
通報した方がいいのかな?
リンゴは株価が大暴落してるって1週間くらい前にニュースになってなかったか?
>>342 入れないメリットなんてないですよね。デバッグが少しでも楽になるのであれば、それが微増あっても入れておきます。いろいろ手を打ってお世話にならないようには心がけますけれどもね。
入れない人って、デバッグでのたうち回ったことのない人なんじゃないかなあ‥‥‥
>>290 >しかし
>>287 さんによると規格上ダメとのことなのでやめておきます
そんな規格はないと思います。void * から任意のポインタへの代入は、 C であればキャストなしに可能です。
また、自分が何をしているかわかっているのであれば、非void * をキャストして void * に代入することは、よくある手法です。
qsort() を調べてみてください。
>構造体のサイズが不確定というエラーだったような
void * をインクリメントしたりするのは、あまり行儀のよくない、とは C++エキスパートからはよく伺います。ただ、
>>287 C ならば、void * は char * と互換性がある。構造体のポインタが交換可能云々は、要はアラインメントの問題だね。
ISO/IEC 9899:1999 6.2.5.26
A pointer to void shall have the same representation and alignment requirements as a
pointer to a character type.(以下続くが略)
貴様は
http://toro.2ch.net/test/read.cgi/tech/1313183984/ で勉強したまえ。:-)
>>348 ジョブズはゲイツの次にすごいと思うよ、ITの先端ではね、
だけど自分の会社を、自分がいなくなった後でも存続できるように体制を整えたり、後継者を育てたりってことはできなかったよね
一番起業してはいけないタイプの人間
それじゃ残された社員や株主が可哀想
ゲイツはその点しっかりしている、生きてるうちに身を引いた
これはゲイツがすごいわけじゃなくて当たり前
その当たり前のことができず、チヤホヤされたいがために後継者育てずに新機種連発するゴミクズがジョブズ
技術やアイデアがすごくても残された人間の生活を考えない辺りクズすぎる
総合評価としては世の中に要らないゴミだったよねw
()
>>351 今はvoid**の話だっつーの!
例えば、int*が4バイトでvoid*が8バイトの時に
int *p;
*(void**)&p = 0;
としたらどうなるか考えれ
>>354 >int*が4バイトでvoid*が8バイトの時に
far/near を思い出しますねえ :−)
int far * near * とか奇天烈なことをやっていた記憶があります‥‥‥すまん
iphone5、結構便利に使っているし‥‥ 他社のandroidをみると、サイズが大きすぎて片手に入らなくて使いにくそう‥‥ iphone を応援したいなあ、なにか支援する方法はないものか‥‥ obj-C ってむずかしいのですか?
358 :
デフォルトの名無しさん :2013/05/02(木) 20:27:04.29
ぶっちゃけアップルがなくなっても困らない
>obj-C ってむずかしいのですか? このクソコテwww 何も成長してねーんだなwww
りんご終了。
361 :
デフォルトの名無しさん :2013/05/02(木) 20:57:36.90
まだリンゴ製品買うって奴は次のどれか 馬鹿 基地害 池沼 低能 情弱 阿呆
freeのあとNULLをいれるのはお行儀以外にもダブルfree防止なんてのもある。 あと、 お行儀の話でいえば、使い終わったバッファは0クリアしておくなんてのもあるなぁ。 (ヒープだけじゃなく、スタックも対象) 最近はそんなことやってないけどw 本来、秘密情報に対してはやっておかないとまずい。
MSシンパキタコレ
うああああああああああできたああああああああああああああああああああああ suid権限あたえてなかたあああああああああああ
>>359 おまえ単に気にくわねぇだけだろw
専門板に感情論は不要なんだが
368 :
デフォルトの名無しさん :2013/05/03(金) 04:55:58.67
乱数について分からなくなってしまったのでご教授お願いします。 ゲーム用にある整数域の間でランダムな値を取りたくて、 関数を作っていたんですがなぜか返り値が固定されやがります。 しかもどの乱数に固定されているのか調べようとprintf仕込んだら、 今度は問題なく動いてくれちゃったりしてちんぷんかんぷんです。 できれば返り値を固定したくないのですが、どのようにしたらよいでしょうか? 以下、同じ状況を再現したコード。 #include <stdio.h> #include <stdlib.h> #include <time.h> int getrandom(int min,int max) { //printf("%d\n" , rand()); /* ←ここのコメントはずすと乱数が固定されない */ return ( min + (int)( (rand()/(1.0+RAND_MAX)) * (((double)(max-min)+1.0) ) ) ); } int main(void) { srand((unsigned int)time(NULL)); int x = getrandom(0,6); printf("%d\n" , x); return 0; }
そのコードを実行したら固定されなかったから、 書いてない部分のコードでメモリ破壊系のコーディングミスがあるとのエスパーでFA
>>369 乱数種があまり変わらないので、
最初に出てくる乱数にもあまり差がないようだね
線形合同法の乗数が小さいんだと思う
だから、余りを使用する方式だと大丈夫だけど、
1+RAND_MAXで割る方式だとほぼ同じ値になるようだ
最初に数回rand()を呼ぶようにするといいよ
ウォームアップってやつ
>>370 実は2種類くらい実行環境を用意して、
このコードそのまんま試してもダメだったんです・・・orz
>>371 ためしにrand()2回呼び出してみたら乱数の固定がなくなりました。
ウォームアップという発想が無かったので大変助かりました。
ありがとうごさいます。
rand()は鈍いし、質が悪い。 メルセ○○ツイスターとかいうのでいいんでは。
375 :
デフォルトの名無しさん :2013/05/03(金) 13:53:57.30
>>374 みたいなクズが甘やかすから初心者がいつまで経っても初心者の域から脱出できない
おれがクズ おがクズ
('_')
すり抜けたときww
typedefをexternできますか
383 :
デフォルトの名無しさん :2013/05/03(金) 15:53:14.25
馬鹿だのクズだの、ガキかお前ら
C言語でNOP,シェルコード,偽の戻り値をbufferにコピーした後の動作がよくわかりません コピー先 buffer[500] コピー元(argv[1]) 600バイト(NOP,シェルコード,偽の戻り値) strcpy(buffer,argv[1]); buffer sfp RET になりbufferが600バイト分超過してsfp,RETが書き換えられますよね? 書き換えられたらどうなるんでしょうか?bufferの一番上からアドレスの中身を実行していくのでしょうか?教えてください
そもそもエリアオーバーでコピーするコードを書く目的がわからん。 どうなるかを知りたいならやってみればいい。
>>386 nopスロープとかウイルス作る気満々じゃねーか
誰が答えてやるか通報すんぞ
マジレスするとx86 x64ならDEP有効で実行されないよ
皆攻撃したくてたまらない
>>389 コンパイルオプションで外せなかったっけか
戻りアドレスをNOPが入ってるアドレスに渡せばいいだけでした そうすれば戻ったときアドレスが指してるNOPを実行してシェルコードにたどり着くんでした
>>362 >使い終わったバッファは0クリアしておくなんてのもあるなぁ。(ヒープだけじゃなく、スタックも対象)
厳密なんですね‥‥輪廻転生されるとやっかいですからね‥‥私は乱数で埋めていました‥‥これはあんまり役にたちそうにないなぁ
>>395 板違いだぞ。
自己紹介は自己紹介板でどうぞ。
たかがC言語でよくこんなに語れるもんだ…きも
>>391 DEPはコントロールパネルの設定だからコンパイルオプションでは
回避不可能。DEPはXP SP2以降(SP3だったかも)に搭載されていて
デフォルトではWindowsの重要なサービスに対してのみ有効。
間抜けな(といっては失礼だが)ユーザのほとんどはDEPの設定など
知らないから、デフォルトのままで使っているはず。そういう間抜けを
出し抜くウィルスぐらいなら作れるだろう。
/NXCOMPAT に対応してないXPを窓から投げ捨てろ
Head First Cという本で勉強しているのですが構造体で詰まりました。 下記のra->width、ra->heightの値は定義していないように見えるのですが いったいいつ定義しているのでしょうか? typedef struct{ int width; int height; } rectangle; int compare_areas(const void* a, const void* b) { rectangle* ra = (rectangle*)a; rectangle* rb = (rectangle*)b; int area_a = ra->width * ra->height; int area_b = rb->width * rb->height; return area_a - area_b; } int main() { int i; int scores[] = {543, 323, 32, 554, 11, 3, 112}; qsort(scores, 7, sizeof(int), compare_areas); return 0; }
rectangle* ra = (rectangle*)a; rectangle* rb = (rectangle*)b; ここで既に宣言してる
>>401 何か変なコードだな。
なんで compare_areas(); は int の配列の要素のアドレスを受け取って
それを rectangle と判断して処理しているのだろうか
>>401 ありえんだろこのコードは
写し間違いじゃないのか?
405 :
401 :2013/05/04(土) 19:43:24.86
>>402-404 返信ありがとうございます。
写し間違いではありません。
内容としては「矩形を面積の小さい順にソートする」というものです。(P330)
あまり良いコードではないようなのでスルーして次に進もうと思います。
良いコードじゃないけど、 Cで書かれたものって「良いコード」ばかりじゃないので、 一応は読み解けるようになっといた方がいいとは思う。
スルーする前に、何で変だと言われたのか理解できるようにはなった方が良いな
悪いコードだろ 読み解いた結果は 書いた奴バカ
409 :
デフォルトの名無しさん :2013/05/04(土) 20:22:40.73
悪 読 書 ↑こいつつまんね悪読書ってなんだよ
C言語でメモリアドレスを指定して表示させたいんだけどどうすればいいんでしょうか? printf("%d\n",0xbffff508); こんな感じでアドレスを指定して中身を出力させたいんですが・・・
printf("%d\n",*(int *)0xbffff508); でした・・・事故解決しました
>>412 お前こそ一言余計
黙ってられない病気か?
というかどうしてブログとの区別がついてないと思ったのかわからん
>>412 さっさと死ねよゴミ
死んだほうがいいですよ
楽になりますよ
質問しつつ、継続して自分でも考えてた証拠だろう 丸投げよりよっぽどいい
420 :
デフォルトの名無しさん :2013/05/05(日) 00:52:13.69
全く考えずにとりあえず脊髄反射で質問し、ちょっと考えたら解決した証拠だろう とりあえず質問する癖がある雑魚
とりあえず脊髄反射で叩く癖がある雑魚
お前ら小学のガキかーーーーっw
. /\___/\ / ⌒ 俺 ⌒ ;\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | (●), 、(●)、 | | キンタマ中古C言語命!!” ⊂. | ,,ノ(、_, )ヽ、,, | < 今日もキンタマ中古C言語でソース乞食するゾォォオオ〜っ♪” ,r----、__|.Javaト‐=‐ァ' .::::| | 仕事レポート全部くれくれ乞食するぞォォォオオオオ〜っ!” /Ruby \最強ニニ´ .:::/ \____________________ (ひま,/¬--v \____/⌒\ /⌒ ( ] |丶 ̄ ̄ /丿 丿 ─ (_ _丿 ,ノ--v_\ 糞 ノ ノ 今日も見にくい小文字でプログラミングするぞ〜!!(ギャハハ!!wwww”  ̄ ノ宿敵 リ--─ーARM八 〔 マシン語 Python__,ノ′ヽ ギブ・ミー・レポート!!!! ギブ・ミー・ソース!!!! ,ノ'' ー--ー┘■■ ̄\ │ / /  ̄■■■/ \ | #○&#$△#%&$▼&%#!!!! ノ /]アンチ|■AMD命|\| \\ (↑意味不明w) | / .| Intel | ) ノ |/′ | .| |---く | | \ ] ※)一部見苦しい部分がありますが御了承下さい。 .
宿題スレで心を潰されたんだねかわいそう
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
文字列をインライン展開する方法ないですかね? 電卓プログラム作りたいんですが、文字列そのまま代入して 計算させたいです。
できません
429 :
デフォルトの名無しさん :2013/05/05(日) 17:44:45.30
ということは優しい
>>428 がやってくれるんだな?
431 :
デフォルトの名無しさん :2013/05/05(日) 17:51:17.88
>>430 結局他人頼みかボンクラ
テメーでやれよパーかおめ
>>431 そこまで言うならお前がやったれや
俺は酒飲んでて今から寝るんだよ(笑)
お前らどんだけ寂しいんだよ。。
GWだからかな
>>428 が俺に任せろって言って1時間以上たったが未だに
レス無しかよ。GWだなぁ。
インライン展開ってどういうことだ?
やるやる詐欺
やりたいことが伝わっていないから もう一度詳細に書いて ”文字列をインライン展開””文字列そのまま代入”の意味が伝わらない
文字列を数式に展開したい。代入は感覚で言っただけで意味はないです。
440 :
デフォルトの名無しさん :2013/05/05(日) 18:30:07.11
そうだそうだ 仕様書も出さずに作れとか馬鹿の極み
>>426 のやりたいことは逆ポーランド記法で解決出来ないか?
なんっすかそれ。
発達障害たちの自己紹介祭り
字句解析、構文解析を行って、文字列を木構造に変換して再帰的に解釈する パーサジェネレータで検索
レゴをC言語で制御したいんですけどお勧めの開発環境教えてくれませんか?
インライン展開とは、関数呼び出しを止めることです
(式が書かれた)文字列に従い 式の評価・演算を行いたい yacc 使うまでもない感じ?
c言語の参考書買う奴って何なんだろう。 ネットに入門サイトいくらでもあるじゃんね。
yaccまでやらんでも、再帰下降構文解析あたりで調べれば出ると思うよ 課題だとしたらその辺りのこと想定してるんだろうし
つかcodepadのほうが好きなんだけど ここではIDナンバー1のほうが流行ってるの? codepadのほうが見やすくて好きなんだが。
452 :
デフォルトの名無しさん :2013/05/05(日) 20:14:48.59
>>451 お前の好みなんかどうでもいいんだよゴミ。
そんなに書きたきゃブログに書いてろクズが。
二度と来るな。
>>452 2度と来るなという事は3度目は来ていいんですか?
3度目来るためには2度目来ないといけないんですが(笑)
while(1){;}の後の関数の気分です。
char i[]={"\x0f"}; printf("%d\n",i[0]); この結果15 char i="\x0f
char i="\x0f"; printf("%d\n",i); この結果-32 何故?
>>455 signed char i = (signed char)&"\x0f"[0];
printf("%d\n", (int)i);
ポインタを整数変数(char i)に代入しようとしてる char i = '\x0f';
charを%dと%cで比べて遊んで見れば良いんじゃないかな
char i = *&"\x61"[0]; printf("%c\n",i); これでできました 文字列リテラルの存在忘れてました
char i = '\x61'; printf("%c\n",i); ではだめなのか? 何をやりたいかわけわからん。
>>462 ''と""に入れたとき違いがよくわかってなかったので試してました
下みたいなコードだとコンパイルでウォーニングが出るけど、引数のconst止めるのと代入でchar*にキャストするのと、 どっちがいいでしょうか static unsigned char* b; void foo(const unsigned char* a) { b = a; }
*bは書き換えるのか? リテラルを渡してやろう foo("abc");
>>465 const で宣言した変数が const でない挙動をする (キャストで const を剥がす) のは間違いのもと。
>>430 それだと、「それなら、黙ってろ アホ!」とならね?
リテラル(大爆笑)
どこが面白かった?
リテラル(大爆笑)
>>466 がおかしいのは、そもそもfooのコール前のウォーニングのこと言ってるってのと、
引数と代入先がchar*じゃないってこと
char str1[] = "hoge"; /* (A) */ char *str2 = "hoge"; /* (B) */ このBのほうは文字列リテラルのhogeの先頭アドレスをポインタ変数*str2に入れてるのはわかるけど この"hoge"の先頭アドレスはデータセグメントに入ってるの? AのほうはAuto変数だからスタックセグメントに入ってるとわかります 定数はデータセグメント?教えてください
>>475 どちらも"hoge"はデータセグメントです。
Aはmemcpyが走るだけです。Bはデータセグメントへのポインタが入ります。
>>476 >(A) は、単なる配列なので 'h', 'o', 'g', 'e', '\0' というデータはスタックというところに置かれます。
と書いてあるけど?・・・
Aはstr1[0]='a';みたいに書き換えできるけど
Bはstr2[0]='a'みたいに書き換えできませんよね?
データセグメントの中にも書き換えできるのとできないのがあるんですか?
リテラル(大爆笑)
>>477 str1,2ともローカル変数ならスタック、グローバルなら変数領域に割り当てられる
hogeの実体は、str1はstr1に、str2は定数領域に入る
ってggったら出てきた
必死必死w
グッドウォーニング
リテラル(大爆笑)
>>465 bがconstでない時点でconst宣言したアドレスをコピーするのはまずいだろう。
いつ書き換わるかわかんないのに
>>483 >関数の引数が関数自身によって変更されない値を参照するポインタならば、関数の引数をconstとして宣言する
少なくとも関数内では書き変わらないから、関数自身による変更さえなきゃconstで宣言するものかと思ったんだが
大炎上w
QZただいま自演にて発狂中
2chで自演云々言う奴めんどくせ
自演バレしたからってお行儀が悪いなQZ
>>491 QZじゃねーから
証明できないけど、2ch運営にでもIPきいたら?
今小6で自分でプログラミング組んで勉強してるんですがCの次は何が お勧めですか?取り敢えずドスコマンドを自作するみたいな事から初めて 今はサーバークライアント型のプログラムに挑戦しています。 その内3Dゲームもやってみたいと思うんですがライブラリで何か良いの ありますか?友達でプログラミング趣味の子全然いないんですよ。
名前欄にfusianasanって書き込めば自分のIPは出せるよ。 他人が自分ではないことの証明にはならないが。
ふーん、でも本人(QZ)はやらない やってもPCとスマホを使い分けて自演じゃないとか言い出すこと間違いなし
>>494 そう。自演であることも自演でないことも客観的に証明できない
つまり、自演乙wwwwwとか言ってる奴はアホだということ
>>493 C++やるならDXライブラリ
Unityでもいいけど、最初から便利すぎると勉強にならない気もする
>>495 あー知ってます。てか一番最初に覚えた言語ですw
文法が簡単でゲームが作りやすかった記憶があります。
>>499 ありがとうございます。
自分で機能とかも作りたいので低水準のC++をとりあえず勉強してみます。
ただUnityが便利過ぎるというのは初耳ですが本当でしょうか?
リアルタイムレンダリングの機能とかありますか?
>>500 Unityは開発環境だからそういうのとは別
ゲーム作りたいだけなら使えばいいんじゃね
悪い意味でなくて、趣味でやるなら好きにやればいいと思う
>>501 色を付けたりする機能も実装されてますか?グラデーションとか。
ゲーム作りたい人はUnityなんか使ってないから
>>503 じゃぁ何使ってるんですか?ゲーム作ってる人って。
とりあえず……ググれ
>>502 だからそういうライブラリとUnityは別ってこと
ほんととりあえずぐぐれ
>>501 さんはゲームはUnityが良いって言ってるけど
>>503 はゲーム作りには
向いてないって言います。どちらを信じれば?
でもUnityで画像検索したら精巧な3Dクオリティの作品がたくさんヒットします。 3Dと相性は良いのでしょうか?
QZが墓穴を掘ったことに対して恥を感じて自演レスを加速中
プログラミングよりモデリングの勉強しろ Blender使え
Unityとか言う時点で軽蔑の対象だからな Unityの実績みたらPCゲームやネトゲで全く使われてないからな相当ゴミでハイクオリティなゲームには適してないんだろう ゴミはたぶんFFとかドラクエとかで育ってきたゆとりのゴミだからスマフォ向けタワーディフェンスやブラゲとか作ってろゴミ さっさと死ねキチガイ
Blender使いたいんだけどさすがに小6でCUIプログラムしかしてませんから できません。あれって人体作ったらそれを動かすためにプログラムしないと ダメなんでしょうか?
線形代数学の勉強した方がいい 簡単なことなら三角関数を使ってごまかすことができるが 座標変換は日常的に使うし外積つかった当たり判定とかフライトシミュ作ったりするならジンバルロックを考慮する必要がある
ニコニコ動画で3dsmaxの作品があって人物が剣を持って走って きて華麗に宙返りして決めるっていうのでした。 ひとつひとつの動きをプログラミングで作っているのでしょうか?
このキチガイスレチガイは死ね
日本語が崩壊しているぞ在日チョン
ゲームなんか作ってどうするのよ 周りのみんなは受験勉強やら自己啓発で資格取得やら親しい友人と親睦深めたりしてるのに ゲームプログラミングなんかしてても受験、就職、出世、何の評価にも繋がらないぞ 小学生なら受験勉強でもしてた方がなんぼかマシ
QZこの流れを注視し宿題自演質問をタイミングを淡々と窺う
>>519 だって周りがそういう友達ばかりだもん。
だから自分で趣味としてプログラムやって充実してるんだよ。
ゲームはやるので十分だろ 既存のハイクオリティで面白いゲーム以上のゲームが作れるっていうなら別 どうせミニゲームとかだろ 莫大な金かけて作ってるネトゲやPCゲーム以下 ゲー専、アマチュア(同人)とかもしょっべーゲームしか作れてない 変愚蛮怒,,Elona,オンラインゲーム作って運用このぐらいのゲームが作れてスタートライン それ以下のゲームはさっさと死ぬべき
525 :
デフォルトの名無しさん :2013/05/06(月) 19:37:03.34
趣味のゲーム開発の話にオンラインゲームがスタートラインとか言ってる奴がいて笑い死にしそう。
ゲーム開発のスタートは落ち物系だろ。譲れない。
まずはパズルゲームが楽でいいよ 倉庫番とかマインスイーパとか ゲーム作るなら、 ゲームプログラマになる前に覚えておきたい技術 って本がオススメ ただし、C++の本は別に必要なのでちと高い買い物になるかも C++をネットで勉強するのもありだが
C++分からん
馬鹿には無理
530 :
デフォルトの名無しさん :2013/05/06(月) 20:20:31.13
東方厨を越えるゲームを作りたい! まずはみんなでアイデアを出そうぜ
ゲーム製作スレでやれよゴミクズゲー専は
テイルズみたいなゲーム作ってほしい。 ああいう演出に凝った感じのやつ。
テイルズって最近は秘奥義とかFF化してるじゃん、やたら時間食うし キャラが喋りなから秘奥義使ってるけど聞いてるほうが恥ずかしくなるような台詞が混ざってるよな 厨二病の俺でも恥ずかしくなるような台詞だぞ、どうなってんだ
好みはさておきテイルズくらいの作れたら東方は越えられるな。
C++分かるとか神かよ
あれはほとんど演出&声優ゲー ■評価できないところ 秘奥義のエフェクトを除けばグラもPSで再現できるレベル ピカピカドカンズババババな技が多すぎ 基本&戦闘システムがほとんど進歩してない(凝ってない) ■評価できるところ カメラアングルとかイラストの使い方はかなり研究されてる ボイスデータが大量に入っている エフェクトがきれい
C言語なら俺に聞け(入門編)Part 114
横スクロールアクションとかどうよ?? 最近あまり出てないっしょ。 任天堂がたまにマリオ出すくらいでロックマンも新作がでない。
545 :
デフォルトの名無しさん :2013/05/06(月) 20:54:18.52
テイルズがC言語なんかで作れるわけないだろ
スレチが沸いてるな迷惑
>>543 3Dが当たり前のように使えるのに2Dゲーなんかやりたいか?
テイルズ=ヲタ向け
549 :
デフォルトの名無しさん :2013/05/06(月) 20:58:19.03
ミニゲーム作って満足しないよ。 とりあえずネットで仲間集めてそこそこクオリティ高いゲーム作って 同人作品として売りたい。昔のゲームのリメイクとか作ったら良いん じゃないかと考えてる。
550 :
デフォルトの名無しさん :2013/05/06(月) 20:58:27.29
>>547 2dなら酔わないとかあるだろ
あと直感的に分かりやすいとか
見ての通りゲーム作る奴はスレチのキチガイ
昔のやつをリメイクするのは版権買ってくるのとか面倒じゃね?
>>551 中卒と低学歴のゲーム専門学校が荒らしてる感じ
邪魔だな
554 :
デフォルトの名無しさん :2013/05/06(月) 21:02:20.80
>>552 いやドンキーコングならモンキーコングとかにする。
ダメかな?
このスレはC言語とアセンブリぐらいの内容 ゲームはスレ違いだから別スレでやれ
どっちにしても1人では無理でしょ プログラマー、イラストレーター、ドッター、モデラー、シナリオライター、ゲームデザイナー、作曲家、スクリプト組んだりする雑用 辺りが最低でも必要
557 :
デフォルトの名無しさん :2013/05/06(月) 21:04:42.52
>>554 タイトルはギリギリセーフだと思うけど、
キャラとかはどうする?
558 :
デフォルトの名無しさん :2013/05/06(月) 21:05:29.84
>>556 そういう細分化なぁ....
ゲームデザイナーとシナリオライターは一緒でしょ。
何かそうやってメーカーの構成にする事に酔ってる感じがする。
>>551 ,
>>553 嫌なら見るなよ精神異常
嫌だ嫌だと言いながら見てるとかマジで頭おかしいんじゃねw
560 :
デフォルトの名無しさん :2013/05/06(月) 21:10:37.57
>>557 既存のものを派生させるっていうのは簡単でしょ。
むしろそこにモチベーションを持たないと。
とりあえず携帯ゲームブームに勝ちたい。
>>558 違うぞ
デザイナはシステム作ったりバランス調整したりする奴だぞ
シナリオとは全く別のスキル
両方こなせる奴を探すのもありだけど、別々に探すほうが手っ取り早い
そのための細分化だ
酔ってるようで嫌なら
プログラム兼作曲兼グラフィック兼シナリオ兼デザイン担当を探してもいいとは思うけど
ゲームはプログラマだけいても作れない。 かわいい女の子(ロリ)を書ける絵師が必須。
563 :
デフォルトの名無しさん :2013/05/06(月) 21:15:00.83
>>561 エロゲのスタッフロール見たんだけどスタッフ多すぎるんだよ。
20人以上はいたんじゃないかなと?マニファクチュアは作業の混乱を防いで
効率的だけど自由な発想が制限されるんじゃないかと思う。
みんなゲームプログラマなの?
>>556 趣味プロなんだから1人で十分だろw
大体のものはフリー素材でなんとかなる
566 :
デフォルトの名無しさん :2013/05/06(月) 21:20:28.29
携帯ゲはみんな面白くてやってるわけじゃない。 手軽さなんだよ。
567 :
デフォルトの名無しさん :2013/05/06(月) 21:32:13.34
趣味プロだとモチベーション持てないな。 分業の楽しさを知りつつ成果を得たい。
>>567 そうだよな、成果は重要
一番客観的で数値化できる成果というとやっぱり金だな
同人でも何でもいいから売ってどのくらい売れたのかってのがそれを一番簡単に測れる
お前ら全く分かってないな フレームワークを作るのこそが楽しいんだろ ゲームが完成するかどうかなんて どうでもいいことじゃないか
571 :
デフォルトの名無しさん :2013/05/06(月) 22:14:41.58
>>569 フレームワークだけ作ってもおもしろくない
今帰ったけど何でこんなスレ荒れてんだ・・・
>>571 プログラマ向いてないから
さっさとSE()にでもなった方がいいんじゃない?
>>572 自演で大量に荒らしレスを連投するいつもの人が
派手に発作起こしちゃったから。
575 :
デフォルトの名無しさん :2013/05/06(月) 23:20:24.82
テイルズみたいなやつ作るなら協力するよ
感情論は不要 アセンブラ君のほうがまともだったな
ゲームすら作れないC厨が発狂w
ゴミの収集とかなら
C厨も何も、Cスレじゃんか
俺もC言語でゲームを作ろうと思っているので 自分でゲームを作ろうと思っている同志のいるこのスレを活動拠点にしたいと思います 質問などすると思いますがよろしくお願いします
581 :
デフォルトの名無しさん :2013/05/07(火) 00:43:29.02
難しいことが出来るより、ゲームが完成することが大事。
同品質の物が作れるなら、手間が少ないほうがいい。
ゲーム会社も、開発コスト、日数を下げるための工夫している。
[E3 2012]スクウェア・エニックスの独自開発エンジン「Luminous Studio」による,驚異のリアルタイム技術デモ「AGNI'S PHILOSOPHY」が公開
本デモ映像の制作に使用した「Luminous Studio」とは、当社が独自で開発を進める、ゲーム開発ツール・プログラム群を統合した次世代総合ゲーム開発環境(ゲームエンジン)です。
本ゲームエンジンは、ゲーム制作チームに大きな生産性の向上をもたらし、同時に圧倒的な品質のゲーム制作ができる環境を目指しています。
また、本ゲームエンジンは、ゲーム専用機、PC、スマートフォン、WEBなど、次世代を含む多様なゲームプラットフォームに対応する予定です。
http://www.4gamer.net/games/032/G003263/20120606107/
別スレでやれ
ゲームのフレームワークより低水準の部分って、 基本的にどれも変わらんよな。 メインループ作って、リソース管理作って、データベース作って、って辺り。
584 :
デフォルトの名無しさん :2013/05/07(火) 02:58:50.10
アイテムとかってどうやって管理するんですか? 全アイテムはIDとアイテム名をセットにしておくと思うのですが、 所持アイテムはIDと個数をセットにしておくと思うんですよ でもそれだとメニューから所持アイテム一覧を開いたとき、 全アイテム一覧からIDでアイテム名を引いてこなきゃいけないじゃないですか 全アイテム一覧はメモリに読み込んでおくんですか? それともメニュー画面開くたびにHDDから必要なアイテム名だけ引いてくるんですか?
>>584 メモリに展開しておく。
ファイル読み込みだと、遅延が発生する恐れあり。
その手の処理ならC++が楽チン。
夜遅くにうるせえよ 黙って寝とけ
>>584 本当にIDとアイテム名だけならどっちでもいい。
だけど最近のゲームみたいに解像度の高いアイコンと説明文が出るようなやつは毎回HDDから読み込んだほうがいい。
データ量によるんじゃね 合計1M以下なら読み込んでおくとか 自分で適当に閾値決めて データ量がその閾値を超えないなら全部読み込んでおく 超えるならその都度読み込み&キャッシュじゃね
char str[]="ABC"; /* Main関数内*/ これってどうなってんの?文字列リテラルだと定数領域に確保されてその先頭アドレスが返るって話だけど 配列の場合はスタック領域のアドレスが入ってたけど何で? Auto変数だからスタックにstr配列が確保されて文字列リテラルで定数領域に文字列が確保されてその先頭アドレスからスタック領域にコピーしてるって感じ? コピーしてる命令は配列とかがやってんの?教えてください
仕様の理解はそれでいい 実際どうなってるかは逆アセンブルしてみるしかない
>>590 >>476 がいってるmemcpyくさいなぐぐってみるか
メモリ理解とアセンブラ理解してるとしてないとでは全く違ってくるなこれ
言われてみれば最近のゲームはリッチなアイコンが付いてるね アイテム名の横に出るやつじゃなくて画面下の説明欄に一緒に出てくるやつ アイコンというよりもはや絵だよな
593 :
デフォルトの名無しさん :2013/05/07(火) 15:09:55.57 ID:qEqQNQf6O
そうして開発コストがあがっていく。
配列にいれる分コスト掛かるから参照するだけならポインタにしろってことか
いやconst []の方がいいコード出る
>>589 定数領域に"ABC"取って、何らかの方法で"ABC"をstrへコピーしてる
何らかの方法ってのはコンパイラ次第で、memcpyと同じかも知れない
でいいのかな
598 :
デフォルトの名無しさん :2013/05/07(火) 19:00:25.55
あれこの板IDでるっけ?
599 :
デフォルトの名無しさん :2013/05/07(火) 19:31:33.81
最近の逆コンパイラはすごいぞ。C言語だと元のコードがそのまま再現される。 他人に盗まれない仕事がしたいならC++にしろよ。
片山ゆうちゃんちーっすwww
携帯からだとIDが出るようになったのか
Qは確かp2経由だったけど巻き込まれたのか
大丈夫みたいですよ静かになればいいのにね
608 :
デフォルトの名無しさん :2013/05/08(水) 12:23:56.99
double型の変数dがほぼ0に等しいか調べるにはどうしたらいいですか?
>>608 fabs(x - constance) じゃだめなの?
つまんねっ
>>610 なら2chに来るな
それかお前が面白いネタを提供しろ
612 :
デフォルトの名無しさん :2013/05/08(水) 12:57:55.57
機械イプシロンの意味を理解している奴がどれだけいるのか・・・
覚えただけの知識を自慢
616 :
デフォルトの名無しさん :2013/05/08(水) 16:55:41.18
Cしかできない奴ってGUI作るときにもC使っちゃうわけ?w
>>581 完成させることって重要だよな。
やっぱりプログラムを作るとしても使い回し能力ってのは必要なの?
要領が悪いから最初から作らないといけないんだよ!とか
言われたりするの?
>>558 ゲームデザインをシナリオと一緒にすんな
テトリスくらいならいいけど、最近のRPGみたいなやつを素人がデザインすると地獄絵図になるぞ
〜ゲームデザイナーなし劇場〜
開発者A「なぁ、このボスに到達するときにこのパーティーのレベルって高くない?」
開発者B「え?じゃぁ経験値少なくするか」
開発者C「おい、全体的に減らすなよ、その前のボス戦ではちょうどよかったんだから」
「じゃぁそのボス弱体化すればいいじゃん」
「えっ」
「えっ」
「そうじゃなくてAが言ってたボスを強くすればいいんじゃね?」
「強くって何を?HPあげるの?攻撃力あげるの?」
「HP上げたら長期戦になってダルいだけだろ、攻撃力上げろよ」
「・・・攻撃力あげてみたよ、攻撃力上げたら魔法使いが一撃で死んだよ」
「上げすぎなんだろ馬鹿」
「だってそのくらい上げないと他のキャラほとんどダメージ受けないんだもん」
「ダメージの計算式がおかしいんじゃね?」
「はい」
「はいじゃないが」
「いや、ダメージの計算式変えると全体のバランス変わってくるから無理です」
「普通に魔法使いの防御力が低すぎるだけだと思われ」
「そのボス直前の街で買える防具に、魔法使い用のもう1つ上位の防具追加したらどうよ」
「追加しなくてもその防具の防御力上げれば済む話だろ」
「属性防御が付いてる代わりに、防御力低くしてあるんだけど、防御力上げちゃうの?」
「いいから上げろよ」
「・・・防御力上げてみたよ、ボスはちょうどよくなったけど、雑魚戦でダメージほとんど受けないから面白くないんだが」
ってのが延々と続く
int *hoge() { int a = 10; return &a; } これってマズい?
>>619 別にコンパイルエラーにはならないと思うよ。
返り値を使わない分にはなんの問題もない。
621 :
デフォルトの名無しさん :2013/05/08(水) 22:33:04.89
>>618 逆にいえばゲームデザイナーの意見に口出しできないって事じゃね?
622 :
デフォルトの名無しさん :2013/05/08(水) 22:46:10.60
staticだったら使えるの?
無能馬鹿はとっとと死ね 試せばいいだろ無能
>C言語なら俺に聞け
625 :
デフォルトの名無しさん :2013/05/08(水) 23:47:45.31
わからないから煽る
まずいというか普通そんなコード書かないのでは
ポインタは初心者には難しいから(震え声)
自分でわからないコードは書くな とよく聞くのですが この「わかる」というのはどの程度までを指すのでしょうか? 極端な話printf("hello");が何をしてるのか私は説明できません printf()は引数を標準出力に出力する関数だということはわかります。構造はわかりません。 プログラムを理解するというのはどこまで掘り下げればいいのでしょうか?みなさんの意見をお聞かせ下さい。
631 :
デフォルトの名無しさん :2013/05/09(木) 00:15:09.87
だからstaticだったらどうなのよ
スタックポインタを取得するために敢えてそういう事をする可能性もなくはないが、 どう確保されるかよく分からない内部変数よりは 呼び出し規約により位置がはっきり決まる引数の方がよさげ staticなら別に何ともない
633 :
デフォルトの名無しさん :2013/05/09(木) 00:46:28.63
>>629 アセンブリ勉強きて実行ファイル逆アセして読めば?
>>631 strtokやlocaltime, asctime, ctime辺りは、
staticかグローバルか知らないけど
そういうアドレス返しているね。
他にもあったかな?
すみません。さっぱりわかりません。どなたか教えてください>< テキストファイル○○.docを読み込み、fscanf, strlenを使用して、長さが1以上の語の数を数えて出力するプログラムを書きなさい。 ただし、ファイル名の指定は、fopenの引数として直接プログラム中に書いて指定して下さい。(ヒント:テキストの中の単語をfscanfを使って1つずつ読み込み、その長さが2文字以上ならばワード数を1つインクリメントする。) ○文字列の長さを測る方法:strlen()を使用する。 ○テキストファイル○○.docには長い英文が書かれている。 よろしくおねがいします。
宿題は宿題スレへ
QZ自演キターww
宿題スレなくなってるのでここで聞きました。どうかお願いします
まもなくQZの自演によるウンコード排出が始まります とくとご覧あれw
なくなってたら立てればいいじゃない
こうやっていい流れの時に自演宿題して雰囲気を悪くするQZは極悪
キターww
>>642 早速の回答本当にありがとうございます。
PS自演とか言って騒いでるやつなにが楽しいの⁈
○○.docが非常に長くて、かつ末尾最適化が効かないコンパイラだったら スタックオーバーフローを起こすんじゃないの 素直にループ使えないの?
エラーチェックとか入ってないけど非常に素直な書き方で、このまま提出でいいと思う。
なるほど、こうやって潜在的バグを放置するのがQのやり方か
countが初期化されてないからバグってるな。 適当にcount=0;しておいて。
>>646 ほらね
QZがものすごい勢いで書いたからウンコードになる
質問開始から1時間もたっていない
宿題の回答ならこんなもんだろ。
QZの能力の無さを宿題レベルだからあえてそういう風にしたと誤魔化しましたね
ゲーム専門学校に通ってるんですがわからない場所があります count>=0 count>0 これってどう違うんですか?
無能ゲー専死ね
>>652 上は count が 0 の場合に真だが、
下は count が 0 の場合に偽である。
「より大きい」と「以上」の違い。
>>654 count が int とは限らないでよ。
657 :
652 :2013/05/09(木) 12:46:23.28
では count>=-1 count>-1だと?
うわっこんなくだらない奴がCやってんの
>>657 不等号はマイナス値に使うと不定になる。
QZは叩かれると話題を変えたがるから
>>652 は自演の可能性がある
ゲーム専門学校は無能だなw 頭腐ってんじゃないの?
そりゃ落ちこぼれが通う場所ですから
QZ以下の知能指数
(QZの)嘘を嘘であると見抜けいないと掲示板を使うのは難しい
外部結合、内部結合、無結合について詳しく教えて 意味がわからん
667 :
デフォルトの名無しさん :2013/05/09(木) 15:50:15.00
externってよくわからないけど どこか一つのファイルで実体宣言して参照するファイルでexternで良いの?
668 :
666 :2013/05/09(木) 16:02:30.52
>>667 あってる実態は何もつけずに宣言
分身にextern
C++やん
こんにちは 今大学の研究室にC言語で作成したツールがあります 大体ソースコードが15個、ヘッダーも同じくらいあり、ソースコードは合計1万行くらいあります このツールは私が研究室に入る前の先輩方が3人で作ったそうです 今回、先生がこのツールを全く新しく作り直したいと言い出し、私一人で同じようなツールを開発することになりました そこで、既存のツールがどのような処理を行っているか知るためにソースコードを読み始めたのですが、説明などのドキュメントはおろか、ソースコードにコメントは一切書いてありませんでした また、メイン関数の中身も宣言→よくわからない処理→宣言→関数など、宣言も関数もまとめて書いてあらず、インデントも適当です 変数名、関数名も意味がわかりません このようなものを解析するには、やっぱり一つ一つ追っていくしかないのでしょうか? 私はC言語で入門書の演習くらいしかやったことがありませんのでこれから勉強をもっとしなければなりませんが、こういうツールを作成するのにオススメの勉強方法などありますか?
>>671 とりあえずコード整形ツール通すのと
構造解析するツールに通しておけば
手間を2割くらい減らせる
あとの8割は……まあガンバレw
目的があってそのプログラムを動かしているんでしょう? であれば、今までのソースにたよらず動作や原理から仕様を作り新しく組むのが近道です
>>672 ありがとうございます
Cを普通に扱える人だったら、どのくらいで理解できるんですかね...
自分は1ヶ月じゃ無理そうです...
>>673 そうしようと思ったのですが、使えるところは流用しろとのことでして...
また、先輩方3人でアルゴリズムや構造体を考えるのに半年、ツール開発で結局2年かかったとのことだったので、正直しんどいです
doxygenに掛けて一度整理してみろ
まずは教授にこれこれなので無理です、というべきだな 解決案か別の案か何か考えてくれると思うよ
作り直したい理由によるな もしかしたらラッパー作ればいいだけかもしれん
ここにソース晒さないかぎり正確な答えは得られないわな 今の範囲であれば、やるだけ無駄だから外注に出せ、くらいだ
リファクタリング厨 vs 動いてるなら触るな厨の戦い!
なんで作り直したいのかまず聞くことだな
まあdoxygenとgraphvizで出力してみて、教授と相談すればいい
沢山の返答ありがとうございます! doxygenというもの使ってみます! 作り直したい理由は、企業からそのツールが欲しいと言われたが今の何て出せるもんじゃないといった理由らしいです あとは、前提として対応してこなかったものに対して対応できることがわかり、そのためには大幅な改変が必要だからと言った理由です 先生に相談してみます!
言っておくけど、君じゃ4年かかっても無理だよ
っと馬鹿が申しております
>>683 学生が作ったものだからひどいですよwww
って言いながら企業に渡して、企業にリファクタしてもらえ。
当然リファクタ後の使用権と改修権は企業からもらう契約にしてな。
おまえじゃ無理。
ゲー専のバカじゃ無理だからな 文章からしてゲー専
ゲー専の学生ならきれいなコード書くんじゃないの そもそも専門の教授ってなんだよ
689 :
デフォルトの名無しさん :2013/05/09(木) 20:34:28.76
広域変数を動的にメモリ確保ってできる?
>>689 動的に確保したメモリを広域変数に割り当てればいいんじゃね?
691 :
デフォルトの名無しさん :2013/05/09(木) 20:52:00.97
malloc calloc realloc
693 :
デフォルトの名無しさん :2013/05/09(木) 21:00:32.60
char *kuso; main() { kuso=malloc(); }
このmallocが実行されたらどのようにメモリが確保されるから知らない無能ゲーム専門 早く死んだほうがいいよ
alloca malloca valloc
クソコードだけど動くわな free忘れんなよ
>>683 ソース整形も忘れずに。cならindentコマンドでもいける。
既存動作と比較できるツールも作る必要があると思うので、その分のスケジュールも相談するの忘れずに。
あと、可能なら既存動作を保証できるようにテストを先に作ってから修正始めた方がいい。
よくわからないものを修正するときはその方があとで楽。
もうC諦めてC++にしろ
700 :
デフォルトの名無しさん :2013/05/09(木) 21:57:43.82
>>698 それは聞き捨てならんな
・グローバル
・サイズ不定
というオーダーを満たしてやったうえ
変数名に心を込めたんだぞ
703 :
デフォルトの名無しさん :2013/05/10(金) 00:29:43.30
array=malloc(sizeof(int)*n*2)で確保したものって array[n][n]みたいな使い方できる? 型はint
[n][n] だと n*n の器が必要だぜ int *array = (int*)malloc(sizeof(int)*n*n); [i][j] 番目 array[i*n + j] どうしても array[i][j] と記述したいんだー ってんならポインタ配列にでも
705 :
デフォルトの名無しさん :2013/05/10(金) 00:39:13.37
706 :
デフォルトの名無しさん :2013/05/10(金) 13:44:44.96
あ
>>708 それはデータ結合と違うの?
引数渡すのがデータ結合らしいけど
>>708 の関数コールもデータ結合と同じじゃない?
test(a,b,c);みたいに引数送るときに呼び出してるし
関数コールって引数渡さずに関数だけ実行?
よくわからん
データ結合:引数に値渡し
スタンプ結合:構造体を渡す
制御結合:制御にかかわる引数を渡す、渡す先のモジュールのif文なのどのflag
外部結合:別モジュールのグローバル変数を参照
共通結合:別モジュールのグローバルな構造体を参照
内部結合だけがよくわからん
>>708 >>710 の単語じゃわからない
データ結合はファイルとかDBを介する奴じゃないの
713 :
デフォルトの名無しさん :2013/05/10(金) 15:36:10.12
>>703 #define ][ *n+
array[x][y]
>>711 関数内 static を暗に使いまわすようなのじゃない?
int *foo() { static int bar; return &bar; }
こんなのとか
715 :
デフォルトの名無しさん :2013/05/10(金) 18:14:49.04
>>711 おまえの言ってることをマネしてあげよう
共有結合
金属結合
イオン結合
ファンデルワールス結合
炭素言語なら俺に聞け
>>707 モジュールの定義がよく分からんな
Cだとソースファイルのことじゃないか?
関数だとローカルしかないわな
718 :
デフォルトの名無しさん :2013/05/10(金) 19:10:31.81
アセンブラでいうなら public シンボルと、そうでないラベルだね
とりあえず整理してみたけど >内容結合 他のモジュールの内部を直接参照している >絶対番地を用いて直接相手モジュールを参照したり、相手モジュールに直接分岐する。 main.c 他モジュール(mod.c)だとしたら mod.cの内部を直接参照するっていうのがイマイチわからん
内部って何だよ抽象的すぎだろw
721 :
デフォルトの名無しさん :2013/05/10(金) 19:33:50.79
>>714 それをソースファイル別に書いてみてくれない?
なんか近い気がする
レベル6:内容結合
これは、自身の所有するデータが、他の関数から直接操作される状態です。アセンブラの時代には、しばしば見られましたが、今日の言語ではあまり見かけなくなりました。
しかしながら「C言語」などで、自身のローカル変数のアドレスを下位の関数に渡し、そこからポインタを介して直接データを返してもらうような処理は珍しくはありません。
その場合、そのための専用のローカル変数を用意すれば問題ないのですが、それが面倒とばかり
直接アルゴリズムに関わっているローカル変数のアドレスを渡してしまうケースは、「内容結合的」でもありますので、注意して下さい。
内容結合って、モジュールが関数とするとこんなのか? static int flg = 0; void foo(void) { flg = 1; goto A; B: flg = 0; } void bar(void) { static int baz = 0; A: baz = 1; if (flg) goto B; }
>>722 >直接アルゴリズムに関わっているローカル変数のアドレスを渡してしまうケースは、「内容結合的」でもありますので
これは普通にやるような気がするが、ダメなのかね
void foo(void)
{
int flg = 0;
bar(&flg);
if (flg)
hoge();
else
hage();
}
void bar(int* baz)
{
*baz = 1;
}
そもそもデータ結合と制御結合ってのに差があるのが分からん
現役も理解してないだろう
>>725 組み込みだとercd = wai_flg(ID, 0xFFFF, TWF_ORW, &ptn );みたいなのあるね
ptnにフラグ受信パターンが入ってそれで制御とか、ありがち
728 :
デフォルトの名無しさん :2013/05/10(金) 21:20:46.50
内部結合の話からずいぶん逸れたな はっきり言って全然関係ない
クソIPAもちゃんとコードで書き示しとけよ 参考書もばらばらネットの情報もばらばら 本当に簡便 暗記になってしまうんだよ
730 :
デフォルトの名無しさん :2013/05/10(金) 21:41:50.61
int x(double **a) { a[1][1]=0.1;//単に二次元配列だという事を言いたかっただけ。 } こういう二次元配列を関数で扱うとき、呼び出すときどうしたらいいですか? x(a);じゃエラーが出るんですが..... 確か配列の場合呼び出す時x(a);でよかった気がするんですが二重ポインタ の場合はダメなんですかね?
>>730 それ二次元配列じゃなくてポインタのポインタだろ
関数の入り口見れば分かるはず
a[1][1]のように一見二次元配列と同じ書き方ができるので同一の物だと
勘違いしやすいが、生成されるコードは恐らく全然違う
まずポインタ配列の一つを取り出し、そのアドレスを行と見做して列の
1次元配列をアクセスするという二段階アクセスのコードに多分なるだろう
int x(double (*p)[10]) とかじゃねえの? しょべえなこいつ
733 :
デフォルトの名無しさん :2013/05/10(金) 21:50:09.79
>>731 そうなんですか...では
どうよびだしたらいいですか?
int main(void)
{
double a[3][3];
x(a);//←エラー
x(a[]);//←エラー
x(*a);//←エラー
x(&a);//←エラー
x(&&a);//←エラー
x(a[][]);//←エラー
}
int x(double **a)
{
a[1][1]=0.1;
}
全部エラーです。x関数自体は間違っていません。
>>733 コンパイル通してみた
#include <stdio.h>
#include <stdlib.h>
double test_test(double[][2]);
int main(void) {
double test[][2] = {{1,2}, {3,4}};
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
printf("test: %f.", test_test(test));
return EXIT_SUCCESS;
}
double test_test(double test[][2])
{
return test[0][1];
}
735 :
デフォルトの名無しさん :2013/05/10(金) 21:58:24.73
>>734 関数は変えないでmainの中でどうすればいいですかね?
関数自体は自作ではなく何の問題も無いコードですから。
無能ゲー専死ね
キチガイ質問者
741 :
デフォルトの名無しさん :2013/05/10(金) 22:15:16.49
>>738 void (double **a){//関数の中でaは二次元配列}
となってるときmainからどういう書式で引数を渡せばいいか
知りたいだけです。関数の中でやってる事は分かりますので言いません。
死ね
>>739 ありがとうございます。
main内部で値を入力(初期値代入)してから関数呼び出したいんですが
その場合は
double **a;
a[0][1]=1.0;
としても大丈夫なのでしょうか?
>>742 最近プログラム板にこういう暴言増えたね。
ここだけじゃなくて他のスレでも。
同じ奴なんだろうなwww
745 :
738 :2013/05/10(金) 22:25:17.59
>>743 >main内部で値を入力(初期値代入)してから関数呼び出したいんですが
つまり、
main() で二次元配列を初期化してからその二次元配列を関数x に渡し、関数 x 内では渡された二次元配列を使う、ということでいいですか?
もしそうならば、関数 x の中で使う二次元配列のサイズのサイズは具体的にはどれくらいが必要でしょうか?○×○の○はいくつですか?
746 :
739 :2013/05/10(金) 22:25:38.83
>>743 > main内部で値を入力(初期値代入)してから関数呼び出したいんですが
それは
>>739 のコードにも書いてあるとおり、
メモリ確保した後に代入すれば良いです
747 :
739 :2013/05/10(金) 22:28:14.40
>>743 > main内部で値を入力(初期値代入)してから関数呼び出したいんですが
ちなみに静的に初期化したいのであれば、
>>738 の方法がスマートだと思います
748 :
739 :2013/05/10(金) 22:29:28.83
749 :
デフォルトの名無しさん :2013/05/10(金) 22:34:47.34
738 739 さんありがとうございます。 ちょっと考えて見ます。
int compare_int(const void *a, const void *b) { return *(int*)a - *(int*)b; } これ何で引いてるの? > < とどう違うの?
>>750 > これ何で引いてるの?
大小を比較するため
やっぱり分かりません。 double **a; a[0][0]=1.0; return 0; コンパイルはできますが、 Segmataion faultがおきます。 何故でしょう?
>>745 サイズは適当に20*20くらいでいいですね。
とにかく二次元配列をmainで作って関数に渡したいです。
double**a;
a[0][1]=1.0;
は何故コンパイル成功するのに実行エラーなんでしょう?
代入される値に問題もないしインデックスもアクセスできない
範囲ではないと思うし。
752=無能ゲーム専門学校(笑)のバカだから死んだほうがいいよ
>>756 性格悪いなぁー
リアルでも平気で人に死ねっていうんか?
言うんだろうな
>>756 はお花畑で幸せそうだな
周りに不幸を撒き散らしてるけど
プログラム板って特に暴言吐く奴多くない?ゲーム板だとそんなないぞ?
多いっていうか、IDないからわからないけど暴言吐いてるのは ぼぼ一人だけだから。
>>752 コンパイルオプション付けて、警告、エラーを出してみなよ。
>>753 じゃあこれで
http://codepad.org/WbYjbaN5 >double**a;
>a[0][1]=1.0;
>は何故コンパイル成功するのに実行エラーなんでしょう?
今はただ、
「double *a と double a[] は交換可能の場合もあるが、double **a と double a[][] は絶対に交換可能にはなりえない」
とだけ申し上げておきましょうか。
上の codepad でも
static double *a[N];
for (i = 0; i < N; i++)
a[i] = &b[i * M];
が存在している理由がまさしくこれです。詳しくは C FAQ
http://www.kouno.jp/home/c_faq/c6.html#0 にあるとおり、時期がくればわかるようになるかと。
return *(int*)a - *(int*)b; aの値とbの値は配列の隣接する要素ですか? 4, 2, 3, 6, 3, 2, 1, 3, 5, 7 a=4 b=2 であってるでしょうか?
>>763 > aの値とbの値は配列の隣接する要素ですか?
呼び元でそう指定すればそうなるし、
そう指定しなければそうならない。
>>764 4-2で正の値ですが正の値を返すとどうなるんですか?
負の数も0も返した後の処理がわからないんですが
どのような勝利を行っているんでしょうか?
*a が *b よりも先であるとき 負の値
*a と *b とのどちらが先でもいいとき 0
*a が *b よりも後であるとき 正の値
>>765 ん?
return *(int*)a - *(int*)b;
は、
[ポインタ値(アドレス) a に入っている int値] - [ポインタ値(アドレス) b に入っている int値]
でしょ
767 :
デフォルトの名無しさん :2013/05/11(土) 00:27:53.28
つまり未定義動作を含むということだ
>>766 aの値とbの値は配列が4, 2, 3, 6, 3, 2, 1, 3, 5, 7であれば
a=4
b=2で
4-2=2ですよね?
2で正の数になりますけど正の数と不の数と0の違いを返すとどういう動作をするのでしょうか?
a-b , a>b 昇順 b-a, a<b 降順 これはそのまま覚えていますが なぜこうなるのか意味がわかりません
>>768 > aの値とbの値は配列が4, 2, 3, 6, 3, 2, 1, 3, 5, 7であれば
> a=4
> b=2で
違います。
>>750 の続きだと思うけど、
a と b には、呼び元が
int compare_int(const void *a, const void *b)
を呼ぶときに第一第二引数それぞれに指定した「アドレス値」が入ります。
compare_int();は、
a, b それぞれのアドレスにあるデータを int値と判断して引き算し、
その結果を返すだけです。
compare_int();は、配列とか意識していません。
指示されたことをやっているだけです。
771 :
デフォルトの名無しさん :2013/05/11(土) 04:26:57.33
アプリケーション終了しようと思って×押したら ウインドウは消えるのにプロセス消えねーぞ糞が と思って調べたら終了処理のfreeで止まってた 初期化のバグで宣言しただけのポインタのアドレスを渡してた 条件分岐で基本はmallocやって、使わない場合はNULLを入れるってコード書いてたけど バグでどっちも通ってなかった そういう場合は止まるのかよ糞が 最初は見当がつかなくてかなり焦ったんだけど こういうことが起きないようにする方法を教えまくってください
>>771 アプリ起動時に必ず処理される初期化部分で、
使わない場合のNULL初期化をあらかじめしておくのは?
>>771 malloc()/free() や new/delete をラップして使え
free() に渡そうとしているポインタが、かつて malloc() から取得したポインタかどうかを逐一チェックしておく
二重解放バグの検出にもなる
リリースのときはとりはずせばいい
Qのようにxalloc()とか(笑)
やっぱID必要だね。このコテハン大好き馬鹿が荒らす限り。
778 :
デフォルトの名無しさん :2013/05/11(土) 08:56:53.20
>>769 大小比較を引き算で代用するのは望ましくない
正しく求まらないケースがあるぜ
※ int が 8bit 符号付の系(-128 〜 127) だとして
a = 100, b = -100 の場合
引き算すると 200 がオーバーフローして -56 になる
a > b なのに a-b の値は負
>>779 たしかにそういうときはキャリーフラグではなくて別途設けられたオーバーフローフラグを使うよねマシン語でも
>>770 そんなの知ってんだけど
アドレスにあるデータはなんなのよ
>>781 アドレスにあるデータは、compare_int();に指定されたアドレスにあるものです。
彼(あなた?)の質問内容では、compare_int();に配列が指定されているのか
何が指定されているのかはうかがい知ることは出来ません。
>>1 に
> ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
と書いてある通り、★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい
別に必須じゃないけどね
>>781 int A[10];
int B, C;
呼び出し側
A[0] と A[1] の大小を比較したい
compare_int(A, A+1); /* compare_int(&A[0], &A[1]); */
B と C の大小を比較したい
compare_int(&B, &C);
呼び出された側
int compare_int(const int *a, const int *b)
a、b からは 配列の一部の位置 なのか 単変数のポインタなのか知る術はない
-----------
ソートかなんかの途中で出てきたんだろうな....
値の比較を、関数をコールバックにし呼び出し元側にまるなげしといて
要素の交換戦略を記述するっていう
>>785 a>b 昇順
a<b 降順
a-b 昇順
b-a 昇順
になる理由は?
決まってるもの?
そんなC言語の限界みたいなクソコード書いてないで、リーダブルコードでも読んで真っ当になれよ
jpeg画像をバイナリファイルで開く方法ないですかね? なければCで組みたいんですが.......
788=無能ゲー専死ね
>>786 色々前提を省略して質問してるが....
昇順/降順の並べ替えを行うのはソート関数(多分 標準関数の qsort だと思われる)
qsort の約束では コールバック関数の戻り値(≒ compare_int の戻り値)が
正の場合には b が先行するように
負の場合には a が先行するように
0の場合には 不定(a が先行か bが先行かはわからい)
に並べ替える
a と b を比較し、望みの順序となるよう 正または負または0の値を作りなさい
ただそれだけ。
792 :
デフォルトの名無しさん :2013/05/11(土) 13:35:09.18
>>788 fopenでふつーにバイナリモード使えるが?
バイナリエディタを知らないのにバイナリを見てどうするつもりなのか
795 :
デフォルトの名無しさん :2013/05/11(土) 14:13:23.55
また変なこと言ってる バイナリエディタは関係なかろうが
次はエンディアンの不毛な議論が始まります。
797 :
デフォルトの名無しさん :2013/05/11(土) 15:03:08.25
バイトオーダー
798 :
デフォルトの名無しさん :2013/05/11(土) 16:05:38.01
動的に宣言した配列を1で初期化する方法教えてください
799 :
デフォルトの名無しさん :2013/05/11(土) 16:06:10.80
int型です
>>799 for (i = 0; i < SIZE; i++) p[i] = 1;
801 :
デフォルトの名無しさん :2013/05/11(土) 16:08:56.56
やっぱりそれしかないですか ありがとうございます
memset((char *)p, 1, SIZE * sizeof(p[0]));
803 :
デフォルトの名無しさん :2013/05/11(土) 16:21:39.75
>>802 それだと1byte毎に1で初期化されて
0x01010101にならないの?
The memset function copies the value of c (converted to an unsigned char) into each of the ?rst n characters of the object pointed to by s.
806 :
デフォルトの名無しさん :2013/05/11(土) 16:37:53.14
>>804 関係ないけど #define しといて 10 とか書くなよ
大学の課題です。 非負の要素数10個のint型配列xがあって要素は x[10]={23,46,124,988,786,12,111,123,444332,90}; とします。非負であれば何でもいいです。 この時データを圧縮して再現できるように するにはどうしたらいいですか?アルゴリズム、それに伴うデータ構造 は何でもいいとします。 どうすれば良いでしょう? 自分の考えは10個の数値を全部足して、オーバーフローすれば その分を別に保存するというやり方なんですがダメでしょうか? xsub[3];として xsub[0]=x[0]+x[1]...x[5]; xsub[1]=x[6]+.....x[9];
810 :
デフォルトの名無しさん :2013/05/11(土) 18:49:07.73
圧縮ってどのように圧縮したいの
>>810 それは自由です。色々なやり方で。今回はファイルとかを保存するんじゃなくて
Cプログラムで使用するデータを別の形で保存するという形式ですね。
>>809 > xsub[3];として
> xsub[0]=x[0]+x[1]...x[5];
> xsub[1]=x[6]+.....x[9];
それで元に戻せるのだろうか。。
俺だったら、x[10];は32bit×10 = 320個のbit列と考えて、
それを圧縮するな。
だからx[0]が欲しい時は a=xsub(-,-,-,...);/*x[0]の値を代入*/ でいつでも呼び出せるみたいな感じに出来たらいいなと思います。
[2,3]と[3,2]のちがいがわからない って通りすがりの小学生がゆってた
816 :
デフォルトの名無しさん :2013/05/11(土) 18:59:05.07
どうやってもいいんならプロシージャに値保存すればいいよな そうすればインデックス入れて置くだけでいい
817 :
デフォルトの名無しさん :2013/05/11(土) 19:05:08.41
全てを二進に変換 char型配列にsprntfで結合 符号化圧縮 数値へ変換 宿題ならこの程度でいいでしょ
818 :
デフォルトの名無しさん :2013/05/11(土) 19:07:54.77
気を付けるのは文字列結合するときに桁揃えること そうすれば復元するときにsizeof(int)単位で区切ればいい
unsigned int[10]の可逆圧縮ねぇ。 下手すると辞書サイズと圧縮データあわせて元のデータより 大きくなることもあるからめんどくさいね。
>>809 最初の要素を1バイトずつ分解
0x00 0x00 0x00 0x17
頭に0が何回来たかを、0x00 回数で表す
0x00 0x03 0x17
復元時は先頭から、0x00を読み込んだら、次のバイトの回数0繰り返し
くらいでいいんじゃね
非負だし
元が可読文字限定みたいに範囲が限られてなければ 元より大きくなるケースは仕方ない
ソースデータが固定の数値だったらやりようはあるかな。
データがたったの10個で、範囲が非負ってだけだから難しいね。
x[10];は 最小値 12 最大値 444332 なので、1要素辺り 0〜444320 表現できれば良い つまり 1要素辺り 19bit あれば良い x[10];を表現するのに必要なのは、 32bit : 最小値 12 を格納 5bit : 各要素のビット数 19を格納 19bit × 10要素 ==> 227bit 約 70.9%に圧縮できる。 こういうのはどう?
>>804 >>808 malloc()がプロトタイプ宣言がない関数って出てとっても危なっかしいんですけど
#include <stdlib.h> を入れて欲しいなあ
>>824 ソースデータが19bit以下という保証があればいいんじゃないかな。
RLEで十分だよ 連続性少なそうだから、0だけを圧縮する数値として、圧縮符号分を節約する
>>826 ソースデータによって、各要素に必要なbit数は変動
829 :
809 :2013/05/11(土) 19:28:12.83
3分の1以下は無理ですかね? zipだと10分の1以下だし、あれどんな仕組みなんでしょう。
>>829 可逆圧縮の仕組みは基本的に辞書+圧縮データの形。
ただ今回はソースが40byteと非常に小さいので、下手すると
辞書サイズと圧縮データサイズで元データを超えることがある。
これを避けるには何らかの前提条件が必要だし、普通はそれ
があるはずなんだけど、本当に出題はそれだけ?
831 :
809 :2013/05/11(土) 19:35:01.47
なるほどデータが小さいと圧縮の効率が悪いんですか。
大学のフリりした無能ゲー専だよそいつ
>>831 その10*sizeof(int)のデータ作って自分で圧縮してみれば?
834 :
809 :2013/05/11(土) 19:40:43.27
とりあえず10個のサンプルで試してみただけで実際は要素数を自由に 変えてOKだそうです。ただ非負という条件はそのままです。 辞書って何ですか?
だからRLEでいいっての 辞書とか言ってるけど、具体策出ねえじゃんか
データ10コで非負なら10bitは確実に圧縮できるな。
無能ゴミカス乙
>>834 byte pair encodingでgoogle検索してこい。
そして二度と帰ってくるな。
ゴミクズ無能は本当に死ね 俺は質問してるけど叩かれない 叩いてるやつは全部俺だから
int x[10]={23,46,124,988,786,12,111,123,444332,90}; unsigned short y[10]; for (i=0; i<10; i++) y[10] = x[10];
841 :
771 :2013/05/11(土) 19:52:55.03
>>772 初期化処理にその条件分岐があるからその直前に入れることになる
//初期化
m = NULL;
if (条件1){
if (条件2) m = (int*)malloc( sizeof( int ) * 200 );
else m = NULL;
}
こうか?嫌だよm=NULLが頻繁に出てなんかダサいじゃん
実際は条件2の前にちょっと処理あってそれが条件2に影響するからif ( 条件1 && 条件2 )みたいにまとめられねーしダサすぎよって却下
・・・・と言いたいところだがバグ出してfreeでプロセス残って発狂したので文句はありません
これでいきます
>>773 聞いた感じ良さそうだけど具体的にどんなラッパーを作ればいいかよく分からない
とりあえず
>>772 のエキセントリックな案でいきます
ありがとうございました
>>839 それって水遁依頼出してきてもいいってことだね?
忍法帖沢山あるのでがんばれよゴミ 無能
>>841 それelseいらねえじゃんか
だっせー
>>841 //初期化
m = NULL;
if (条件1 && 条件2)
m = (int*)malloc( sizeof( int ) * 200 );
ネスト浅くなってよかったね!
847 :
809 :2013/05/11(土) 22:49:38.55
馬鹿にされるかもしれませんがこれダメですかね? a[0]=1234; a[1]=3456; a[2]=899; a[3]=90000; c[0]=12343456; c[1]=89990000; これじゃダメですか? どうやって再現できるか分かりませんけど。
お前はCやるな無能
>>847 数値が4桁以下とかそういう条件があればそれでもできる。
851 :
809 :2013/05/11(土) 23:01:58.93
>>850 そうなんですか。ありがとうございます。
他にいい方法ないですかね?
int を 32bit として 元 32bit x 10個 → 320bit (40 byte) 非負前提ならば 31bit x 10個 → 310bit (38.75: 39 byte) 最上位bit を切り詰めて保持すれば 1byte 減らせるじゃん 31bit 抜き出して 最上位0 補うだけで元に戻るし 可逆圧縮だぞ
853 :
809 :2013/05/11(土) 23:27:15.52
>>852 3.9バイトの型ってありますかね?
詳しく教えて下さい。
854 :
809 :2013/05/11(土) 23:32:13.10
ビット操作が必要ってことですかね? かなりややこしくなりそうな気がしますが。
んなもんは無い 38.75 byte を切り上げて 39 byte にしてるだけ 39 byte (312 bit) のうち どこかの2bit は使わない 宿題スレ行ったら?
ビット操作を嫌がって圧縮ができるか このア(自粛
gcc 内部の中間表現は複雑なグラフなんじゃないの? 最近の gcc では -flto オプションを付けると .o の中に一緒に埋め込まれるはずだが、 人がそのまま見て読めるようなシロモノじゃない。
*.i はプリプロセッサの単純置換 中間コードを見たいなら LLVM/clang の方がいい
>>858 ありがとう
試してみたけど読めなかった
意味解析で中間言語RTLができると理解しとく
clang入れてやってみるか
863 :
デフォルトの名無しさん :2013/05/12(日) 03:10:41.36
バグ取れずに土曜日が終わった
Cのポインタ関連って特殊な場面を除けばUNIXのようなOSを書くために強力かつ原始的(?)であるという解釈ってあってますか? C言語初心者でC#は軽く触ったことがあります
ポインタを使うこと前提で言語の機能を削りに削っているから Cはポインタを使わないと何もできん 強力かつ原始的というのは合ってる
866 :
デフォルトの名無しさん :2013/05/12(日) 11:59:19.93
mallocで確保したものを解放するときfree書いたらヒープ壊れてるってエラーでる 領域外アクセスあるか要素アクセスするときに毎回チェックしたけどこれじゃないっぽい アドレスも宣言したときとfreeするときは一緒だった 考えられる原因は何しょうか
エスパー試験Lv3の問題です
malloc - free間の処理を全て無くして落ちなくなるなら破壊 そうでなければ freeが間違ってる それ以上はわからん
ソース出せ
他のmallocで確保した領域がbofしてるんだろ
>>866 その malloc - free の処理以外の処理が壊している可能性もあるな
872 :
デフォルトの名無しさん :2013/05/12(日) 12:11:55.80
>>868 破壊のようです
>>870 他にも同サイズの領域を確保していますが具体的にどのように起きるのでしょうか
あきらかに16行目で破壊してんじゃん
ダブルフリーの可能性もあるけれど、とりあえず、cppcheckかけるとか、gccなら-ftrap(?)とかメモリ検査系のオプション指定してみのがいいのではないかな。
2ちゃんねる検定3級の問題です
880 :
デフォルトの名無しさん :2013/05/12(日) 12:36:56.17
int *a=(int*)malloc(sizeof(int)*size); int *b=(int*)malloc(sizeof(b)); ってやってたのを int *a=(int*)malloc(sizeof(int)*size); int *b=(int*)malloc(sizeof(int)*size); にしたら直りました
881 :
デフォルトの名無しさん :2013/05/12(日) 12:38:23.83
int *a=(int*)malloc(sizeof(int)*size); int *b=(int*)malloc(sizeof(a)); ミスってた方の訂正ですが本当はこうやってました
>>880 int *b; のために確保されていたメモリが足りなすぎたのか
だから最初からソース出せって言ったろ
別々のポインタに連続してmallocした領域が連続しているという 保証はない。そもそもmallocした領域は、確保分+管理データの 領域が含まれているので、仮に連続領域だったとしてもまとめて 書き込んだら管理領域を壊す。
何言ってんだこいつ
mallocで管理領域なんかあるのか? じゃあなんでリークするんだ
>>887 1000確保した領域に2000書いたらいかんだろうが。
それが全ての原因だ。
>>888 だから、じゃあ何を管理する領域なんだよ
fopenと混同してないか?
ああ、管理領域って実装によっちゃあるのかスマソ
無能ゲー専は死ねよ Cやめろ
892 :
デフォルトの名無しさん :2013/05/12(日) 13:55:06.00
mallocで確保した領域ってsizeofで計れないのか
>>889 何を管理するか?free()で返されたポインタが自分で管理している
メモリーブロックのどれに当たるかを判別する領域だよ。
一般的な実装でのmallocだと、確保したブロックの手前にブロックの
サイズなどの管理データをつけてある。
2つのmallocが仮に連続領域だったとしても1つめのブロックの領域
を超えて書き込んだら次のブロックの管理領域を壊す。
だから「ヒープが壊れている」というメッセージが出る。
2つのmallocが連続していなかった場合は深刻で、間のメモリーに
記録されている「誰のデータかわからない領域」を壊していく。
こういう馬鹿げたプログラムは即刻やめるべき。
1000確保したら1000までしか使ってはいかん。
>>892 sizeof が返す値はコンパイル時定数
873の偽問題ソースに釣られるバカ多数www
>>892 ポインタのsizeofはポインタ自身のサイズがわかるだけ。
根本的にポインタやC標準ライブラリに対する理解不足。
知らないくせに知ったかぶって反論すると恥をかくぞ。
898 :
873 :2013/05/12(日) 14:19:28.18
>>895 いや
>>873 のソースは、
>>872 の
> 他にも同サイズの領域を確保していますが具体的にどのように起きるのでしょうか
という問いに対して、
>>870 や
>>871 の説明を可視化させたつもりで
「こういうことをやっているんじゃないの?」
という例を見せるために書いたもの。
IDが出ていれば間違われないで済んだかなあ
必死くん
ID出てたとしてもレス先見ないような奴に理解できるわけない
これはID表示派の卑劣な策略
そういうレトリックもIDが出ればできなくなるね。
904 :
デフォルトの名無しさん :2013/05/12(日) 14:44:42.53
>>873 は悪意があるか、そうでなければ日本が不自由な間抜け
質問者に対してなりすまし妨害しといて謝らないしね
905 :
904 :2013/05/12(日) 14:45:49.60
くそ、文字落ちしやがった s/日本/日本語/
Perlスレの恨み
バカバカバカバカwww
CといいWin32といいPerlといい役目を終えた言語の末路か
無能ゴミスレ
912 :
デフォルトの名無しさん :2013/05/12(日) 15:04:28.57
ポインタと配列は似て非なるもの。
よろしければ添削してほしいのですが書き出してもいいでしょうか? 短いプログラムなのですが初心者なものでどうにもわからないのです
コンパイルタイムとランタイムの違いについて検索サイトなどを 使って調べて見るとわかるかもしれない。 必読書:エキスパートCプログラミング アマゾンで調べればすぐ出てくるので注文して読みましょう。
*y = malloc(sizeof(int)*10); だろ
918 :
忍法帖【Lv=2,xxxP】(1+0:5) :2013/05/12(日) 16:14:03.53
プロセスに子プロセスがいるのってどうやって確かめるの?
920 :
デフォルトの名無しさん :2013/05/12(日) 18:15:13.03
int cubic[9]; cubic[0]=x1.........cubic[8]=x9; xkは1〜9のどれか。 インデックス3個ずつで1行として 326 459 781 という3次正方配列を想定するとする。 このとき縦横隣り合ってる2つを選んで入れ替えて できるだけ少ない回数で 123 456 789 にしたいです。 どういうアルゴリズムがいいですか? 10×10にも適用できるような凡庸なアルゴリズムがいいです。 3×3の場合は クイックソート3回でできると思うんですがどうでしょう?
ぼんようなアルゴリズム 隣り合ってるものを交換するのにクイックソート ふざけすぎだろwww
922 :
デフォルトの名無しさん :2013/05/12(日) 18:21:19.53
すいませんww 頭混乱しててw クイックソートは無理ですよね どうすればいいですかね? バブルソート以外無理ですかね?
特に取り柄のないアルゴリズムがいいんだろ?
924 :
デフォルトの名無しさん :2013/05/12(日) 18:24:06.57
最速のアルゴリズムがいいです。 まず水平方向をバブルソートして 縦方向をバブルソートすれば3×3の場合は(3+3)×3^2/2回数で 済むと思うんですけどもっと効率的な方法ありますかね?
1〜nが連続してるなら3x3だろうが10x10だろうが N番目にNをいれるだけ 元々入っている数字もソートも一切関係ない ひっかけ問題だな
926 :
デフォルトの名無しさん :2013/05/12(日) 18:28:58.51
>>925 パズルとして考えて欲しいです。
その論理だと数独だってそうでしょ?
927 :
デフォルトの名無しさん :2013/05/12(日) 18:29:33.66
縦横に分ける必要ないじゃん
要素を走査して並び替えると考えれば N番目にソートした値列[N]が入る、にかわるだけで 同じことだよ
数独の問題解くのってまじでどうやってアルゴリズム作ってるの? あれ凄くないか?
総当り9×9×9の恐ろしい数の計算をこなせばできる
>>929 各マスの候補を順に消していけば、計算量を少なく出来る。
制約プログラミングのやり方を応用。
>>932 アルゴリズム何行?
何行くらいですむん?
>>920 普通に幅優先探索(横型探索)でしらみつぶしがいいでしょうね
>>920 これって有名なアルゴリズムがあるんじゃないのかね。
4x4パズルをさくっとといてドヤ顔してる人を見たことあるけど。
Cじゃなくて関数型なら1画面だが
937 :
デフォルトの名無しさん :2013/05/13(月) 15:28:21.90
データベースってどうやって作るの? 今世の中の有名DB、PostgreSQLやMySQLを超える高速DBを作って公開して自己顕示欲を満たしたいので教えてくださいお願いします。
まず高速化のアイデアを書きなさい
今までのDBって省メモリで作られてるだろうから 16ギガのメモリ搭載前提で作れば高速なのが作れそう
940 :
デフォルトの名無しさん :2013/05/13(月) 15:46:59.41
アイデアも何もDBがどういう仕組みで動いてるのか知らないんですよ。 だからそれを知って改善ポイントを見つけようって寸法です。 なんかキャッシュらしきものがあるとか、レコードの削除も実際には削除せずに削除フラグ立てるだけとか 4KB単位のブロックで記憶領域を確保して頻繁に領域の拡張が起きないようにするとか、そういうことしか知らないです。 俺が使える言語の中ではCが一番速いのでここに来ました。
941 :
デフォルトの名無しさん :2013/05/13(月) 15:50:57.14
>>939 16GBってこのご時世業務用鯖なら普通に積んでてもおかしくないですな。
いけそういけそう。
ところで何で16GBなんですかね?
942 :
デフォルトの名無しさん :2013/05/13(月) 15:55:47.74
ソフトって必須(最低)動作環境ってあるけど、 あれはどうやって調べるの?
ソフトの開発者がどうやって検証しているかって意味の質問だと思うんだが。 C スレだし、開発者の立場だろ。
>>942 必須(最低)動作環境を最初に決めてから、それに合わせて作るというアプローチもある。
>>945 それが普通なんじゃないの?
想定せずに作って、できてからどのくらいの低スペックまでなら動くか調べるとかしないと思うけど。
sqlite なら丸パクリでも問題ないから まずソースを読んではどうか
948 :
デフォルトの名無しさん :2013/05/13(月) 16:55:47.38
>>946 最低想定をCPU2GHz、メモリ1GB、HDD2GBで作ったとするだろ?
でも完成してみたら1.4GHz、512MB、1GBでも動くかもしれないだろ?
そういう環境だけど欲しい客がいるかもしれないだろ?
「動くとは思いますが自己責任でお願いします^w^」ってみすみす客を逃すのか?
>>948 1.4GHz、512MB、1GBの客が欲しければ
最初から最低想定をそれで作るのが普通
と思うが
完成してからゴリゴリ、ストレステストしながら、最低スペックの限界を調べるとか普通はしないな。
別に数独の9x9x9くらい一秒も掛からんから総当りでいいよ。
952 :
デフォルトの名無しさん :2013/05/13(月) 17:18:17.37
じゃあ素人製作のフリーソフトなんかは基本的に 自分のPC == 開発環境 == テスト環境 == 最低想定 ってことになると思うけど、 あの人たちは自分のPCスペックを書いてるわけ?
必要メモリはタスクマネーシャで使用量見れば分かるだろ 必要ディスク容量はインストールする全ファイルの合計容量見れば分かるだろ
cpuはタスクマネーシャでそのアプリの瞬間最大使用率見てそのときの使用率で割ればよい 3.2ghzのcpuで瞬間最大10%使ってるなら320mhzあればよい
>>952 むかしフリーソフトを公開したときは、2chで動作確認してくれる人を探してお願いした。
956 :
デフォルトの名無しさん :2013/05/13(月) 17:27:56.95
>>954 その発想はなかった。
# そして、全く意味がない。
>>951 単なる総当たりでやる場合:
数字の重複などを全く考えない場合の組み合わせは、9^81通り。
さまざまな条件などを反映させた場合の組み合わせは、約54億通りになる。
(54億通り=5.4*1000*1000*1000)
1msあたり1000通りチェックできたとして(1秒間に1000*1000通り)、5400秒かかる。
(5400秒=1.5時間)
実際は、1秒あたり100万パターンもチェックできないので、適切なアルゴリズムとコードの最適化を
行わなければならない。
バカには無理ですりんこ
>>960 総当りで解く分には凄まじく簡単だよ。人手でやると時間が掛かりすぎて話にならないけど。
逆に、真面目に理詰めで解こうとすると、仮に「世界一難しい」をLevel7とすると私が解けるのがLevel2かLevel3、
一般向けの数独のゲームソフトはLevel1程度で新聞のおまけなんかだとLevel0。
>>958 全ての組み合わせをチェックする必要はさらさらないよ。バックトラックで充分。
>>952 素人製作のフリーソフトなんか出したら
それこそ千差万別
総当りはスペック良いパソコンでも結構時間掛かると思う アルゴリズム考えないと
>>954 CPUによって特殊機能に違いがあったりするからなぁ
数独は、決まっている数字を消去法で消して、 残った未確定は候補のうちの数字をひとつ試しに入れてみて 矛盾が発生したら別の数字を入れて試して、 最後まで矛盾なく埋まったら完了。 で良いんじゃない?
>>967 総当たりの組み合わせが、例えば
81!から80!に
ひとつ減るだけで81倍の速度になる。
81!から78!に
3つ減るのなら511920倍の速度になるのである。
Cって宣言した変数使わないとエラー出るから苦手だわ 何回もシュミしてればいらん変数残したままだよな
エラーは出ないだろ
972 :
デフォルトの名無しさん :2013/05/13(月) 19:12:40.64
変数宣言して使わないとかたまにあるけどエラー出たことないわ どんなマイナーコンパイラだよ
使えばいいだけのはなし
スクリプトって宣言してない変数使ってもエラー出ないから苦手だわ スペルミスしても平気で空の値返してくるとか狂気の沙汰だよな
実行エラーじゃなくてコンパイルエラーでしょ? 出してくれたほうが嬉しいわ 使わない変数消せると気持ちいい
cもセグメンテーションフォールトがコンパイル時に出てこないから かなりうざい
977 :
デフォルトの名無しさん :2013/05/13(月) 19:37:50.66
>>974 それ思う
Perlもuse strict;付けないとデフォルトでその動作するからやってられない
バグがあっても発見するのは困難を極める
宣言なし言語は、スペルミス絶対しないとか、大量のコードの中からスペルの違うものを瞬時に見つけられるとか
そういうアスペ専用言語
phpは変数宣言の必要ないスクリプト言語だけど 今まで使われたことのない変数呼び出すと普通に警告してくれる
お前は今までに無視した警告の数を覚えているのか
できるかぎり警告対象となったものは消す CじゃなくてC++の話だけど、 テンプレート使うと一部の警告を無効化しなきゃうざいことになるんだよんぁ
音声認識したらプログラミング早すぎワロタwww はっきり発音すれば認識してくれるよ printfはプリンまでいったら一番上の候補として出てくる テトリス1時間かかったの10分で作れたわ 皆絶対やったほうがいい
次スレはよ
>>960 数独自動解法プログラムは昔俺も作った
一瞬で25x25のやつも解けるから
数独を手動で解くのとかバカらしいよね
987 :
デフォルトの名無しさん :2013/05/13(月) 21:08:45.60
a
うんこ
989 :
デフォルトの名無しさん :2013/05/13(月) 21:37:31.47
あああ
990 :
デフォルトの名無しさん :2013/05/13(月) 21:39:52.10
aaaa
991 :
デフォルトの名無しさん :2013/05/13(月) 21:45:15.81
aaaaa
ちんこ
おちんしゅ
しこしこきもちいいお
ぐろまん
まんまん
数独天皇
999 :
デフォルトの名無しさん :2013/05/14(火) 00:52:47.07
うめ
1000 :
デフォルトの名無しさん :2013/05/14(火) 00:54:46.87
スレよさらば
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。