__ ,,r‐''"~~´:::::::::::::゙~''''‐-、, ,,r''´::::::::::::::::::::::::::::::::::::::::::::::::::゙丶、 /:::::::::::::::::::::::::::::,r、::::::::::::::::::::::::::::::::\ / ......::::::::::::ィ::::::::// ヽ:::::ト、::::::::::::::::........ヽ /:::::::::::,r::::::/ |:::::/ / ゙、::l ヽ:::::::::、::::::::::::::゙、 /:::::::::::/i::::/,,,,l:::/ / ヽト‐-、:::::|',::::::::::::::::i i::::::i:::::/'|::/ |/ / ! ヽ::|ヽ:::::i:::::::::l l:::::::|:::/ .i/ ヽ:| ゙、::::i:::::::::| |:::::::|/ ゙'! ヽ,!:::::::::| |::::::;;;;i -‐''''''"""~~ ~~"""゙'''''''''‐ |;;;;::::::::| |::::::;;;;;| |;;;;:::::::::| |::::::::;;;;l l;;;;:::::::::| |:::::::;;;;;| |;;;;::::::::| _,,,r-┴、::;;;;ヽ、 ノ;;;:::::-‐-、 / 、 、 ヽヽ-,;;;゙ヽ、 ヽフ ,,,イr/´/ ,r ゙'ヽ、 聞いてやーー  ̄ ̄\,,,ヽ、,,i、,,,i、ノ' ̄ ゙゙̄'''‐- ...,,,,,,,,,,,,,,,,,,.... -‐'''~  ̄(,,しL,/,,,r'~,,,-‐' ̄ ̄
VC++でC99を使う方法おしえて
VCにもいろいろあるでよ
おバカさんですか?バージョン聞かれてないかい?
>>7 すいませんでした
VC++ 2010 Express使ってます
C99がCのスタンダードになることは永遠にない
VC++はC++専用、もっと言えばWindowsアプリ専用と考えた方がいいよ。 CコンパイラとしてはC95にもC99にも対応してない古臭い仕様だから。
C99対応だと何が嬉しいの
そうなんですか?CをコンパイルするときはBCCのほうがいいでしょうか?
BCCはもっと古いが、まあ準拠度で言えばC89だからVC++と同等ではある。
あした学校の授業でプログラミングあるのでC89あるか先生に聞いてみます
BCCって今でも無料版あるの?
今は私立の小学校でもプログラミングの授業があるらしいな
19 :
デフォルトの名無しさん :2010/09/26(日) 19:01:05
プログラミングの仕事がしたいんですけど未経験で30歳はキツイですか?
26以上は実務経験ないとキツイっていうか無理
まあ会社によるけど厳しいよね 今の仕事があるなら無理に転職する必要はない
てすと
24 :
デフォルトの名無しさん :2010/09/26(日) 20:41:58
暗号は今一つ盛り上がりに欠ける
暗号に限らずアルゴリズム関連のスレは既存のものを使ってればいいだけだから 今更議論することも少ない
26 :
デフォルトの名無しさん :2010/09/26(日) 21:01:19
新型は要らない!という話?
いや新型は欲しい、 既存型の複製を作ってもなあ・・・って話 車輪の再発明は学習には必要だけども、 他人にとっては今更って思うから盛り上がりに欠ける
暗号化ならとりあえずカメリア使っとけ
29 :
デフォルトの名無しさん :2010/09/26(日) 21:18:06
わざわざNTTに特許料払うのか?
30 :
デフォルトの名無しさん :2010/09/26(日) 21:18:57
Code Based Cryptographyがいい!
ひゅ〜ひゅ〜
vc++限定の話です。 #pragma intrinsicっていうプリプロセッサ指令あるじゃないですか? これって数学の関数の処理を最適化して高速化するもんですよね? たとえば、sin,cos,atan2を高速化したければ、 #pragma intrinsic(sin,cos,atan2)ってかけばOKなんですか?
33 :
デフォルトの名無しさん :2010/09/26(日) 21:59:08
>>24 まともにレスできる者の絶対数が少ないのと
2ちゃんで発言するかどうかの関門でまた厳しいふるいがあるからな
35 :
デフォルトの名無しさん :2010/09/26(日) 22:04:10
C の「高級アセンブラ」としての使命が問われている、根本的な問題だと思うが
>>33 暗号化技術そのものは秘密でもなんでもないわけだから
べつに2ちゃんで話そうが駅のホームやスターバックスで話そうがどうってことないはず。
つまりはまさに暗号についてわかってる奴が少ないって事だろうね。
>>32 >>1 >★C++言語については避けてください。C++対応明記スレへどうぞ
38 :
デフォルトの名無しさん :2010/09/26(日) 22:13:46
>>36 理想論に異を唱えるつもりはないが
スターバックス怖いぞ
39 :
デフォルトの名無しさん :2010/09/26(日) 22:15:25
オリジナル暗号実装してて速度でGPGに勝ったんだけど、OpenSSLに負けてる。
問題は強度だ
早いより硬いほうが女性も喜ぶよね
勝ち負けを論じることができるレベルのアルゴリズムでも実装でもなかった。
>>38 ,39←ほらね、こういう暗号とはどういうものなのかという初歩を知らない奴はこういうリアクション。
2ちゃんのプログラムスレでもこのレベルだからまぁ、発展的な話なんて無理と言えば無理。
44 :
デフォルトの名無しさん :2010/09/26(日) 22:46:27
ニヨニヨ
>>38 暗号化のアルゴリズムってのは本来、秘密にするべきものではなく
世界中の暗号学者にそのアルゴリズムの詳細仕様をメールで送っても
ゴールデンタイムのTV放送で全国ネット、世界中継で読み上げてもおkなもんなのだよ。
そうやってアルゴリズムを誰もが知っていてもなお、
解読するのに実質不可能と思えるくらいの時間を要するものを
使用に耐えうる暗号と言う。
俺の理解では鍵交換した後は対称鍵で暗号化するもんだと思ってた。 gpgにせよopensslにせよその暗号化アルゴリズムは強度と速度から適切なものを選択 するものであり、どのアルゴリズムをどう使ったか含めて言わないあたり院生ってのも ちょっと怪しいなと思った。
ぶっちゃけさJavaでアンドロイドアプリ開発したいんすよ てゆーかiphoneがObjective-Cで開発みたいな? だから初めての言語はC#かJavaかCどれを学習したらいいんですか? ぶっちゃけトークでよろしく!
>>45 ケルクホフスの原理は必須ってわけでもない
そうあるべきって主張があるだけ
現代においてもなお、クローズドな仕様・実装のほうが
より機密性が高くなるとする立場は存在する
典型例がNSAで、国家機密に使われる非公開暗号を用意しているらしいし
>>47 Javaでアンドロイドアプリ開発したいんなら、Javaだろう
他の言語を学習する理由がどこにある
おれまだ中1なんっすよ やっぱり初めの言語は大事かなって思ってるわけっすよ
中一だと順番違うの?
53 :
デフォルトの名無しさん :2010/09/26(日) 23:13:49
黒客には陽と陰がいてそれは 自らの発見で名声を欲しがる者と 自らの発見そのものに満足する者がいる 暗号論において怖いのは後者だということは論を待つまい
>中一 なか はじめ ?
プログラミングの最初なんてfor とか 変数 とか 関数が理解できればどれも大して変わらないだろ。 俺はjavascriptから入ったから型が最初は無かった。そういや、JSやる前に授業でRやったけど、 さっぱり身につかなかったな。目標持って自発的にやれよ。
も き ゅ 〜
同じバイナリが違う環境で動作するときにアラインメントの取り方だけが違うっていう場合はあるの?
58 :
デフォルトの名無しさん :2010/09/26(日) 23:55:55
ないって保証が悪魔の証明なんだよ
ほっ ほっ
60 :
デフォルトの名無しさん :2010/09/27(月) 01:35:11
300Mのファイルの読み書きだけで16秒もかかるんですが、OpenSSL は暗号化の処理を入れても10秒位しかかかりません。 どうすればファイルIOを早く出来ますか?
もういい加減消えろ
つメモリマップドファイル
63 :
デフォルトの名無しさん :2010/09/27(月) 09:23:43
while((read_size=fread(buff,1,SIZE,fq)))を while((read_size=fread(buff,4,SIZE,fq)))とするとファイルの4分の1 しか書き込めません。なぜですか?
>>63 fread()の戻り値は、第2パラメータで指定した単位で何個読み取れたか。
つまり、実際に読めたのは(戻り値*第2パラメータ)[bytes]になる。
66 :
デフォルトの名無しさん :2010/09/27(月) 10:02:03
fwriteの書き込みバイト数が1のままだった。4バイトにすれば早く なるかと思ったけどならなかった。
67 :
デフォルトの名無しさん :2010/09/27(月) 10:09:51
OpenSSL調べてるけど、特別なこと何もしてないみたいだし・・・ 何であんなに早いの?
コツは、ファイルサイズを取得する関数でターゲットとなるファイルのサイズを取得し、 バッファのリミット定数と比較し、OKならファイルサイズ分がばっと一括で読んじゃうのが一番速い方法。 これならHDDへの読込みアクセスが一回で済む 内容を分割したけりゃその後に分割(こうすればメモリ上のアクセスなので数段速い)
69 :
デフォルトの名無しさん :2010/09/27(月) 10:13:00
具体的なソースがほしいです
71 :
デフォルトの名無しさん :2010/09/27(月) 10:20:58
バッファサイズと読み込み時間って関係あるんですか? 増やしてもあまり変わらなかったです。
ディスクアクセスを何回行なうか、が時間に大きく関わってくるとは思わね? 1回と10000回ディスクアクセスするんだととっちの方が時間がかかる?
頭でコード書いてるバカはほっとけ
またずいぶんレベルが下がったな。 前スレでは読み込みのブロッキング中に別スレッドで回せということだったと思うんだが。
女は子宮で書くのよ
高速化に拘るのは結構だが、せめてスレタイ読んでから書き込もうな。 高速化/効率化は明らかにスレ違いな話題だし、ここで聞いても有意な回答は望めないよ。
>読み込みのブロッキング中に別スレッドで回せ それもうC++の領域じゃね? Cの仕様そのものがもう時代遅れで300MBなんてファイルを読み込むことを想定していないわけだし。
ファイルサイズの取得 MFC CFileFindクラス .net FileInfoクラスのLengthプロパティ
つまり、C++は標準規約でスレッドに対応してると、そう仰りたいわけか。
いいえ
82 :
デフォルトの名無しさん :2010/09/27(月) 12:31:41
timidityやtmidi95やgrooveみたいにソフトウェアでMIDIエミュレートするにはどうやるんですか?難しいですか?
>>81 質問者がcygwinと言っているのだから、pthreadでも使えばいいんじゃない?
>>83 でも結局、数バイトづつ読むとなると、読み終わるまで親は待たないといけなくなるよね、という矛盾
ふっほっはっ
>>82 MIDIで指定された音階で、指定された楽器の音を
指定された強さで鳴らすだけ。楽器の音データは
楽器の音を録音して使用する。
同時に複数音を出さなくて良いなら、
プログラムとしては大変ではない。
データを用意するのが大変なのと、
実用的なスピードで音の合成するのが大変。
で?300MBのファイルを高速で読むにはどうすんの?
>>83
別スレッドにしてもファイル読み終わるまで親スレッドが待つことになるだけでちっとも速くならないよー。
>>86 けっこうたいへんあんんですね
ソフトシンセサイザーで一発ぼろ儲けをしてる人はハッカー
>>87 けっこうたいへんあんんですね
ソフトシンセサイザーで一発ぼろ儲けをしてる人はハッカー
>>88 けっこうたいへんあんんですね
ソフトシンセサイザーで一発ぼろ儲けをしてる人はハッカー
ソフト側は素直に普通に作っとけ。 アクセスを早くとか、そういうのはハード側に求めるべきだ。
>>88 >>89 前スレを全くみていないのね。
スレッドを使うと読み込みを速くできるなんて一言も言っていない。
読み込みのブロッキング中に別スレッドで暗号化できるという話をしている。
が、質問主はマルチスレッドが大変と分かったらしく、
とにかく読み込み時間を速くすることに絞ったようですな。
95 :
デフォルトの名無しさん :2010/09/27(月) 16:19:41
>>95 ttp://codepad.org/gc4mHHuC 私のことも見て!
シングルスレッド
$ time ./a.exe -s DATA.bin S.bin
real 0m35.030s
user 0m19.155s
sys 0m0.624s
マルチスレッド
$ time ./a.exe -m DATA.bin M.bin
real 0m25.098s
user 0m18.906s
sys 0m0.562s
データは100MBのものを使用した。
注意:読み込みが速いわけではない。
ブロッキング中に別の処理をしているだけ。
昔遊んでたコードを元に適当に組んだ。
ちゃんとconditionとか使えばもっといい感じになると思う。
97 :
デフォルトの名無しさん :2010/09/27(月) 17:01:33
これはC言語?何してるのかよくわからない・・・ 因みにバッファのサイズを262144にしたら最高速度になった。 $ time ./perm 3 3.perm real 0m12.137s user 0m0.015s sys 0m0.016s $ time ./perm 3 3.perm real 0m6.006s user 0m0.000s sys 0m0.046s かなりOpenSSLの性能に近づいた感じ。(気のせい)
98 :
デフォルトの名無しさん :2010/09/27(月) 17:15:07
こんな凄い事出来るのにプロじゃないなんて・・・
>>96 みたいな唯我独尊・自画自賛プログラマってほんと、プログラマなんてやめちゃえばいいのに。
どうせろくでもないコード乱造してるくせに「仕様です」とか言い張って改善する能力もない、世界のダニ。
setbuf使って、システムコールの回数を減らしてみるとか
setbufferのほうだった
聞く前にまず自分で試行しろ
汗みたけど for(i=0;i<16;i++) u.m[i]=buff[i+k*16]; 毎回、コピーしてるここがネックじゃないかな?
ぬっほっ
107 :
デフォルトの名無しさん :2010/09/27(月) 20:52:39
どうすればいい?
暗号くんの嫌いなポインタを使うんだよ
キャストでやる手もあるかな
110 :
デフォルトの名無しさん :2010/09/27(月) 20:55:47
早くなるの?
どう考えてもディスクから読み込む必要ないよな 聞いてるやつも教えてるやつも同一人物としか思えなくなった
112 :
デフォルトの名無しさん :2010/09/27(月) 20:58:18
SSE2命令でループをベクトル処理してくれる機能があるんだけど、 それよりも効果がありますか?
ひっふっ
114 :
デフォルトの名無しさん :2010/09/27(月) 21:00:10
別人です
書き方が悪くて、128ビットアクセスになってないみたいだからね
116 :
デフォルトの名無しさん :2010/09/27(月) 21:07:17
今日はもう寝るので明日までに解決しといてください
もうこいつに反応するやつは同一人物でいいよ。俺含めて。
昔のベーシックみたいな書き方してるからかな、反応しちゃうのは
いいですよ
120 :
デフォルトの名無しさん :2010/09/27(月) 21:32:41
工業高生なんだが 10 main() 20 { 30 printf("ハジメマシテ\n"); 40 } こんな行番号まで入れてポケコンで頑張ってるんだけど 今のところこんなことしかできないんだけどどこから頑張ればいいの?
嘘つきには教えない
ポケコンだと派手なコトできないから 数値計算系のやつでもがんばってみたら?
123 :
デフォルトの名無しさん :2010/09/27(月) 21:34:40
すいません、intも一応使えます。
工業高生ねえ。。。
125 :
デフォルトの名無しさん :2010/09/27(月) 21:35:50
連レスすまぬ。
>>122 了解したぜよ!あとifとか覚えて情報技術3級狙ってくる!
情報技術って情報技術検定のこと? あれ、1級以外だとジュニアマイスターの点数稼ぎにも使えないから 受ける意味はあまりないと思う
127 :
デフォルトの名無しさん :2010/09/27(月) 21:46:16
>>126 部活でとあるソーラーカーレースやらその他いろいろにでてるんだが
それにでるだけでジュニアマイスターの点数がたまって危険物取扱をとるだけで
シルバーか何かになれるんだ、ごめん。
>>120 SHARPのPCG-850とか?
懐かしいなおい。
てかポケコンって今でも売ってるのか。
>>127 別表2、3に参加だけでOKってやつなかった気がするんだが
131 :
デフォルトの名無しさん :2010/09/27(月) 22:21:06
>>130 一応、成績はある程度残さないと高い得点は入らないんだけどね。
ただ、そういう先輩もいただけだから自分は無理かな。
>>128 .SHARP PC-G850VS
処理速度が速くなったせいで処理速度固定させないと
持ってる雑誌のゲームとかできないんだよね。
>情報技術検定 受験料安すぎと思ったら高校生向け試験なのね オラクルマスター受けたいけどxマソは学生にゃ高すぎる・・・
自演注意
基本情報も応用情報も5000円だろ
135 :
791 :2010/09/27(月) 23:17:17
自演
>>134 情報技術検定 != 情報処理技術者試験
基本応用とったからベンダー資格にも手をだそうかと思案中
高速なファイルアクセスの書き方も知らんようなヘボどもが
分かってねえだろks
>>132 が情報技術検定は安いとか、オラクルは高いとか言ってるから
それなら基本や応用を受ければいいと言ってるだけ
142 :
47 :2010/09/27(月) 23:45:01
ども47です 俺的にはさ、とりあえず自分の好きに使えるPCが今ないからさ お金貯めて買ってからJavaやりたいみたいな つーことで報告乙りにきた
>>141 基本や応用は金にならない&就職に使えない
オラクルは金になる&就職に使える
だいたい、工業高校の学生なら
基本、応用の2つぐらい普通に持ってるだろ
それは誤解だよ
>>144 応用って前のソフト開発のことだろ?
俺の出身高校だとほとんどのやつが持ってたぞ
#include "hoge.h" と #include <hoge.h> はどう違うんですか。
うちの会社はどんな資格取っても手当なんか一切出ないぜ! 基本とソフ開とテクネとテクデとテクエンベとテクセキュ持ってるけどオラクルもシスコも無い俺は世間一般ではどのくらいの価値があるんだろうか
>>146 簡単なのに合格率が低いのは工業高校の奴らが落ちまくってるからだろ
応用 = 旧ソフ開 + マネジメント + ストラテジ 範囲は広がっている
>>147 "hoge.h" はカレントディレクトリを探して、なければインクルードパスを探す
<hoge.h> はインクルードパスだけを探す
152 :
デフォルトの名無しさん :2010/09/28(火) 00:13:08
第ゼロ印象に影響はある だが、その後に化けの皮が剥がれると詐欺呼ばわりで 人事部の人も始めからそれが頭にある 使えない奴がポイされるのは資格云々のせいじゃなく本人の中身 仮に実力があっても悪用されるとこれまた危険極まりないしな
まあね
暗号くんへ #if 1 { on *dd; dd = &buff[k*16]; u = *dd; } #else for(i=0;i<16;i++) u.m[i]=buff[i+k*16]; #endif 8ビット毎のコピーが32ビット毎のコピーになったぐらい s5関数にも似たこと出来るとこがあったな 早くなったかは微妙
OpenMPかTBB使いなされ
300MBをごっそり1回でHDDからメモリに読むってどうやんの?
freadで出来るでしょ
300メガのリニアメモリ確保してfreadで300メガ読み込む こうですか
ファイルを1回でHDDから読んじまって後の操作はメモリ上だけでやった方が圧倒的に早くね?
ファイルサイズ調べて、読み込む
読む前に空きメモリサイズも調べとくこと
読み込んだデータを暗号化すれば、コピーの回数が減るけど 暗号君の腕じゃ、動かなくなりそう
>>149 会場にたどり着けない職業プログラマが多いからだよ。
欠席はたしかに多いが統計資料では欠席を除いた合格率が出てる
会場に行くのがそんなに大変なのか? まるでハンター試験だな・・・
暗号くんへ { on *dd; dd = &buff[k*16]; for(i=0;i<4;i++){ c1.cc[i]=((c1.cc[i]+dd->cc[i])&f2)^c1.cc[(i+1)&0x3]; c2.cc[i]=((c2.cc[i]+dd->cc[i])&f2)^c2.cc[(i+1)&0x3]; } } コピーをなくしてみた。 s5の入り口と出口のコピー処理の影響が大きいみたいだよ。計4回やってるからね。
暗号くんへ s5で cc->H->GGとコピーして、Hを使ってないじゃないか
やっぱり、無駄なコピーがネックになってる
勘違いしてたとこがあったけど、 for(i=0;i<16;i++) GG.m[a[i]]=H.m[i]; ここの処理が重いみたいだ
171 :
暗号 :2010/09/28(火) 05:22:25
172 :
暗号 :2010/09/28(火) 05:25:34
warning C4133 '=' : unsigned char * と 'on *'の間で型に互換性 がありません。
病院に帰れ
174 :
暗号 :2010/09/28(火) 07:43:40
これって高速化出来ないですか?ポインタで。 でもポインタの使い方わかりません。 unsigned char *buf[32],buff[SIZE]; for(i=0;i<32;i++) buf[i]=buff[i+32*k]; こんな感じで。 buf= &buff[32*k];
>>174 出来ますよ。こんな感じで。
memcpy(buf, &buff[32*k], 32);
176 :
暗号 :2010/09/28(火) 08:13:12
bufからbuffにデータを戻す場合はどうすればいいですか? for(i=0;i<32;i++) buff[i+k*32]=buf[i];
177 :
暗号 :2010/09/28(火) 08:16:17
さらにこれは? for(i=0;i<16;i++){ buf[i]^=d1[i]; buf[i+16]^=d2[i]; }
高速化する価値がない。以上。
昔のベーシックみたいな書き方しかわかんないみたいだから とりあえず、入門書を読み直すところからはじめたら 答えを聞くばっかりじゃなく、自分で考えないと
そろそろ専用スレ立ててくれ。いい加減鬱陶しい。
TURBO Cプログラミング入門という参考書は非常にタメになる。 こんなスレで聞くより一度読んでみたほうが良いよ。
暗号化の簡単な例を教えてください。
aをbに変換 bをcに変換 helloを暗号化するとifmmpになる
184 :
183 :2010/09/28(火) 12:30:39
続き ifmmpをbase64でエンコード エンコードした文字列もなんかの文字に変換 そして更にエンコード そして更に(ry
185 :
デフォルトの名無しさん :2010/09/28(火) 12:47:41
自分なりに勉強してたつもりなんですが、今読むならどんな本がいいのでしょうね。 fread/fwriteでこんなに性能が変わるなんて知りませんでした。 環境によってスピードが変わるんでしょうか。キャッシュの性能を除いた 単一のベンチマークとかの性能比較の方法はあるのでしょうか。 プログラムはポインタとかドレスとか出てくるともうわかりません。 わかる範囲でプログラムしてます。目標はオリジナル暗号ソフトです。
>プログラムはポインタとかドレスとか出てくるともうわかりません。 性能とか言ってる場合かよ
187 :
デフォルトの名無しさん :2010/09/28(火) 12:55:10
ストリーム暗号は簡単ですよ。乱数を発生させてXORするだけ。 問題は周期が短くならないようにすること。統計的な分布も重要。 最近ではブロック暗号でAESが標準になってる。ブロック暗号からも ストリーム暗号は作れますが、今目指してるのはストリーム暗号の方。
暗号アルゴリズムの開発じゃなくて、実装だからここでいいだろ。 Cが分らんと言ってる奴を暗号技術に誘導すんな。
>>185 >目標はオリジナル暗号ソフトです。
いや、だから、まず概念としての暗号の基礎を学べよ。
そうすりゃオリジナル暗号なんてどんだけバカげたことかわかるから。
191 :
デフォルトの名無しさん :2010/09/28(火) 13:13:50
Cやる気あります。参考書知ってたら教えてください。 300Mを6秒で処理できるようになりました。
なんだたったの6秒かしょぼいな
194 :
デフォルトの名無しさん :2010/09/28(火) 13:24:16
暗号は大学院で研究してました。楕円曲線とか誤り訂正符号を使った 暗号とか。でもまだ一度も自分で作ったアプリがないので挑戦して いるところなのです。広く使われているアルゴリズムでないと意味が ないかもしれないですが、とりあえずいいのです。 開発環境はCygwinのGCCとvisual Studio 2010ですがコマンドライン だと使い方がわからなくなりそうなのでVC++みたいにウインドウズ ソフトにしようかと考えてます。
195 :
デフォルトの名無しさん :2010/09/28(火) 13:26:36
もともと20秒かかってました。
196 :
デフォルトの名無しさん :2010/09/28(火) 13:28:06
ソース見ますか?
暗号のできる中学生くらいなのかとおもってた。
198 :
デフォルトの名無しさん :2010/09/28(火) 13:39:30
6秒ってのはキャッシュのせいかもしれない。
ひとつアドバイスさせてもらうと、今の段階でいたずらに高速化を目指すより アルゴリズム上の無駄を推敲して正しい設計、正しい実装を目指した方がいいと思うぞ。 その方が結果的に速度が上がるように思う。 参考書 「UNIXという考え方―その設計思想と哲学 」 出版社: オーム社 (2001/02) ISBN-10: 4274064069 ISBN-13: 978-4274064067
200 :
デフォルトの名無しさん :2010/09/28(火) 13:50:26
すいませんやっぱりソースはお見せできません。
201 :
デフォルトの名無しさん :2010/09/28(火) 13:54:29
アルゴリズムの基本構造は有限体上の行列演算です。 Goppa符号のシンドロームをOFBモードでフィードバックさせて 乱数を発生させます。安全性を実験的に確認している途中です。 演算が論理演算しか使わない単純なものなのに思ったほど速度が 出なかったのが気になりました。
安全性を検証するのに速度は関係ないだろう 速度なんか気にしてるといつまでも検証の方が進まないぞ やるべきことをやれよ
>>201 暗号化アルゴリズムとコーディング(のアルゴリズム)を混同していると思われ
ポインタも使ってねーで速度でないとか、笑う
206 :
デフォルトの名無しさん :2010/09/28(火) 15:24:46
プログラムをビルドした日時をプログラム内で取得したいんだけど 格好いい方法ありますか?
な い
$ cat foo.c const char * BuildDate = BUILD_DATE; $ gcc -S foo.c -DBUILD_DATE='"'"`date`"'"' $ cat foo.s .file "foo.c" .section .rdata,"dr" LC0: .ascii "Tue Sep 28 15:31:02 2010\0" .globl _BuildDate .data .align 4 _BuildDate: .long LC0
格好よくはないな
__DATE__と __FILE__じゃだめなのか?
__FILE__じゃねえ__TIME__だよ
212 :
デフォルトの名無しさん :2010/09/28(火) 16:46:22
行列の要素の入れ替えで質問です。 G[16][16][2]という行列があったとき、 *temp=G[0][2][0] G[0][2][0]=G[9][5][0] G[9][5][0]=*temp で要素の入れ替えは出来ますか?
「temp」だけでできるとエスパー
Gとtempの型次第。
tempが有効なポインタを指していなければアウト
216 :
デフォルトの名無しさん :2010/09/28(火) 17:02:43
じかにやる方法しかわかりません。 temp[0]=G[0][2][0]; temp[1]=G[0][2][1]; G[0][2][0]=G[9][5][0]; G[0][2][1]=G[9][5][1]; G[9][5][0]=temp[0]; G[9][5][1]=temp[1]; 何かいい方法があったら教えてください。
いやだから「G」と「temp」の型を書けっての
218 :
デフォルトの名無しさん :2010/09/28(火) 17:16:11
unsigned long long int です。
unsigned long long int G; unsigned long long int temp; だというのか?なわけないだろ
行単位、列単位でコピーしたいってことだろ
221 :
デフォルトの名無しさん :2010/09/28(火) 17:24:28
そうです。 unsigned long long int G[16][16][2],temp[2]; ポインタが使えると思うのですがよくわかりません。
>>216 みたいに直にやるか、ループで回すか、memcpy使うか
223 :
デフォルトの名無しさん :2010/09/28(火) 17:35:51
一番早い方法が知りたいです。
swap 関数作ってインライン指定だけでいいだろ
memcpy()使うほどのサイズじゃないし、>216で充分だよ。 C++ならstd::swapを使えって話になるけどCだから作るまでもない。
void swapUnsigndLongLong2(unsigned long long * a, unsigned long long * b) { struct {unsigned long long x, y;} tmp; tmp.x = a[0]; tmp.y = a[1]; a[0] = b[0]; a[1] = b[1]; b[0] = tmp.x; b[1] = tmp.y; } swap(& G[0][2], & G[9][5]);
// さっきはstaticを付け忘れたけど、今時のコンパイラならstaticをつけておけばinline展開してくれるし // 他のソースに悪影響を及ぼさないためにもつけたほうがいい。 static void swapUnsigndLongLong2(unsigned long long * a, unsigned long long * b) { // c89だとエラーが出るからその場合は>226で struct {unsigned long long x, y;} tmp = {a[0], a[1]}; a[0] = b[0]; a[1] = b[1]; b[0] = tmp.x; b[1] = tmp.y; } // ついでに関数名も間違えてやんのw swapUnsignedLongLong2(& G[0][2], & G[9][5]);
228 :
デフォルトの名無しさん :2010/09/28(火) 17:55:50
じかにやってみます。
途中までの書き直したソース貼ってくれれば更にアドバイスしやすいかも
[0]を何度もコピーしてるのが無駄ね
231 :
デフォルトの名無しさん :2010/09/28(火) 18:50:16
誰のソースですか?
232 :
デフォルトの名無しさん :2010/09/28(火) 19:08:17
ストリーム暗号の周期を測定しようとしたらすごいバグが見つかった! 直して今のところ2^32までの周期はない事がわかったのですがどの位 なら安全といえますか?
234 :
デフォルトの名無しさん :2010/09/28(火) 19:14:17
実験的な確かめ方がわかりません。2^128位ですか。 どなたかアドバイスお願いします。
?
??
とりあえず暗号野郎はトリ付けろ
>>234 周期のあるのは予想可能性という点で問題あるので暗号には使えない。
239 :
デフォルトの名無しさん :2010/09/28(火) 19:26:52
実験では実際に計算させて周期がないかどうかをしらべています。 しかし大きな周期は無理なので確認方法がわかる人がいたらお願いします。 計算量的な安全性は証明できても実装した場合に安全かどうかは別なので。
241 :
デフォルトの名無しさん :2010/09/28(火) 19:38:51
メルセンヌツイスターは安全じゃないんですか?
MTは暗号学的には安全じゃないので 暗号に使うなら暗号学的に安全な別なの使ってね、 って公式にアナウンスされとるがな
>>239 一周期回らせようとしたら膨大なデータをやりとりしない限り無理じゃないの
>>243 はいはい、基礎がわかってないやつはすっこんでろや
>>241 2,3桁見たらもう次は予測可能じゃん、暗号学的には。
246 :
デフォルトの名無しさん :2010/09/28(火) 19:59:49
実計算で確認するのは無理だと思います。 アルゴリズム的に周期がない事を証明しないといけないかもしれません。 ブロック暗号のOFBモードに似ているのでそういう方法で安全性を 保障するのかもしれません。OFBモードでも周期はあるはずなんですけどもね。
247 :
デフォルトの名無しさん :2010/09/28(火) 20:03:11
計算量的には次ビット予測不可能性っていいますね。 公開鍵暗号の場合ですけど。鍵をかませれば出力から単純には 次の値がわからなくすることができると思います。
>>246 乱数発生させたいならカウンタ値をハッシュしてもいいじゃね?
その代わり種となるカウンタ値はばれたら大変。
値の出現確率が一様になるようにダミーを混ぜる 乱数でスワップを繰り返してシャッフル 実はこれだけで完全な暗号になる
250 :
デフォルトの名無しさん :2010/09/28(火) 20:09:41
統計的テストでは一様分布になってます。バイト単位の出現率ですが。 CTRモードのことですかね>カウンタ
でも結局突きつめてくとAESとかRSAの劣化コピーみたいなアルゴリズムに落ち着くんだよね。 で、結局、既存のアルゴリズムがどんだけよく考えられているかを知る、と。
252 :
デフォルトの名無しさん :2010/09/28(火) 20:23:29
一応数論とは違う問題に基づいてはいるんですが。新型暗号
ポインタすら分からない奴がスレチもほどほどにしろよ
>>252 新たな暗号アルゴリズムを作りたいのか?
プログラムのコーディングが上達したいのか?
新たな暗号アルゴリズムを作りたいのならこのスレの住人じゃ検証する力もないし、話の内容がそもそもスレ違い。
それに実証コードを書きたいなら自分でやらずともコーディングのプロに頼めばいい(OpenSSHのメンバーなど)
プログラムのコーディングが上達したいのなら暗号のことは一旦脇に置いてコーディングの勉強をするべき。
暗号数学とプログラムはへつもんだから互いにいちゃモンつけてもしゃあないでしょ。
256 :
デフォルトの名無しさん :2010/09/28(火) 20:33:21
新型を質の良いプログラムで実装したいです。 資金がないのでプロには頼めません。 コーディングの勉強をします。
>>256 バカなの?
質の悪い手製の新型暗号を、たとえ質のいい実装したってクズはクズだろ。
ゴミをきれいなラッピングでプレゼント包装するようなもんだ。
ホントに手製の新型暗号に自信があるなら論文でも書いて学会に送りなよ。
どんだけ強力な暗号なのか世界中の数学者、暗号学者が検証してくれるから。
実装はその暗号の有用性が実証された後で充分。
有効な暗号だと認定されりゃ、世界のだれかオープンソースの住人(実装の達人)が実装してくれるよ、タダで。
もしくは企業が権利を買い上げてくれるかもな。
結局、「新型暗号」なんて適当なこと言って、
スレをひっかきまわしたいだけだろ?
研究段階なら質が悪かろうがとりあえず動けば良いんだよ 質の良いプログラムとか考えるのは後の話
>>257 おいおい、暗号さんの才能に嫉妬すんなよw
アルゴリズムが完成してるなら、それがプロにも解読出来ないか検証すればいい。今使われてる暗号のように。 プログラムに使おうとすんな
趣味で実装してんじゃないの? そんなにピリピリする必要はないだろうに
入れ食い状態の釣り堀か、それとも自分で餌撒いて自分で食い付いてんのか
263 :
デフォルトの名無しさん :2010/09/28(火) 21:07:58
趣味ですw もう寝ます
C使ってるのにデータをレジストリに使う奴は情弱
ぷぷ
いいよ
>>258 研究段階(暗号の)ならプログラムで実際に動かす必要なんてないけどな。
269 :
デフォルトの名無しさん :2010/09/28(火) 23:23:04
それはない
何のスレだっけ?思い出せ低脳。
僕高脳。
experimentは一応必要じゃないの
lain
違うなw
int main(void) {
ん?
return 0; }
return -1;
エラーがでるらしいよ
280 :
デフォルトの名無しさん :2010/09/29(水) 01:05:57
エラーが出るなら仕方ない
ここでffmpegの質問してよいですか?
いいえ
メモリクリーナーみたいにタスクマネージャで表示されるメモリにゴミがあったら開放するやり方ってどうすればいい? calloc失敗するまで読み込んで失敗したら終了したら一応はその動作するけど外道だし int *p; while (1) { p = calloc 失敗したらbreak } これだとexe終了処理で開放されてるけどfreeしてないし freeするにしてもwhileの中でやったら無限ループになるし 外でやっても最後のpしかfreeされないしで思いつかない int i, count, **p *p = calloc while (1) { p = calloc 失敗したらbreak count++; } for(i=0;i<count;i++) { free(p) } free(*p) こんな感じに出来ない?
ひどすぎる
p[0]を確保してp[0][count]を確保 p[0][i]を開放してp[0]を開放って感じか?
以下のコードを実行するとiが66を超えたところで、lにマイナスの値が代入されるのはなぜですか? int i = 0; for (; i <= 100; i++) { long l = i * 33000000; LOGI("i=%d l=%d", i, l); }
>>287 オーバーフロー
32bit環境ではlongは4Byte(-2147483648〜2147483647)
オーバーフローが疑わしい log2(65 * 33000000) ≒ 30.998 log2(66 * 33000000) ≒ 31.020
C言語の本で 配列内の文字は、終端ナル文字の直前まで出力される、精度が指定されない 場合や、精度が配列の大きさより大きい場合、配列は必ずナル文字を含んで なければならない。 ↑ とあるけどこれの意味がわかりません・・どういうことですか?
指定の精度が配列より小さい場合、ナル文字は含まなくてもいいのですか? ナル文字0はかならず終端に容量をとって含まれるものでしょう?
>>290 それはprintf()系の話だと思うが、説明がやや的外れだと思う。
例えばフォーマット指定で%.10sなどとした場合、10バイトを超えて出力されることがないことが保証されているに過ぎない。
従って、通常は必ずナルターミネートされていないといけない。
// まぁ、こういうことだ。 char buf[] = "abcdefghijklmn"; printf("%s\n", buf); // 10バイトしか出力されない(%10sとの違いに注意) printf("%.10s\n", buf): // 長さはナル文字を含まないが、配列のサイズには含まれる。 printf("%u, %u\n", (unsigned) strlen(buf), (unsigned) sizeof(buf));
294 :
デフォルトの名無しさん :2010/09/29(水) 08:59:30
ところでおまいらプリプロセッサなに使ってる? stdio.h使ってるんだけどそろそろ変えようかなって思ってるんだよね。 あれ?プリプロセスだっけ まぁなんでめいいや
295 :
デフォルトの名無しさん :2010/09/29(水) 09:03:49
Visual Studioの最適化オプションって何が一番いいですか?
297 :
デフォルトの名無しさん :2010/09/29(水) 09:19:04
>>292 C言語の入門書読んでるけど3Pに一か所くらい、どういう意味?って
感じの説明があるんだが・・・
298 :
デフォルトの名無しさん :2010/09/29(水) 09:20:47
>>297 その塵本は捨てて、別な本を買った方がよい。
クラス内の関数ポインタの動的確保ってどうするの? 例えば int (A::*test)(); っていう関数ポインタがあったとして、こいつを動的確保する方法です。 newに渡しても、コンパイルエラーになったり、 typedefしようとしても、戻り値の後ろの空白のせいでコンパイルエラーになったり してしまいます。 正しいtypedefと動的確保について教えてください。
いやまて何を動的確保する気だよwwww typedefは普通に typedef int (A::*test)(); だが
>>301 ありがとうございます。
途中で関数ポインタの配列を用意しないといけない状況になってるんですが、
動的確保できないんですかねぇ。
>>292 strncpy() の指示数と被代入変数の器の大きさとか?
上限5文字で切りたい場合 器は \0 を含めて 6個必要
(strncpyでは、さらに上限いっぱいの場合には 明示的に \0 代入が欲しい)
char buf[6];
strncpy(buf, 5, "123456789abcd");
→
buf[0] = '1'
buf[1] = '2'
buf[2] = '3'
buf[3] = '4'
buf[4] = '5'
buf[5] = <不定>
不定(笑)
>>302 ごめんCスレだと気付かなかった
これで終わると思うので勘弁してください
次は最初から誘導しようと思います
>>303 ならそういえ
typedef int (A::*test)();
test *p2 = new test[10];
>>306 ありがとうございます!出来ました!
C++スレ別にあったんですね。次からは気をつけます!
CとC++スレの区別もつかないヤツって、コード書いててもミスばっかりなんだろうな
310 :
デフォルトの名無しさん :2010/09/29(水) 13:43:12
GCCとVisualStudioでアセンブラのソースを見たんですが、小さい方が 早いですか?
>>310 どうしてそのような思考に至ったのか書け。
かかねえなら死ね。
312 :
デフォルトの名無しさん :2010/09/29(水) 13:49:34
ステップ数が少ない方が実行速度が速いのかなと思ったので。 後いろいろ最適化かけてみて平均的に早い(どちらも大して変わらない) 方を選ぼうと思ったので聞いてみることにしました。
ファイルから複素行列を読み込んで complex A[N][N]; で宣言した2次元配列に格納したいと考えてます。 例えば、N=3のとき、 ファイルには実部と虚部がスペース区切りで以下のように並んでいる場合、 (実部と虚部で1要素) どのようにして読み込めばいいでしょうか。 実部 虚部 実部 虚部 実部 虚部 実部 虚部 実部 虚部 実部 虚部 実部 虚部 実部 虚部 実部 虚部 もちろんエラーが出るのですが、 感覚的には以下のようにして読み込みたいです。 for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { fscanf(fp, "%lf %lf", creal(matrix[i][j]), cimag(matrix[i][j])); } }
ベンチマークをひとにやらせるな。
>>313 double x, y;
fscanf(fp, "%lf %lf", &x, &y);
matrix[i][j] = complex(x, y);
ここの先生方の力で初心者向けC言語講座サイトを作成していただけませんか? もちろんアフィリエイトは踏ませていただきます
>>312 感覚的には悪くない発想だが、そうでない例もあるので保証にはならない
例えばループアンロールは命令量を増大させるが、
適切に使用すれば性能は上がる
>>315 ありがとうございます。
double x, y;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
fscanf(fp, "%lf %lf", x, y);
matrix[i][j] = complex(x, y);
}
}
とすると
error: expected expression before ‘__complex__’
と出てしまったので、
complex x, y;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
fscanf(fp, "%lf %lf", x, y);
matrix[i][j] = x + y * I;
}
}
とすると、コンパイルは通るのですが
セグメントエラーになってしまいました;
どうすればいいでしょうか?
>>318 scanfの使い方を間違っている。%lfならdoubleへのポインタを渡す。
とにかくなんでもまずはhelpを読むんだ。unix系ならman、WinならMSDN。
次にgoogle先生でコードを探してそれをパクる。
他人が書いたライブラリを使おうってのに説明なしなんてあまりにも無茶すぎる。
で、complexってstd::complex?ならそれはC++。
322 :
デフォルトの名無しさん :2010/09/29(水) 15:55:37
Cで必要最低限の機能を持った簡単なシューティングを作る場合、 コードは何行で収まりますか?
325 :
デフォルトの名無しさん :2010/09/29(水) 16:04:56
Cで必要最低限の機能を持った簡単なシューティングを作る場合、 コードは何行で収まりますか?
規格上、一行あたりの文字数には制限があったはずだが C89で511文字とかだっけ?
つまんね
>>325 その質問には意味がない。
それと二度と書きこまないように。
またおまえかC#スレに変えれ
※このスレは中級者見習いが初心者を罵倒するスレです
332 :
デフォルトの名無しさん :2010/09/29(水) 16:47:53
左辺値って何ですか ググッてもよくわからないんですが
>>210 駄目だが、ヒントにはなった。ありがとう。
>>332 代入演算子の左辺に現れることのできる値のことです
例えば x = 3 の x のことです
335 :
デフォルトの名無しさん :2010/09/29(水) 18:28:20
OpenSSLのファイル暗号化の秘密鍵ってどうやって生成されてるの? ファイルごとに毎回変わってるの?
コイツいつまで粘着するの?
338 :
デフォルトの名無しさん :2010/09/29(水) 18:41:17
公開鍵の生成は確率的暗号化してるってわかるけど、(OAEP) 秘密鍵暗号の場合は鍵をどう使っているのか不思議。 まさかパスワード?
スレ違い
>>338 は、発言によりLinuxもTeraTermを使ったこともないことがバレたようです。
341 :
332 :2010/09/29(水) 19:02:25
>>334 ありがとうございます
もう一つ質問なんですが(x=y)=6はなぜだめなんでしょうか
>>341 代入式は左辺値ではないからです
左辺値でないので x=y は = の左側に来ることはできません
>>338 このスレは馬鹿ばっかりだから、聞くだけ無駄
(x = y) はyを代入したxの値として評価されるから
両方に代入したきゃ()つけないで、x=y=6でいいじゃん
>>342 それは違うx=yは左辺値だよ、人に教える前に自分が勉強しろ
追い払おうとしてるのか自演なのかよく分からん
”代入演算子の左辺に現れること”が出来ないから左辺値じゃないんじゃねw
>>347 そだね、()で囲むのが問題、それによって左辺値でなくなる。
>>347 わざわざ調べて書いたから間違いない
An assignment expression has the value of the left operand after the assignment, but is not an lvalue.
って書いてあった
普通に考えて分解すると x=y; x=1; の順で計算されてるから
354 :
デフォルトの名無しさん :2010/09/29(水) 19:34:35
>>350 では (x) = 6; はダメなのか?
# 左辺値という言葉の「左」は確かに代入に由来するようだが
# 今となっては左辺値であっても代入はできないものがゴロゴロある
あげんな
x=yという式の値は右辺値だろw
357 :
デフォルトの名無しさん :2010/09/29(水) 19:59:09
3秒間に何回暗号化できるかの実験をしたいのですが、時間を制限して プログラムを実行するいい方法はありませんか。因みにOpenSSLでは、 openssl speed des aes camellia で3秒間に処理できるブロック数が表示されます。
3秒あたり何回回ったかがわかればいいんじゃないの?
暗号くんのレスをすべてつなげてある復号化アルゴリズムにかけると徳川埋蔵金の在処を示す文字列になる
暗号中学生はいつになったら消えるの?
スルー徹底すればすぐにでも
362 :
デフォルトの名無しさん :2010/09/29(水) 20:14:50
3秒でプログラムを停止させる方法が知りたいです。
alarm(3);
364 :
デフォルトの名無しさん :2010/09/29(水) 20:21:09
エラーが出ます。 未解決のシンボルalarmが関数mainで参照されました。 manで調べても出てきません。何回ループしたかも表示させたいです。
1万回処理するのにどんくらい時間がかかるか調べろよ
暗号の前にCの基礎を勉強しろ馬鹿。やる気ないならやめちまえ
#include <time.h> int main(void) { time_t start_time, now_time; time(&start_time); while(1) { time(&now_time); if((now_time - start_time) >= 3){ break; } } return 0; }
368 :
デフォルトの名無しさん :2010/09/29(水) 20:27:58
9000000回で13秒。 カメリアは3秒。
それだと、timeの実行時間が付加されるような
それは仕方なくね。 while内を2倍にすれば差でタイムがわかるとおもう
> 9000000回で13秒 ?=9000000*3/13
お前ら何を、右辺値とか左辺値とか分け解らん言葉使っているんだ 正しく右辺オブジェクト、左辺オブジェクトと使えよw (x=y)=6の (x=y)の結果が名前付の左辺オブジェクトを返さないからだろ 何が帰ってくるのかって? x=0、y=1 した場合(x=y)で戻ってくるのは名前付オブジェクトxではなく,xが管理しているの数字の1 お前ら1=6って平気でやって何でだって大騒ぎしてるんだろw int a,b a=bとした時にオブジェクトaとオブジェクトbが同一になるのかよ。それが管理していの値が同じになるだけだろ 管理しているもの値は同じになるが、オブジェクトが同じになるわけじゃない。同じになるならアドレスも同じになるよな。 よくあるパターンのif( (c = Fxxx()) == XXX ){}の(c = xxx())でもそう で==の右左の条件って何か教えて struct neko{};、struct neko a、 struct neko b、a == b、何を比較してるんだこれ
memcpy?
memcmp?の方だった
実際にtime()程度の精度のタイマーで時間を測りたいなら、 >367のwhileの前に一旦変化点を見定めておかないと誤差が平均0.5secに拡大してしまうよ。
memcpyってどう使うの?
struct neko{};、struct neko a、 struct neko b、a = b
>>376 代入演算子=の関数版がmemcpy
struct neko{};、struct neko a、 struct neko b、a = b
ならmemcpy( &a, &b, sizeof(a) )
>>376 >378の説明では不充分だけど、使わなければならないケースは入門レベルを超えるので使えなくても大丈夫。
>>319-321 double x, y;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
fscanf(fp, "%lf %lf", &x, &y);
matrix[i][j] = x + y * I;
}
}
遅くなりましたが、これでできました。
本当にありがとうございました
381 :
デフォルトの名無しさん :2010/09/30(木) 03:05:22
CygwinのGCCで作ったバイナリをWINのコンソールで実行させるにはどうしたら いいですか?GCCで作ったバイナリの方が早かったのでWIN上での動作確認を したいです。どなたか教えてください。
383 :
デフォルトの名無しさん :2010/09/30(木) 04:09:24
インストールしてる間にフリーズして出来ない。 CygwinはDOSのプロンプトから実行できないけどMinGWは出来るんですか?
できます というかMSVCRT.DLLを使ってるからWindowsでそのまま実行できるはず
386 :
デフォルトの名無しさん :2010/09/30(木) 04:28:00
emmintrin.h がないってエラーが出ます。
387 :
デフォルトの名無しさん :2010/09/30(木) 05:05:06
c:\mingw32\bin\../lib/gcc/mingw32/4.5.1/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
ふはぁ
389 :
デフォルトの名無しさん :2010/09/30(木) 07:49:20
mingw32のコンパイラのバージョンは4.5.1だけどCygwinのバージョン は4.3.4です。GCCのオプションで gcc -O3 -ftree-vectorize を付けたとき、Cygwinのときはループの ベクトル化をしてくれますがmingw32のときは失敗してベクトル化 してくれません。どうすればいいですか。
>>389 cygwinで-fno-cygwinだとどう?
つーか、入門篇で扱う内容じゃないから後はCygwin/Mingwスレで。
391 :
デフォルトの名無しさん :2010/09/30(木) 08:16:29
-fno-cygwin GCCでそんなオプションありませんでした。 Cygwinスレも見つかりません。
393 :
デフォルトの名無しさん :2010/09/30(木) 08:35:52
cc1.exe: error: unrecognized command line option "-fno-cygwin" gcc (tdm-1) 4.5.1 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
fno-cygwinに似たオプションがあるからそれだね
暗号くんは難しい?計算式は理解できるけど 簡単なことは理解できないんだね。 英語のエラーメッセージもまともに読まないって感じか?
397 :
デフォルトの名無しさん :2010/09/30(木) 12:12:21
http://codepad.org/RJ3J8hjW 数独を解答するプログラムを作りましたがなぜかうまくいきません
原因を教えていただけないでしょうか?
0 0 3 0 0 0 0 0 0
0 9 0 0 0 0 2 0 0
4 0 0 5 7 8 0 1 0
0 8 2 9 0 0 4 0 3
0 0 5 0 0 0 0 0 7
0 0 1 0 0 0 0 0 8
8 0 0 6 2 5 0 9 0
0 0 0 4 0 0 0 0 0
0 6 0 0 0 0 8 0 0
>>394 -mno-cygwin ではどうでしょうかね。
>>398 移動したようだから相手にすんな。
>>397 コード追うのが面倒なんだけど、再帰を使わずにどうやってバックトラックしているの?
400 :
397 :2010/09/30(木) 12:48:23
もしブロック内または縦横に同じ数がなければmasu[x]を確定しnext(y,x+1)に進み 先で不具合があったらmasu[x]まで戻って次の数に進むようにしようとしたのですが うまくいきません
>>400 コード汚すぎ
どうして再帰呼び出しでやらないの?
配列に2次元にすりゃいいのに。。。
402 :
397 :2010/09/30(木) 14:41:58
>>401 今月の頭から覚え始めたばかりなのでコードの汚さはご容赦ください
再帰呼び出しについて調べてみることにします
数独ってどうやんのが一番効率いいんかね 力任せに再帰していったらいつ終わるかわからんぜ
一番穴の少ない行または列から探し始めれば少しはマシなんじゃないかな
>>403 最近のCPUを舐めちゃいかんよ。真面目にアルゴリズムを考えるなくても、
単純なバックトラックだけで実装しても充分実用的な時間で解ける。
すみません。 char*型の文字列をTCHAR*型の文字列に変換する関数を作成したのですが、 少なくともUNICORD実装環境では4文字('\0'含む)までしか正しく変換出来ません。 問題点について考察したのですが、良く分からないのでご教授頂けたらと思います。 TCHAR* char_to_tchar(const char *pszChar){ long nLen; TCHAR *pszTchar; /*入力がNULLだった場合*/ if(pszChar==NULL){ return NULL; } /*文字数の取得*/ for(nLen=0;pszChar[nLen]!='\0' && nLen>=0;nLen++); nLen++; /*メモリの確保*/ pszTchar=(TCHAR*)malloc(sizeof(TCHAR)*(nLen+1)); /*メモリの確保に失敗した場合*/ if(pszTchar==NULL){ return NULL; } 続く
>>406 の続き
#ifdef UNICODE
/*char型からwchar_t型に変換*/
::MultiByteToWideChar(CP_THREAD_ACP,0,pszChar,strlen(pszChar)+1,(LPWSTR)pszTchar,sizeof(pszTchar));
#else
/*文字列のコピー*/
strcpy(pszTchar,pszChar);
#endif
return pszTchar; //処理が終わったらfree
}
正しく変換できるの最初の4文字までで、以降は文字化けします。
知識のある方、是非お願い致します。
sizeof(pszTchar) == 4
409 :
397 :2010/09/30(木) 15:29:39
なぁ、そもそも数独って何?
>>410 めんどくさいから検索してくれ。簡単に言えば、9x9升に1から9の数字を縦横ブロック毎にユニークになるように並べるパズルだ。
・同じ列で同じ数字を2つ以上使ってはいけない ・同じ行で同じ数字を2つ以上使ってはいけない ・3x3ブロック内で同じ数字を2つ以上使ってはいけない 以上の条件を満たすように空欄を1〜9の数字で埋めるゲーム
413 :
397 :2010/09/30(木) 15:40:46
>>410 3×3のブロックに区切られた 9×9 の正方形の枠内に1〜9までの数字を入れるパズル
ナンプレ
>>405 試しに作ってみた。雑に作ったら結構時間掛かったぞ。
--
$ time ./a < foo
0 0 3 0 0 0 0 0 0
0 9 0 0 0 0 2 0 0
4 0 0 5 7 8 0 1 0
0 8 2 9 0 0 4 0 3
0 0 5 0 0 0 0 0 7
0 0 1 0 0 0 0 0 8
8 0 0 6 2 5 0 9 0
0 0 0 4 0 0 0 0 0
0 6 0 0 0 0 8 0 0
7 5 3 1 9 2 6 8 4
1 9 8 3 4 6 2 7 5
4 2 6 5 7 8 3 1 9
6 8 2 9 1 7 4 5 3
9 4 5 8 6 3 1 2 7
3 7 1 2 5 4 9 6 8
8 3 4 6 2 5 7 9 1
2 1 7 4 8 9 5 3 6
5 6 9 7 3 1 8 4 2
real 0m32.131s
user 0m30.733s
sys 0m0.030s
規格で保証されてんのは再帰17(?)回だっけ それ以下で解けないとだめだよなJK
規格に制限なんかあったか? スタックさえ気をつければ平気だと思ったが
417 :
397 :2010/09/30(木) 16:07:20
ミスが見つけられないorz 0 0 3 0 0 0 0 0 0 0 9 0 0 0 0 2 0 0 4 0 0 5 7 8 0 1 0 0 8 2 9 0 0 4 0 3 0 0 5 0 0 0 0 0 7 0 0 1 0 0 0 0 0 8 8 0 0 6 2 5 0 9 0 0 0 0 4 0 0 0 0 0 0 6 0 0 0 0 8 0 0 1 1 3 1 1 1 5 4 4 1 9 6 1 1 1 2 3 4 4 2 6 5 7 8 3 1 6 6 8 2 9 1 1 4 5 3 3 3 5 1 1 1 1 2 7 3 3 1 2 3 2 5 2 8 8 1 4 6 2 5 1 9 1 1 1 7 4 1 1 1 2 1 1 6 4 1 1 1 8 2 1
>>415 何の規格だyp
ちなみに、>414はPen4 2.2GHzでの時間ね。
って書いているうちに>418を見たのでそれも試した。
--
$ time ./a < foo
7 5 3 1 9 2 6 8 4
1 9 8 3 4 6 2 7 5
4 2 6 5 7 8 3 1 9
6 8 2 9 1 7 4 5 3
9 4 5 8 6 3 1 2 7
3 7 1 2 5 4 9 6 8
8 3 4 6 2 5 7 9 1
2 1 7 4 8 9 5 3 6
5 6 9 7 3 1 8 4 2
real 0m0.057s
user 0m0.046s
sys 0m0.030s
--
冗談じゃねぇw
>>414 =
>>419 涙目w
例の「最も難しい」とされる問題でどの位掛かるんだ?
隙間が多かろうが論理的に解くには複雑だろうが総当りなら関係ないと思うんだが。
421 :
デフォルトの名無しさん :2010/09/30(木) 16:55:05
>>415 main() { a(17); }
a(b)
{
char c[2147483647];
if(b) a(b-1);
}
>>420 これ?
--
. . 5 3 . . . . .
8 . . . . . . 2 .
. 7 . . 1 . 5 . .
4 . . . . 5 3 . .
. 1 . . 7 . . . 6
. . 3 2 . . . 8 .
. 6 . 5 . . . . 9
. . 4 . . . . 3 .
. . . . . 9 7 . .
--
ほらよ。Cygwinだから所要時間は誤差の範疇。
--
$ time ./a < most
1 4 5 3 2 7 6 9 8
8 3 9 6 5 4 1 2 7
6 7 2 9 1 8 5 4 3
4 9 6 1 8 5 3 7 2
2 1 8 4 7 3 9 5 6
7 5 3 2 9 6 4 8 1
3 6 7 5 4 2 8 1 9
9 8 4 7 6 1 2 3 5
5 2 1 8 3 9 7 6 4
real 0m0.056s
user 0m0.030s
sys 0m0.062s
9x9を9枚のレイヤーみたいに扱って 9X9X9のビット列で比較したら速くならないかな
>>423 これ以上早くしてどうすんのw
というわけで、自分のも計測誤差の領域まで速くなった。
既にある数字まで無駄にチェックしちゃっていたよ。
小手先の技で高速化しようとするな。 素直にシンプルに書け。 高速化の要求はハード側にしろ。
>>408 無事解決いたしました。
ありがとうございました。
VC++2010 なぜかelseの中まで実行していく・・・助けてクリ DWORD dBuf; MENUITEMINFO info; GetMenuItemInfo( hSubMenu, IDM_TOPMOST, FALSE, &info ); if( info.fState == MFS_CHECKED ) { dBuf = MFS_UNCHECKED; SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); } else { dBuf = MFS_CHECKED; SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); }
(info.fState & MFS_CHECKED) == MFS_CHECKED
言葉足らずだった; 条件が真の場合でもelseの中実行してしまう
>>430 アリガトンでもまだ実行してしまう;;
if((info.fState & MFS_CHECKED) == MFS_CHECKED){
dBuf = MFS_UNCHECKED;
SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
} else {
dBuf = MFS_CHECKED;
SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
}
実行するわきゃねーだろ。全部コード晒せ。
>>432 それでだめならそもそもinfo.fStateにフラグが立ってない
そこのコード以外の部分の問題だ
とりあえず前後だけ。ほんとにナゾ・・・ これでもダメだったら恥ずかしい部分(コード的にじゃなくて)修正してうpします。 static HMENU hMenu,hSubMenu; MENUITEMINFO info; ZeroMemory(&info,sizeof(MENUITEMINFO)); static DWORD dBuf; /*メッセージ分岐*/ case IDM_TOPMOST: //システムトレイアイコン右クリック時ポップアップメニューの中にある最前面表示切替 info.cbSize = sizeof(info); info.fMask = MIIM_STATE; hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1)); hSubMenu = GetSubMenu( hMenu, 0 ); GetMenuItemInfo( hSubMenu, IDM_TOPMOST, FALSE, &info ); //チェック状態取得 if((info.fState & MFS_CHECKED) == MFS_CHECKED){ dBuf = MFS_UNCHECKED; SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); } else { dBuf = MFS_CHECKED; SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); } info.fState=dBuf; hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1)); hSubMenu = GetSubMenu( hMenu, 0 ); SetMenuItemInfo( hSubMenu, IDM_TOPMOST, FALSE, &info ); break;
info.fStateは8が入ってます。うーむ??
関数自体が2回呼び出されてるんじゃないの?
elseブロックの中に入ってるって根拠はもちろんデバッガなんだよな?
>>435 本当に両方実行されているってどう確認した?
440 :
デフォルトの名無しさん :2010/09/30(木) 20:31:26
俺も static が気になるなあ
も、ってお前しか気にしてない
VC++で両方にブレークポイントはってるんですがそこが実行されてるんです。。。
紛らわしいので追記ステップで実行しました・・・
両方だけじゃなくてif文の前後にも置いて、1回の実行で両方実行されてるか調べて
なんで毎回LoadMenuしてんだ
>>444 elseの中のブレークポイントふみませんでした;;;
凡ミスかもしれませんつってk(
んでもステップオーバーだと踏んでいくんです
>>445 ハンドルがしょっちゅう変わるんで。これも謎なんです・・・
もしかして: リリースビルド
LoadMenu の段階で menu-state は初期化される LoadMenu(初期状態) → 条件分岐 → LoadMenu(初期状態) → state セット 2回目の以降の呼び出しも同じように LoadMenu(初期状態) → 条件分岐 → LoadMenu(初期状態) → state セット LoadMenu を1回だけ呼ぶようにして 状態を保持したまま分岐できるようにしないとマズイ
>>447 そのようでした。お手数かけました。さよならありがとちきゅうすれ汚しゴメンネあふうううう
450 :
397 :2010/09/30(木) 20:48:40
>>448 MSDNちゃんと読んでませんでした。んで結果ちゃんと動きました。
レス下さった皆様、本当にありがとうございました。
ふっほっはっ
453 :
デフォルトの名無しさん :2010/10/01(金) 08:15:24
警告が出て気になります。何が原因でしょうか。 #if 1 { dd= &buff[k*16]; u= *dd; } #else memcpy(u.m,&buff[16*k],16); #endif memcpy(dd,&buff[16*k],16); hash.c:230:11: warning: assignment from incompatible pointer type hash.c:237:7: warning: incompatible implicit declaration of built-in function 'm emcpy'
incompatible pointer type って書いてあるのに。 implicit declarationは、適切なheader fileをincludeしていないから。 incompatibleっていってるからincludeすると別の警告が出るだろうけど。
string.hを追加すれば、消えるでしょ
エラーメッセージが解読できない暗号くんでした
なぜこんなにも妬ましいのだろう
incompatible pointer type って書いてあるのに。 implicit declarationは、適切なheader fileをincludeしていないから。 incompatibleっていってるからincludeすると別の警告が出るだろうけど。
ふっほっはっ
C++に慣れると変数宣言の位置が固定なのにイラッとするな おかげでスコープ区切るだけの括弧が量産されるわ
C99
動的言語に慣れると変数宣言することにすらイラッとするようになるよ
>>462 変数宣言のないのはちょっとあれだなあ、タイプミスに気がつかないのが危険だ。
型は臨機応変だけれども、変数宣言は必須、というアプローチが最適だと思うのだけれども。
簡単みたいに思えるけど、タイプミスなのか、わからないエラーに悩むんですよ。 コンパイラだと、変数名付きでエラー出してくれるから自分にとっては楽な方。
動的言語もたいていは変数宣言しないで使うとグローバル変数になっちゃうから、けっきょくいつも宣言している気がする Rubyはローカル変数になるけど、そんなに嬉しいわけでもない・・・ 結局明示しないとスコープが・・・
結局は、 option explicit にしちゃうんですよ。でもこれだと型は固定されるのではなかったかと。 型は自由自在、でも宣言は必須、という言語はないかなあ。情報求む。
語りたがりウゼーぞ
>>460 設計からやり直せよ。
つーか、C++でも汚ねえコード書いてそうだな。
うん
欲しいのはコレだけだろ。 for(int i=0; i<n; i++){}
define使ってfor(1..n){}みたいに書ける?
>>467 C しかしらないので、語るほどのものがない、ということですね。よくわかります。
>>466 はよく分かってない奴が背伸びして語ってるようにしか見えないから
>>474 宣言なしの言語とつきあわされたために、気が狂う寸前にまで陥ったことがないとは、幸せですね。
それはもう大変でした。最終的にはクロスリファレンスをとって、しらみつぶしに調べるしかなかった。
宣言なしの言語でやるなら、総量はせいぜい 10000 ステップが限界ですね。それ以上は勘弁してください。
普通にPython使ってるけど Pythonは変数宣言どころか、標準関数ですら同じ名前を使えばエラーになることなく上書きされるけどね そういう思想で作られてるわけ。そんなことで気が狂うってw
あ、組み込み関数のこと
>>476 ダイナミックな型づけと、宣言必須かどうかは別にしたいところ。
他人のtypo をはじくことができないなんて、おそろしくて。いや、typo って無視できるほど少ないわけではないんですよ。
まあ、インタプリタならば、それなりの用途で、それくらいの要求の仕様となっているのでしょうね。
python って宣言必須にはできませんでしたっけ。
。が何言ってるのか意味不明
>>463 動的言語はIDEのサポートがヘボいからダメだ。
生産性低い。
入力補完だけ出来ればいいや
静的型で、テンプレートやらジェネリック+型推論のある言語がいい。 言語はそっちのほうこうで進化してほしい。 動的型は廃れたほうが世のためだ。
>>480 その点は、宣言があれば解消できるか、と淡い期待をしているのですが、やっぱりだめでしょうか。
スレチいい加減にしろよ動的言語を満足に使えない池沼
485 :
デフォルトの名無しさん :2010/10/01(金) 20:25:42
C を動的に使えない池沼だろ
コンパイラやらツールに任せられる作業を人間が必死にやって「動的言語を使いこなしてるぜ」って。
487 :
466 :2010/10/01(金) 20:26:30
>>484 自分の意見が支持されないからといって、すぐに発狂するのは、褒められたものじゃありませんね。
ここがいくら中級者が偉そうに語るスレでも
>>466 みたいな自己中知ったかはいらん
人にスレチスレチ言うやつって、自分は別格でスレチOKと思ってるよな。
まあなんだ、C で新しい言語処理系を記述しようとしてたんだよ、多分。
(俺が使いこなせないから)動的型は廃れたほうが世のためだ(キリッ
「動的言語ってIDEやコンパイラに任せられる作業を人手でやらないと いけないから、結局生産性低いよね」って意見に反論できないで、 ひたすら「動的言語を使えないから反対してる」ってレッテルを 貼るしかできない動的言語信者。
>>494 心配しなくても動的言語は一般的に使われてるよ。なんでそこでは静的言語が使われないのかな?
少しは考えなよ
道具が悪い! 道具が悪い! はいはいw
twitterはrubyを捨ててScalaに移行らしいし、web方面も静的型に 移行していけばいいのに。 どっかのブログでクライアントが「JavaScriptでサーバー側がJavaってのは おかしい、サーバーサイドもJavaScriptで書こう」とか言ってたけど、 間違ってるよな。 Googleみたいにクライアントもサーバー側もJavaで書くって方向に行くべき。 まあでも、VB6を使ってる連中がいまだにVB6を使いたがるみたいに、 いまPHPを使ってる層は、世の中がどういう流れでも永遠にPHPだろうな。
していけばいいのに。 間違ってるよな。 方向に行くべき。
>>462 変数宣言嫌いならfortranでも使ってろ。カス。
Lisp使います^^
アセンブラが頂点であり至高。
このまえpythonの話題のときに動的言語は生産性が低いって いったらやっぱり具体的な反論はなくて 「pythonが生産性が高いのは動的だからじゃない。pythonだからだ」って 反論なのな。 信者すぎる。 あとLL系はREPLだから習得が早いとか言ってるやつに、C#とかjavaとかも 初心が書くようなコードだとコンパイルは一瞬だし、べつにそれは優位性 ないだろって言ったら、具体的な反論はなくて「ゆとり」とか煽ってきたな。 LL系とか動的言語の信者って、優秀なそれ系の言語のユーザーの 言葉尻にのってるだけだから、基本、言葉が不自由だよな。
全然中立じゃない明らかな静的言語信者が何を言ってもなあ
要するに取るに足らないうっかりバグの修正にかかるコストとコンパイルコストどっちが受け入れやすいかってことだよな 神経尖らせて手作業でバグ探しするよりコーヒーでも飲みながらコンパイル待つほうが頭いいだろJK
まぁ実際にコーヒー入れてコンパイル待つと相当イライラするけどな 会社のPCに自費でSSDいれちゃったよ。あまりコンパイル速度は早くならなかったけど。
コンパイル通ったってバグはありえるし、どちらにしろそっちの方が恐いだろ コンパイル通らないようなミスなら動的言語でも初めの実行時に上手く動かないと思うよ
その怖い方のバグはどっちも起こりうるならイーブンで比較材料にならない その前の段階のバグをメッセージ付きで知らせてくれるか、自分で探さなければならないのか どっちが良いかはすぐに分かるだろう
>>506 いや、カバレッジ100%にしないと単純なスペルミスも発見できないでしょ > 動的
動的言語にもIDEがあることを知らんのかな。スペルミスが恐いなら補完機能使えば良いし
カバレッジ100%でも、一目で分かるようなわかりやすいバグが 発現しなかったら見逃す可能性あるな。
>>509 コード補完とかリファクタリングの強力さがぜんぜん。
Cでダラダラ書きつらねてビルドしてようやく動かせると思ったら 間違いに気づいて気になるとこ直してたら結局全部変わってた、 とかより pythonでちょっとずつ動かしながらサラっと書けちゃった方が楽。 pythonが生産性が高いのはpythonだからだ!!!
そんなにスペルミスするなら何回コーヒー飲みながら待たなきゃいけないんだろう
仕事さぼれるなら1日じゅうコーヒー飲んでてもいいわ俺
コーヒー飲みすぎるとハゲるぞ
マジで?
コーヒーより緑茶だろう 生産性が15%は向上するわ
コーヒー、ポリフェノール多いって話があるな。
多いっちゃ多いけど、植物由来のものはどれも多かれ少なかれポリフェノールは含まれている。 騙されている人も多いけどお茶のタンニンだってポリフェノールの一種だから、珈琲よりは多く摂ることができるよ。
お茶だと糖分が取れない
コーヒーに砂糖入れねー
男ならブラックだろって知り合いで一番カコイイ人が言ってた
523 :
521 :2010/10/01(金) 22:24:17
ミルクは入れるよ
コーヒーは発癌性があるんじゃなかったっけ。俺は紅茶派だな
>>517 ,524
緑茶や紅茶だとすぐにできるからコンパイル終わる前に飲み干しちゃうよ
豆から!?IT土方なんて皆インスタントじゃないの
528 :
デフォルトの名無しさん :2010/10/01(金) 23:09:19
通常は生茶の2リッター いったん思考を中断して落ち着く必要がありそうなときコーヒーだね、ミルで挽いて
俺はそんな時ペプシNEX もしくはベッドに横になる
水に決まってんだろ。 ゲロルシュタイナーが最強。
コーヒーはにがくて飲めない 砂糖3杯くらい入れないと無理
>>528 さすがにミルは無いわ。ゴリゴリ五月蝿いだろ
533 :
デフォルトの名無しさん :2010/10/01(金) 23:38:37
>>532 いま電動
手回し使ってたこともあるけどさすがにしんどくてやめた
あーゆープチメカは基本的に好きなので捨ててはいない
コーヒーメーカーも自作だろ
535 :
デフォルトの名無しさん :2010/10/02(土) 00:01:03
>>535 まるで
>>512 の俺が書いたみたいじゃないか!やめてくれよ
俺もコーヒー飲むぞ!インスタントでブラックだぞ!コーヒーメーカーは自作じゃないぞ!
538 :
536 :2010/10/02(土) 00:11:26
pythonさいきょー!ってかschemeじゃねーか ほんと括弧多いよな
Schemeに惹かれるものを感じ幾度となく手を出しつつもどうしても関数的思考ができなくて挫折してるよ... CとかJavaとかの手続き型言語に馴染みすぎた
生産性生産性言うやつほど何も作らない法則
金にならないから 元々、金になることが出来ないから
545 :
デフォルトの名無しさん :2010/10/02(土) 10:17:17
__m128i *pa = (__m128i*)a; __m128i *pb = (__m128i*)b; __m128i *pc = (__m128i*)c; __m128i *pd1= (__m128i*)d1;__m128i *pd2= (__m128i*)d2;__m128i *pbuf=(__m128i*)buf; __m128i *pa = (__m128i*)a; __m128i *pb = (__m128i*)b; __m128i *pc = (__m128i*)c; __m128i *pd1= (__m128i*)d1;__m128i *pd2= (__m128i*)d2;__m128i *pbuf=(__m128i*)buf; __m128i va, vb, vc, vd1, vd2; va = _mm_loadu_si128(pa); vb = _mm_loadu_si128(pb); vc = _mm_loadu_si128(pc); vd1 = _mm_loadu_si128(pd1); vd2 = _mm_loadu_si128(pd2); _mm_storeu_si128(pa, _mm_xor_si128(va, _mm_adds_epu8(vd1, vc))); _mm_storeu_si128(pb, _mm_xor_si128(vb, _mm_adds_epu8(vd2, vc))); _mm_storeu_si128(pbuf++, _mm_xor_si128(_mm_loadu_si128(pbuf), vd1)); _mm_storeu_si128(pbuf, _mm_xor_si128(_mm_loadu_si128(pbuf), vd2)); 動くのですが、pbufの中身が memcpy(&buff[32*k],buf,32); にコピーされません。
>>542 私も挫折している口ですが(SICP難しい)、挫折するたびに、挫折しながら、それでも前よりもちょこっとは進歩している、と信じています。
pbufがコピー元になっとらんのでは?
pbuf=buf pbuf++ <ーーこれは何してるの?
549 :
Perl忍者 ◆M5ZWRnXOj6 :2010/10/02(土) 14:26:57
なんか ここばかしかいない
馬鹿な方がいい時もあるんだよ
551 :
デフォルトの名無しさん :2010/10/02(土) 14:37:58
_mm_storeu_si128(pbuf++, _mm_xor_si128(_mm_loadu_si128(pbuf), vd1)); _mm_storeu_si128(pbuf, _mm_xor_si128(_mm_loadu_si128(pbuf), vd2)); pbuf--; buf[0]=*pbuf->m128i_i8; pbuf++; buf[16]=*pbuf->m128i_i8; 書いてもらったプログラムなのでよくわかりませんが、128ビットの 共用体を2つ分使っているのではないかと思います。 ところで上のプログラムをclでコンパイルすると通るのに、GCCだと 共用体のメンバじゃないといわれてエラーが出ます。pbufからbufに 値を代入する正しい方法を教えてください。もしくはmemcpyでpbuf からbuffに代入する方法があったら教えてください。よろしくお願いします。
入門スレでそんな難しいこと訊いたって答えられる奴はいないぞ SSEスレとかで訊いた方がいいぞ
書いてもらった人に聞くのが速そうだけど、 ここはSSE2とかわかってる人は見てないでしょ
というかそこまでするんならいっそのことアセンブラで書いた方がいいんじゃね・・・ もうC言語じゃねーよそれ
aとかbufとかunsigned charで宣言してgccでコンパイルしたけど 別に怒られんかったな
sse用の関数は無視して pbuffを書き換えてるところで buffの内容をダンプしてみればどこで間違ってるかはわかりそうだけど memcpyより前のところが間違ってるんだよ
俺アセンブラなら分かるけど、何とかIntrinsicだっけ?その書き方知らね
計算前に memcpy(buf,&buff[32*k],32); をやってないから、答えが違うとか騒いでるだけだったりして
559 :
デフォルトの名無しさん :2010/10/02(土) 15:26:11
// pbuf--; // for(i=0;i<16;i++) // printf("%u ",pbuf->m128i_u8[i]); buf[0]=*pbuf->m128i_u8; pbuf++; // for(i=0;i<16;i++) // printf("%u ",pbuf->m128i_u8[i]); // printf("\n"); buf[16]=*pbuf->m128i_u8; // for(i=0;i<32;i++) // printf("%u ",buf[i]); // printf("\n"); 今こうやってpbufの中身をbufにコピーして確認してます。 bufとpbufの内容はあっているようです。
部分的にはられてもね、わからんでしょ。天才探したほうがいいよ
貼った流れもすでにわかってないような書き方だし
つーかマルチポストだぞ?しかも大量に。
いつものことでしょ、暗号くんは
そろそろコテつけてくれないかな暗号君
565 :
デフォルトの名無しさん :2010/10/02(土) 15:51:08
__m128iって共用体ですよね。そのはずなのに、GCCではメンバじゃない とエラーになるのが不思議です。pbufのメンバにどうすればアクセス できるでしょう。
最低限の書き方でエラーが出るソースとそのエラーメッセージを貼れ
人の話に耳を傾けない者を相手にするバカはいない
568 :
デフォルトの名無しさん :2010/10/02(土) 16:01:59
664 buf[0]=*pbuf->m128i_u8; pbuf++; 669 buf[16]=*pbuf->m128i_u8; pbuf--; error grs.c: In function main grs.c:664: error: request for member 128i_u8 in something not a structure or union grs.c:669: error: request for member 128i_u8 in something not a structure or union
m128i_u8は定義されてないと言われとるんじゃないのか?
暗号君の相手をする人は暗号君だからな
572 :
デフォルトの名無しさん :2010/10/02(土) 16:18:27
VisualStudioのclではきちんと通ります。ヘッダーファイルの違いですかね。
m128i_u8でファイル内検索してみれば
574 :
デフォルトの名無しさん :2010/10/02(土) 16:30:14
CygwinとWINでは同じ名前でも構造が全然違う・・・ ヘッダー見たらわかった。
575 :
デフォルトの名無しさん :2010/10/02(土) 16:39:11
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); これはどういう意味ですか?
577 :
デフォルトの名無しさん :2010/10/02(土) 17:10:58
考え方としてはWINの方が好き。でも性能はGCCの方が上。
WINとGCCって分類おかしいだろ。
おまえWINコンパイラ知らないのかよ
VBのことか?
581 :
デフォルトの名無しさん :2010/10/02(土) 17:37:27
VisualStudioです
>>579 ボーランドという会社のとか Watcom とか、インテルとか、Windows をターゲットにしたCコンパイラにもいろいろあると思うのですが
583 :
デフォルトの名無しさん :2010/10/02(土) 21:09:51
584 :
デフォルトの名無しさん :2010/10/02(土) 21:14:33
auのSDKに付いてくる
main関数の引数でよく見かける表記 char *argv[] の意味するところは、 char型のデータを格納する配列変数argvが 格納されているメモリの先頭アドレス で合っているでしょうか?
586 :
デフォルトの名無しさん :2010/10/02(土) 23:10:04
char型へのポインタ(=文字列)の配列 並列へのポインタではない。
587 :
デフォルトの名無しさん :2010/10/02(土) 23:11:35
×並列 ○配列
588 :
デフォルトの名無しさん :2010/10/02(土) 23:13:06
VC2008EEです デスクトップのフォルダの中にプロジェクトがあって作ってたのですが フォルダの名前を変えたら、プロジェクトを開いてデバッグしようとすると、EXEのデバッグ情報が見つからないか、または一致しません、デバッグを続けますか? と出ます。はいにすると普通に表示はされるのですがどうしたらただフォルダの名前を変えただけのような状態にできるのでしょうか?
リビルドしてみては
590 :
デフォルトの名無しさん :2010/10/02(土) 23:18:23
もしかして文頭に#をつけるとコメントアウトになりますか?
文頭ではなく行頭な。 コメントというか、プリプロセサーが意味のない命令として削除するよ。
エラー?
ふっ、今の俺は無敵だぜ?C言語でお前らを攻撃することも可能だぜ?
>>592 ググってみたら#の後には特定の単語以外がくるとコメントアウトみたいになるんですね
ありがとうございました
596 :
デフォルトの名無しさん :2010/10/03(日) 08:09:57
またお前か
どこの馬の骨かわからん奴が作ったexeを実行するバカはここにはいないよ。 vipにならいるかも知れないけど。
599 :
デフォルトの名無しさん :2010/10/03(日) 09:10:13
そうですよね・・・ウイルスかもしれないし。 JavaScriptで書き直してWEBにでも公開しようかな。
スピード気にしてSSE使う一方でjavascriptかよ。w
601 :
デフォルトの名無しさん :2010/10/03(日) 09:34:23
どうしたら使ってもらえますかね?
ソースで公開
くぴっ
まずはアルゴリズムの優秀さをアピールすべきだな。優秀なアルゴリズムなら実装なんて後から付いてくる。
605 :
デフォルトの名無しさん :2010/10/03(日) 09:49:45
汚いけどいいの?
606 :
デフォルトの名無しさん :2010/10/03(日) 09:53:53
シンドローム復号問題という原理に基づいているのですが、実装で きちんと実現できているかどうかが心配です。ソースを見てもらって 何かアドバイスが受けられたらと思います。自分では優秀かどうか わかりません。
気持ち悪
く
ふっふっ ほっほっ
610 :
デフォルトの名無しさん :2010/10/03(日) 12:31:24
611 :
デフォルトの名無しさん :2010/10/03(日) 13:37:25
variably modified ‘変数名’ at file scope っていうコンパイルエラーなんですけど この意味教えてもらえませんか?
配列宣言に変数は使えない。
ファイルスコープでは配列宣言に変数は使えない。
配列の要素数宣言に定数ではなく変数を使ってない?
二次元配列の配列のサイズについて教えて main 関数で二次元配列array の大きさを求めると正しいのですが ArraySize という関数を作成して求めると間違っています、どうしたらイイデツカ #include <stdio.h> void ArraySize(char array[4][9]); int main(void) { int i; size_t nSize; char array[4][9] = {"TOKYO", "OOSAKA", "NAGOYA", "YOKOHAMA"}; for(i = 0; i<4; i++) printf("%s\n", &array[i]); nSize = sizeof(array) / sizeof(char); printf("二次元配列 nSize のさいずは %d です。\n ", nSize); ArraySize(array); return 0; } void ArraySize(char array[4][9]) { size_t nSize; nSize = sizeof(array) / sizeof(char); printf("二次元配列 nSize のさいずは %d です。(void ArraySize)\n ", nSize); }
>>615 引数に配列渡してもポインタになるから、sizeofじゃサイズはわからない。
ふっふっ ほっほっ
>>615 実際の定義は
void ArraySize(char array[][9])
だからな
配列の中身がコピーされてるわけじゃなくて
arrayの先頭アドレスと9Byte区切りであることしか関数には伝わってない
32bit環境ならポインタ型は4Byteだから4になるんじゃ?
そして64bitでコンパイルしたオレは8になった
>>615 どうしたらいいかっていうのに答えると
マクロでなんとかする
C++なら関数テンプレートで一応できる
あたりかな
いいえ、typedefを適用します。
ふっふっ
623 :
デフォルトの名無しさん :2010/10/03(日) 15:59:57
int i; int vc[5] = {10,20,30,40,50}; int *ptr = &vc[0]; と宣言したときエイリアスは *ptr=ptr[0] *(ptr+1)=ptr[1] ・ ・ ・ ってなるけど 右辺は*つけなくていいんですか? *ptr[0] みたいに。
つけなくておk
625 :
610 :2010/10/03(日) 16:07:49
C言語のスレなのにちっともレビューが付かない!
>>625 インデントがキモい
コメントアウトぐらい消せ
よく分からないが踏みたくないので放置
PCが物故割れた
629 :
610 :2010/10/03(日) 16:26:17
暗号としてはどうよ
gccでコンパイル出来ないのがあれだ 力技でコンパイルしてみたが、 中身までよく見ようとは思わないソースなんだよね、無駄が多くて
暗号としてどうよって、アルゴリズムのオリジナルなの?
doubleを単位でまとめてintで表す式ってどういう形になるんですかね? たとえば2.6を5に12.4を10とかで表す感じです
633 :
610 :2010/10/03(日) 16:42:10
コンパイルオプションはVisualStudioで cl /O2 /arch:SSE2 grs.c で通ります。アルゴリズムはオリジナルです。 まだ無駄だらけです。デバッグの表示もあるし。
しょせん厨二の考えた暗号なんて(ry
635 :
610 :2010/10/03(日) 16:47:14
636 :
デフォルトの名無しさん :2010/10/03(日) 16:51:48
GCC用のもあるけどCygwinのだからね。 gcc -O2 -ftree-vectorize -msse2 -o grs2 grs2.c うpしてないけど。
637 :
デフォルトの名無しさん :2010/10/03(日) 16:59:27
638 :
デフォルトの名無しさん :2010/10/03(日) 17:10:54
これは皆がもっと良くしようという目的を持つことを目的に公開されました。 2ch暗号と呼ぼう!(嘘)
password指定がないじゃん
640 :
Perl忍者 ◆M5ZWRnXOj6 :2010/10/03(日) 18:04:01
暗号とかわめいてるごみはしねば ハッカーじゃないやつがいきがるな
641 :
デフォルトの名無しさん :2010/10/03(日) 18:32:39
grsのパスワードは第3引数で指定します。アプリケーションの段階でなく アルゴリズム検証の段階です。使い方は grs infile outfile passwd です。grs2はパスワードに未対応です。
ここは質問や相談スレであって スレチなんだが
暗号化なんて乱数とxorでいいんじゃないか?
暗号君まだいたのか
645 :
デフォルトの名無しさん :2010/10/03(日) 19:05:37
暗号スレに行きます
646 :
デフォルトの名無しさん :2010/10/03(日) 20:23:27
C言語で実装したからレビューしてもらいたかっただけです。
それこそ暗号スレでやれ
C言語としてのコードレビューだな ごみ
649 :
デフォルトの名無しさん :2010/10/03(日) 20:42:59
cygwinインストールできなくてもう3週間たつけど アドバイスください・・・ PCにウイルスも入ったぽくてもう人生詰んだ
MinGWにしとけ。 Cygwin なんてもはや時代遅れだ。
651 :
デフォルトの名無しさん :2010/10/03(日) 20:46:20
フォーマットして再インストールすれば。 ここが感染源かも
シーゲンゴミ。
653 :
デフォルトの名無しさん :2010/10/03(日) 20:53:09
654 :
デフォルトの名無しさん :2010/10/03(日) 20:54:39
ダウンロードした一時ファイルが一瞬に消えるとか パッケージのインストールに失敗したとか シェルが起動しないとか
655 :
デフォルトの名無しさん :2010/10/03(日) 20:59:14
>>653 もう鬱になりそう、cygwinのダウンロードだけで徹夜×3週間。
homeディレクトリ開いたらユーザー\ディレクトリできてなかった。
もう死にたい。
Linuxにしとけ。インストールが厳しいならVMware+Ubuntuが楽なんじゃないか
657 :
デフォルトの名無しさん :2010/10/03(日) 21:00:31
>>654 パッケージって何ですか?
環境変数って何ですか?
シェルって何ですか?
レジストリって何ですか?
インスコって何ですか?
調べたら調べたらでまた調べないといけないんだろうな
Cygwinだとかウイルスだとかすれ違いだから消えろ
659 :
デフォルトの名無しさん :2010/10/03(日) 21:01:49
>>658 すんませんでした、もう何もかも上手くいかないんで大学止めます。
限界です。
661 :
デフォルトの名無しさん :2010/10/03(日) 21:03:36
>>660 んなことわかってる、今までありがとう、脳に障害があるんだと思うわ。
病院行ってくる。
流石にネタだろ、 ネタじゃないならコンパイラを手動インスコする所から始める入門書やっとくべき
663 :
デフォルトの名無しさん :2010/10/03(日) 21:07:51
>>662 ネタじゃない、発達障害なんだよ、ごめんな。
暗記だけは得意だからガリガリ勉強して大学受験は何とかクリアできて
国立現役だよ。
癇癪起こしてマウス3台破壊したし・・
cygwinダウンロード1時間で1%だってよ・・
you tubeの動画も全く見れなくなったし・・
悪い、こうやって自分語りするのも発達障害だと医者から言われた。 しばらくROMりますね。
665 :
デフォルトの名無しさん :2010/10/03(日) 21:11:38
ファイアーウォールソフト入れておくべきだったね
Cygwin使わせるとか鬼畜。 Cやるなら、今はWindowsにVisualStudio一択っしょ? 大学は金あるんだから、交渉してサクッと買ってもらえよ。
ちょっと見ない間に、暗号君が知的障害者にグレードアップしとる…
669 :
デフォルトの名無しさん :2010/10/03(日) 21:18:35
でもお前この話するとココキュウってなるぜ C言語として ごみ 暗号としては?
大学の教授は大抵何年か過去からタイムリープしてきてるからひどい環境とかコンパイラとか平気で指定してくるよ
>>668 暗号君って何ですか?
知識と趣向だけで繕って何とか生きていけるのが発達障害者です。
知的障害者になれれば誰かに面倒見てもらえるのに。
>>667 Unix環境を想定したプログラミングの練習何で別に処理系は細かい
事はいいそうです。
今cygwinが2%dwonloadです、2時間ですね。
暗号君は我が強すぎて正直キモい
Linuxなら初めから全部環境入ってるのに
自分を自慢し褒めてもらいたがってる、たいした男じゃないわ。
>>666 大学のPCはダブルブートしてて、プログラミングの授業はlinux環境でgccだよ
ごめんデュアルブートのことをダブルブートって言っちゃった
677 :
デフォルトの名無しさん :2010/10/03(日) 21:26:09
>>673 環境とかどうやら細かい事は知らんが、そういうレベルに達していない。
単純なプログラムの練習すらできない状態なんです。
>>672 慰めて
>>667 英語か・・
挫折しますた
やっぱcygwinで頑張ってみます。ダウンロードしなくても
プログラミングの練習ができる簡易ツールみたいなもんない
ですよねぇ?
結局のところイデオンとターンAってどっちが強いんだろう
ターンA
ボーランドのコンパイラと「C言語を始めよう」ってIDE使え
684 :
デフォルトの名無しさん :2010/10/03(日) 21:36:43
マニュアルがあるcygwinで頑張ってみます。4日ダウンロードしっぱなしだと やっぱPCによくないですか?
Linuxにしとけ。cygwinを使うと悪い方向に向かうと出ている
まえは雑誌の付録にCDから起動するlinuxとかあったけど、 最近はそういうのないのかね。
688 :
デフォルトの名無しさん :2010/10/03(日) 21:42:31
Linuxダウンロードして何を使ってソースの実行したらいいんですか? よくわかりません。
689 :
デフォルトの名無しさん :2010/10/03(日) 21:43:39
>>687 ありがとうございます、cygwinで頑張ってみようと思います。
そろそろスルーしていいですよ、他質問者さんどうぞ。
690 :
デフォルトの名無しさん :2010/10/03(日) 21:50:25
またきたらすいません>< では寝ます。
そのまま目覚まさなければいいのに
今試したけど俺はDefault設定のまま20分でインスコ完了したんだけど、 なんでそんなに遅いんだ?、ADSL1.5Mでもそんなに遅くならないだろ。
695 :
694 :2010/10/03(日) 23:12:50
分かりにくいので… Visual Studioで関数を使うときに引数って上半分の感じででるじゃないですか でもなぜかfloat zの部分が出ないんですよ… なぜですかね
見てるクラスが違う
697 :
694 :2010/10/03(日) 23:37:22
なんか知らないけど次は出た ??? ワケ分からん
しめやでも、てんじんだ。
>>697 VSのインテリセンスが壊れるなんて良くあること
どうしても更新されなかったら.ncbファイルを一度消せばいいよ
701 :
デフォルトの名無しさん :2010/10/04(月) 00:06:04
おはよう
>>692 all install にしたよ。
まだ0%だ
install from internet以外だと
installできないし、no packages foundってなるから。
何でかわからん。
cygwin以外じゃ絶対だめなんで^^
2時間睡眠とかありえんから
さすがにもう話題がC言語のスレじゃないんで・・・ 暗号君が消えてくれないなら 俺のほうが去ることにする。じゃぁな。
二度と返ってくるなよ
× 返る ○ 帰る
Cスレ的にはreturnは返るでいいんじゃね?w
二度と返ってこないのも嫌だな
×Never return. ○Never come back.
returnじゃなくてexitしたんだろ
yieldじゃね?
farawayじゃないかな
712 :
デフォルトの名無しさん :2010/10/04(月) 02:37:10
エブリアワーおはよう 寝て起きたら10%しかdownloadしてませんでした・・ gcc やa.exeのkbがでか過ぎます。 PCをリカバリーに出すんで、しばらくここには来ません ありがとうございました。
ウイルスは本当に怖いね、ファイル検出しただけじゃ分からんときがある
ナローバンドと化石PCじゃ、2chの回答者との話が噛み合わない
ふぉふぉ
716 :
デフォルトの名無しさん :2010/10/04(月) 16:59:08
#include <stdio.h> int main<void> { int suuti = 10; if (suuti) printf("%d\n",suuti); return 0; } このコードどこが違うの? 苦Cの開発環境のコンパイラでエラーになっちゃう。 どこも間違えてないはずなんだけど…。
志村ー括弧括弧!
眼科に行ったほうがいいな
苦Cってなんだかわからないけど、エラーメッセージに行番号は出てないの?
>>718 マジか。
>>719 どうやら三行目に;を忘れてるらしい。
でもmain関数の宣言に;なんて使わない気がするんだ…。
誤 int main<void> 正 int main(void) こうじゃね
>>721 ごめんなさい。僕が馬鹿でした。
思いっきり殴ってください。
1日寝て無いのが原因だな…。とにかくありがとう。
クソッ モニタ殴っちまった
たぶんエラーメッセージに;が無いってでたんだろうけど Cのエラー内容はあまりそのまんま信じない方がいい
ひょー
まあいいじゃん。 そうやって少しずつ進歩してけばいいよ。
こわれるから
うん
苦Cで勉強しようなんてのが躓きの第一歩だな。 あのサイトは、苦しんでやっとCをまともに使えるようになった人間が見に行って脱力する為にあるようなもんだ。
exe の 0x76f87f1a でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xc0000004 を読み込み中にアクセス違反が発生しました。 って事だから何か初期化し忘れた変数があるって思っていい?
>>730 ソースも晒さずにエスパーじゃあるまいしわかるかいっての
>>730 そのエラーはアクセスしちゃ駄目なとことにアクセスしたときによく起こる
配列はみ出したり、確保してないポインタ使ったり
ソースがあまりに多くてアップは出来ない量なんです
>>733 じゃ、せめてマップファイルだけでもアップしろ。
デバッカで動かせばどこで止まってるかくらいすぐ分かるだろうに
>>730 0xC0000005は STATUS_ACCESS_VIOLATION だ。
そして0xC0000004は STATUS_INFO_LENGTH_MISMATCH の可能性が高い。
Win32-APIとかの使い方を間違えたんジャマイカ?
戻り値や引数を確認汁。続いてそれらの値が間違ってないか確認汁。
エラーハンドリングが無いなら、それを書くだけで解決することもある(失敗箇所が分かる)。
ないファイルを読み込もうとしたか 書き込めないのに書き込もうとしたか とか?
追記で申し訳ない。もう一つ可能性。
WindowsのAPIは構造体の先頭にその構造体のサイズを代入して
引数が正しい構造体かチェックを行うようになっている。
hoge.cbSize=sizeof HOGE; とか、あるいは直値で入れる場合もある。
それを入れ忘れてるか、間違った値になってるんじゃないか?
そういう場合にNTSTATUSはSTATUS_INFO_LENGTH_MISMATCH(0xC0000004) になるような気がする。
ttp://accelart.jp/blog/NTSTATUSErrMsgJa.html 0xC00000XXはエラーコードだから、そこから意味を逆引きできる。
739 :
デフォルトの名無しさん :2010/10/05(火) 07:10:13
#include<stdio.h> void sum(int a, int b,int *c, int *d) { *c= a+b; *d=(a > b) ? a-b : b-a; } int main(void) { int na,nb; int wa=0,sa=0; puts("二つ"); printf("整数A");scanf("%d",&na); printf("整数B");scanf("%d",&nb); sum(na, nb, &na, &nb); printf("和は%d,差は%d",wa,sa); return 0; } これプログラミングの本に乗ってるソースなんだけど ボーランドで実行して 34 23 和0,差0とポインタが読み込まれてないんですが。 どういうことでしょう?? 本のソース移しただけなのに
sum(na, nb, &wa, &sa);
南部はさ・・・寒
う〜寒
743 :
デフォルトの名無しさん :2010/10/05(火) 08:44:59
#define で文字に数字を指定して #define HOGE 1 とする時ってどの範囲で有効ですか?
>>743 そのソース内全部
その#defineの後に#includeがあればそこにも展開される
あとは#undefineしてたら話は別
745 :
デフォルトの名無しさん :2010/10/05(火) 08:57:39
>>744 ありがとうございました!
下で#includeしてたらそこでも有効になるとは知りませんでした
そのソースで#include NULl 0してないのに
たまにNULLがどこでも0になってる時があるのですがそういうことだったのですね!ありがとうございました!
展開される時点で参照されるから、それまでに定義されていればよい。 #define AA BB #define BB 1 int a = AA; // 正しく1になる。
ちなみにこのdefine文は入れ替えても結果はおなじになる
こうですか?判りません。 #define BB AA #define 1 BB
#define BB1 #define AA BB ってことじゃないの?
同意
ドヤ顔でつまらない事を言いだした
>>747 が元凶。
if(!i%3)とif(i%3==0)の解釈の違いがよくわかりません・・・
754 :
753 :2010/10/05(火) 16:24:12
VC++2008です。よろしくお願いします。
単項演算子の優先順位のが高いのでiが先に評価されるようです。スレ汚し失礼しました。
756 :
デフォルトの名無しさん :2010/10/05(火) 22:51:12
>>756 最低落札価格ありで1円スタートって、なんかバカにされてつみたいだ。
またまたご冗談を
コンパイラがハードなわけねーだろワロタwww
ワシが学生だった頃はパンチカードを電算室に持って行って云々
long get_duration() { long time = ctx->duration * 1000; return time; } と long get_duration() { return (long) ctx->duration * 1000; } では戻り値が違うのですが、なぜですか?
>>764 上は
(long)(ctx->duration * 1000)
下は
(long)(ctx->duration) * (1000)
どうせctx->durationが浮動少数なんだろう?
前者は計算自体はintのまま行ってるから
ctx->durationがどんな型なのか分からないと
a
このスレすぐレス返って来るねw
く〜ぴ〜
レベルが低いと言ったり高度すぎると言ったり。 わがままな回答者だなw
>>772 同じ質問に対して言ってるんじゃないだろ。
お前は質問によってレベル変わってることもわからんのか。
画像処理のプログラムです pixel **img; 〜〜〜〜 img[y][x].r = 〜 img[y][x].g = 〜 img[y][x].b = 〜 このような変数が用意されていて、 位置(x,y)のピクセルの ある一色について処理する関数 を作りたいのですが 色をどうやって引数にするのかがわかりません どなたか教えてください
まず画像をどういう方法で取り込むつもりなんだ
>>775 netpbmを使っています
取り込みはちゃんと出来ています
画像フォーマットを調べるかライブラリにそういう処理があるか調べたら
>>777 各色を取り出す関数というものがあるのですが、
その関数も色ごと別々に作られているので無意味です
仕方ないので0→赤、1→緑、2→青のように数字をあてて
その数字を引数にして
関数内で場合分けすることにします
(結局同じ処理を3回書かなければならなくなりますが。。。)
これより良い方法があれば是非教えてください
>>774 何を聞きたいのかいまいちわからんが
void Func ( pixel* p ){
p->r = 0 ;
p->g = 0 ;
p->b = 0 ;
} ;
Func( &img[y][x] ) ;
か
void Func ( pixel** p, int x, int y ){
p[y][x].r = 10 ;
p[y][x].g = 10 ;
p[y][x].b = 10 ;
} ;
Func(img, x, y);
とかそういうことじゃなくて?
うまく質問ができない奴は そもそも何が問題なのか理解できていない。
>>779-780 説明が下手ですみません
色ごとのフィルタ処理をしたいのです
文法無視で簡単に書くとこんな感じです
float func(int x, int y, int clr){
return ( img[y][x+1].clr - img[y][x-1].clr );
}
red = func(i,j,r);
grn = func(i,j,g);
blu = func(i,j,b);
>>774 >色をどうやって引数にするのかがわかりません
func(pixel clr) でいい。
func(unsigned char red, unsigned char green, unsigned char blue) でも別にいいけど。
>pixel **img;
>〜〜〜〜
>img[y][x].r = 〜
って、コンパイル通らないだろ。
pixel img[HEIGHT][WIDTH];
img[y][x].r = 〜
が配列の使い方。
WIDTHの宣言があるから、img[y][x]というアクセスを*(img + y * WIDTH + x)だと解釈できる。
>>782 配列はちゃんとアロケートしているので問題ありません
func(pixel clr)ではおかしくないですか?
>>781 あぁそういうことか。
offsetof()を使えば統一して書けるけど、俺は>778の方がいいと思う。
>>784 コンパイラがWIDTHを知らないのにどうやってimg[y][x]でアクセスできるの?
>>784 offsetof知りませんでした
これ使えば出来そうですね!
ありがとうございました
HEIGHT,WIDTHは
画像を読み込む際にライブラリの関数によって取得済みです
説明が足りずすみません
int ** arr = (int **)malloc(HEIGHT * sizeof(int *)); for (int y = 0; y < HEIGHT; ++y) { arr[y] = (int *)malloc(WIDTH * sizeof(int)); } これでarr[y][x]でアクセスできるのか。(arr[y])[x]なわけか。すんませんでした。
いい加減、韓国からノーベル賞受賞者出せよ
やっぱいまのなしで
ノーベル賞に値する研究成果があればいずれ認められるよ
そんなもの無いよな
ノーベル化学賞を受賞したからって何か変わるの? 一気に億万長者になるの? 一気に人類の化学歴史が一変するの? 何か発展するの? 国力が上がるの? 国が無敵になるの? 国民が豊かにあんるの? 国民ゼンタイが頭がいいことの証明になるの? ならないのでは?何でそんなに必死になって喜んでいるのか分からない。 ノーベル賞のメインは平和賞。すべての学問は平和賞に通じている。 世界平和に通じている。 だからノーベル平和賞以外はさほど意味は無い。 そしてノーベル平和賞では韓国日本はイーブンで対等だ。
>一気に億万長者になるの? なるよ
信頼できる筋からの情報によれば、 今年、韓国人は、ノーベル物理学賞一人、医学生理学賞二人、来年のフィールズ賞一人、ガウス賞一人、受賞する模様
韓国人は事実を自分の都合のいいほうに捻じ曲げるから、学問には向かない
数字の処理のプログラムで、 int型x,y,zがあったとしたら、xとyがscanfにより数字を格納、zはxとyの差をprintfにより出力するためのものとします。 この時、 z = x - y とすると、x=100、y=150の時にzは-50となります。 zを-なしで50と出力したいのですが、どうすればよいでしょうか?
2つを足してから小さいほうの2倍を引けばいい。
if(z < 0) z = -z; とか if(x > y) z = x - y; else z = y - x; とか
>>795 if (x > y)
z = x - y;
else
z = y - x;
はどうですか?
どちらが大きいのか比べる部分つくりゃよくね?
z = abs(x - y);
printf("%d\n", z > 0 ? z : z * -1);
802 :
801 :2010/10/07(木) 00:40:31
こっちか z = x > y ? x - y : y - x;
803 :
795 :2010/10/07(木) 00:41:58
>>796-802 どうも2つを比較して・・・という考えにいって、
まったくでてきませんでした。
どうもありがとうございました。
ばかばっか
1の補数表現の環境だったら符号ビットだけ固定してやればいい。
>>804 のようなタイプの馬鹿が一番終わってることは言うまでもなかった
電子の妖精たんに何てこというんだよ
char *aaa = "10000"; char bbb[2]; aaaに格納されている10000を、bbb[0] == 0x10、bbb[1] == 0x27となるように代入したいのですが、 何かよい方法はありますか?
unsigned int i; i=atoi("10000"); bbb[1]=i/256; bbb[0]=i;
char *aaa = "1000000"; union u{ int a ; unsigned char bbb[4] ; } ; u t ; t.a = atoi(aaa) ; printf ( "%x, %02x %02x %02x %02x\n", t.a, t.bbb[0], t.bbb[1], t.bbb[2], t.bbb[3] ) ;
int a=atoi("10000"); memcpy ( bbb, &a, 2 ) ;
エンディアンに依存しないのは>809だけか。
「エンディアン」などという言葉は無い。
言葉はあるだろw
なんだよインディアンって
ウソつかない存在だこのボケ!
ケツもふかないぞ
ビットの並び順のことを表す単語ではないな。エンディアン。 誤解してるやつ多いんだが。
ビットオーダー バイトオーダー これだけで現場では大抵通じるね。
bbb[0] = i & 0x00FF; bbb[1] = (i & 0xFF00) >> 8; と書いて意図どおりに動作しない環境ってあるの?
何を意図してるかによる。
ふぅ
ビットオーダーって今回の話に関係あんの?
そもそも愛が符号付きだと動作は処理系によって異なる。 bbb[1] = ((unsigned int)i & 0xFF00U) >> 8U;
いまどきintが16ビットの環境なんて考えなくていいんじゃ
そもintが16bitなら0xFF00の型はunsigned intなわけで
つかdefinで s8 u8 s16 u16 s32 u32 とか作っとけばよくね? でintは指定しない。
え?なんだって?
archに自動であわせるなら、intの方が
833 :
デフォルトの名無しさん :2010/10/08(金) 01:33:23
速読でC言語マスターできますか?
反復演習の方が
習うより慣れろ
速読は理学書には効果ない
linuxで大量の静止画をpng出力するアプリを作っていますが、 このpngの出力を動画にしたいと思っています。 linuxで動画を作成する場合、どのライブラリを使えばいいでしょうか? 動画はとりあえず無圧縮でOKです。 Windowsでの作成方法でも良いです。ぜひ教えてください。 よろしくお願いします。
>>838 無圧縮でいいなら
AVIのヘッダー作って画像の色データを連結して保存していけばいいだけじゃ?
ヘッダーの作成がちょいメンドイけど音声無しならそんなでもないはず
ffmpeg -f image2 で読み込めるかも
つimagemagick > convert *.png hoge.mpg でいけたと思う。 バージョンによってはなんかおかしくなるけど。
ゲーム作るのに必要な知識ってどのくらい? 一応アルゴリズム以外は勉強したんだけど、復習しときたい。
>>842 ゲームによる
ブロック崩しとかなら基本やったらもうできるだろ
ゲーム作るならC++、DirectX、Lua、線形代数あたりは必須かな。あとは知識が足りなくなったら付け足す感じで
>>842 君が作ろうとしているであろうゲームは
君が一生努力しても無理
846 :
デフォルトの名無しさん :2010/10/08(金) 11:29:30
引数指定って何のことですか? 引数を指定して実行とか良く意味がわからない。 プログラム上の実、仮引数はわかるけど。
847 :
デフォルトの名無しさん :2010/10/08(金) 11:35:50
ウィンドウズで定義されているm128i共用体は、Linuxではどのように 定義されているのですか?知ってる人がいたら教えてください。
>>846 コマンドライン引数を指定してプログラムを実行するということじゃないかたぶん
main関数のargvで受け取る引数
>>846 main関数の引数
コマンドラインから引数を与えて実行する
例えば
hoge.exe in.txt out.txt
int main(int argc, char *argv[]){
FILE *inFp, *outFp;
inFp = fopen ( argv[1], "r" ) ;
outFp = fopen ( argv[2], "w" ) ;
みたいな
850 :
デフォルトの名無しさん :2010/10/08(金) 11:52:26
コマンドラインの意味が良くわからん・・ コマンドラインの引数?何のことだか・・
>>850 それくらいググれよ
Windowsならコマンドプロンプト、Linux系ならshellシェルからファイル名を指定して実行
>>847 typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
853 :
デフォルトの名無しさん :2010/10/08(金) 12:13:14
しねばいいのに
>>853 やめろ
>>851 コマンドライン上で入力して実行したらいいのに
何の意味があるの?引数の指定って。
857 :
デフォルトの名無しさん :2010/10/08(金) 12:30:04
>>849 argv[]←ここに引数を入れるんですね?
>>858 偽者です
>>857 それは配列だって、アホ。
何のために引数指定して実行するんですか?
トリップってなんですか?
>>861 あい
Windowsの場合コマンドプロントですよねぇ。
コマンドプロントから入力,実行できないんですが何が原因でしょう?
コンパイラは5.5です
多分ディレクトリの移動とかしてないんだろうなぁ
866 :
1 ◆tsGpSwX8mo :2010/10/08(金) 12:46:45
>>865 どういうことですか?
端折って説明してください
>>859 例えばビットマップをjpegに変換するbmp2jpg.exeがあったとしよう
変換したいビットマップファイル名をプログラム内に記述しちゃうと
変換したいファイルを変えるたびにコンパイルしなおさないとだめだよね?
そういうときに変換したいファイル名を引数として渡す
bmp2jpg.exe hoge.bmp のように
bmp2jpg.exeのmain関数はこの引数を受け取って処理をするだけなので再コンパイルの必要がない
こういった使い方のほかに起動オプションを指定、例えば
game.exe w だったらwindowモードで起動
game.exe f だったらフルスクリーンモードで起動みたいな
要は外部から実行動作を切り替えたい時に使う
一々コマンドラインから入力するのが面倒ならバッチファイルに記述すれば良いし、連続実行もできる
バッチファイルとはなんですか?とか聞くなよ
>>866 基本的にコマンドプロンプトが見てるのはひとつのフォルダだけなのでそこになければファイル名入れても起動できない
起動した直後は、お前の作ったプログラムのあるフォルダにまず移動させないといけない
>>866 コマンドラインから
cd "exeのあるフォルダへのフルパス"
もしくは
exeのあるフォルダにバッチファイル作ってダブルクリックしろ
____ ) Cドライブの全フォルダを環境変数に突っ込んだらどうなるの?っと /⌒ ⌒\ ) /( ●) (●) \ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶 / ::::::⌒(__人__)⌒::::: \ | |r┬-| | \ `ー'´ / ノ \ /´ ヽ カ | l l||l 从人 l||l l||l 从人 l||l カ タ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐ ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄ _____ /::::::─三三─\ リアルな話すると超便利!! /:::::::: ( ⌒)三(⌒)\ わざわざフォルダを移動しなくていい。 |::::::::::::::::::::(__人__):::: | _____ どこからでもexeを走らせることができる。 \::::::::: |r┬-| ,/ .| | 便利さが信じらんないくらい超ヤバイ ノ:::::::: `ー'´ \ | | パソコンがコンビニってくらい便利
>>850 OK、オ○コラインと読み替えればいい。
あとはわかるな?w
ふふふ
あらあら
ファイルを変えるの意味が全く分からんw あと.exeって何だ?.cじゃないの?
狂人の真似とて大路を走らば、即ち狂人なり。
クマー
ファイル名をプログラム内に記述w?どういうこと? ネタとか無しに、プロフェッショナルな事しすぎだろ。 何が起こってるんだ?ガチでネタじゃない。 今四則計算とかのプログラム作ってるけど・・
まちゃみに比べたらどうってことないうざさだぜ
とりあえず疑問を自分でまとめてから書き込もうな。 何が分からないのかが我々に分からないんで。
でもパソコンでインターネットくらいしかしない人に
>>867 言ってもちんぷんかんぷんだろ。
884 :
1 ◆Mjk4PcAe16 :2010/10/08(金) 17:41:16
886 :
デフォルトの名無しさん :2010/10/08(金) 18:12:48
ここ入門編だろww 入門ってのは実践の前の応用の前の基礎の前だぞ? どんだけレベル高いスレなんだよw
質問が門に入る前のレベルなので半年ほど門に入る努力をしてからお越しください まずは日本語の読解能力あたりに力をいれてみてはどうでしょうか?
>>847 852に書いてあるように共用体で定義されていない。
>>886 これまでのこのスレの流れ
Q「家から外出するにはどうすればいいですか?」
A「玄関でドアを開けて外に出て、ドアを閉め鍵をかけてください」
Q「ドアって何ですか?」
A「スレ立てるまでもない質問すれで聞いてください」
Q「鍵って何ですか?」
A「・・・」
プログラミングをやるからには誰しもその知識を偉そうに語りたいものです スレタイからも分かるようにこのスレは、俺に聞け(キリッという衒学の入門編なのです 背伸びも知ったかも出来ないレベルだと話にならないということです
知ってる事を偉そうに語る者には碌な甘えん坊がつかない
人間について哲学を語りたいならそのためのスレがあるだろ
俺が言ってる意味わかるよな
>>892
>>891 苦労せず育ったんだろうな
俺はこーいうの苦手だから、分かった時は頭の中からドーピングが
出て、誰かに教えてあげたい(出来るなら世界で一番分かりやすい
日本語で!!って・・)
それが本当のプログラミング言語なのではないだろうか?
ITドカタは低脳です 覚えていてください あなた低脳ですか? そうならプログラマしかなれません
日本語も重要だが、英語をまともに理解できないんでは話にならない。
コンパイラのエラーも、まともに読もうとしないのが、最近の流行りでしょ。
で?お前らなんでここにいるの?
ひまだから
哲学的な質問ですな
いや大路を走るくらい別に構わないだろ。
まともに理解できるというのは どういうことなのかね??
単語は調べれば分かるが、文法の基本くらいは理解しないと 変な訳し方をして理解できなくなっては困る。
このスレや宿題スレなんかを見る限り、英語が理解できてるのは極めて少数だと思うけど
デーヴァナーガリーと比べればまだ理解できてる方だろ 繁体>簡体>ラテン>キリール>ギリシャ>アラビア>デーヴァナーガリー
出鼻刈り
繁体>簡体≒ラテン>キリール≒ギリシャ>>>(越えられない壁)>>>アラビア>>>(越えられない壁)>>>デーヴァナーガリー
言語の話をしているのか文字の話をしているのか、どっち途鼬害だ。
Cシェルって何ですか?調べても曖昧でわかりくいです C言語とは別のプログラミング言語なのでしょうか?
>>915 先ずはシェルスクリプトで調べてください。
そうすれば解ると思いますが、スレ違いです。
>>915 cshlっていうのはシェルのこと
シェルって言うのはwindowsだとcmd.exeとかに当たる
cshの他にbash、zsh、tcshとかがある
windowsではバッチファイルと言うが、unix業界ではバッチの事をシェルスクリプトという
cshのシェルスクリプトの文法は、C言語に似ているってだけの話
Cシェルはどこで書いて、どうやってコンパイルすればいいのですか?
その程度もわからない人間に説明したって理解できないでしょ
920 :
デフォルトの名無しさん :2010/10/09(土) 13:08:41
bash これって バッチって読むの?バッシュって読むの?
>>920 バッシュでいいと思う。バッチはbatchだし
bashはBourne Again SHellの略
なんでこのスレの住人てスルーできないの? 病気なの?
スルーしたらツマランやろ
罵りから入るのが出来るプログラマーの証
928 :
デフォルトの名無しさん :2010/10/09(土) 14:54:50
>>923 英語読めってのか、このスレはハードル高すぎ
突っ込むとこそこなのかなあ?w
930 :
デフォルトの名無しさん :2010/10/09(土) 15:14:54
clock()関数を使ってプログラムの実行時間を計測しようと思うのですが、 ベンチマークとしてこの関数は使えますか?またプログラムのどの位置に 書けばいいのでしょうか。
>>930 どの位置にって、計測したい所の最初と最後の箇所なんじゃないの?
932 :
デフォルトの名無しさん :2010/10/09(土) 15:19:28
最初と最後の差を計測するんですか? トータルの実行時間を値として返すのではないのですか?
ストップウォッチで測った方が良いよ
>>932 処理に必要なデータを読み込んだり準備する時間は計測に入れたくないこともあるでしょう
全体を測りたい人ばかりじゃないのです
ふぅ
>>932 unix系なら、コマンドのtimeで計れるけど。
938 :
デフォルトの名無しさん :2010/10/09(土) 15:56:11
シェルでtime ./a.exe を実行したときGCCでコンパイルしたほうが時間 は速いのに、clock()で計測するとclの方が早いのはなぜですか。 どちらを正しい実行時間とするのがいいのでしょう。
どっちも
処理に使ったCPU時間と 実際にかかった処理の時間は違うから
> ただし、秒以下の単位を取得するには clock関数を用い、長時間の計測を行う場合には difftime関数を用いてください。これは、clock関数がプロセッサ時間を返却するため返却値の上限が低いためです。
>>917 Windows のシェルは explorer だろぼけ。
943 :
917 :2010/10/09(土) 17:40:36
>>942 そりゃーそうだけど
>Windowsのシェルといえばコマンド・プロンプト(cmd.exe)であるが、
>その機能はUNIXなどのシェルと比較するとまったく貧弱なものである。
@itより
それは、GUIに限った話であって
power shellとかはどう説明する?
ふっほっ
Explorerはファイルマネージャとしての側面が強い。 ループも制御できないシェルなんてcmd.exe以上の役立たずだ。
946 :
デフォルトの名無しさん :2010/10/09(土) 19:10:50
Cシェル(cygwin bash shell) でプログラミング書いたら、includeとかいらないんですか? スクリプトだから簡単でいんですよね?
はいはい、この手の釣り質問は以後スルーでよろ。
スクリプト言語とC言語は違うと思ったほうが
949 :
デフォルトの名無しさん :2010/10/09(土) 19:15:41
CシェルとC言語は仕様が似てるでしょ?
?
951 :
デフォルトの名無しさん :2010/10/09(土) 19:33:35
CシェルってC言語の簡略化でしょ?
タートルタートル〜
> 今日では C shell はほとんど使われておらず、tcsh、Korn Shell(ksh)、Bourne Again Shell(bash)などに取って代わられた。
cygwin bash shell の頭文字とってC shellかと思ってたww
とりあえずtcshはC shell系だよ これでスクリプトまで書いてる人は滅多にいない気もするけど
ひっほっ
いや、tcshだと一部bsh系の表記も使えるからtcshで書くという人もいなくはない。 でも、その辺は使い捨てにするのが普通だからどうでもいい。 つーか、スレ違いだってばさ。
cshで書くのは、スレ違いと言いながら粘着する
>>957 のような低能だけ。
この程度で粘着とか。
まだ時々Cシェルスクリプト書いている人は見かける。 BSD系の人に多い。
961 :
デフォルトの名無しさん :2010/10/10(日) 00:36:25
どーでもいい
つまり、C言語は駄目ということだな
なんで、そんな結論が出る?w Cシェルがダメだって結論は出ても、 C言語がダメだって結論には絶対ならんだろw
じゃあB言語を作るしか
965 :
デフォルトの名無しさん :2010/10/10(日) 01:48:00
SEX言語でいいよ。
あるソフトをコンパイルしたらエラーが出て、 該当箇所にこんなコードがあるんですが FILE *fin = {stdin}, *fout = {stdout}; こういう書き方ってありなんでしょうか?
ねーよ。
FILE *fin[] = {stdin}, *fout[] = {stdout};
とりあえず、ソースのfin/foutをすべて手動でstdin/stdoutに置き換えて解決しました
>>968 同じエラーが出ます
error: 初期化子の要素が定数ではありません
stdin,stdout等はwhich are expressions of type pointer to FILEって書いてるから
FILE*fin = stdin,*fout=stdout;
これで動いて欲しいけど、これもエラー
Cは難しい
エラーの内容からすると訂正はこうじゃないのか? FILE*fin, *fout; fin = stdin; fout=stdout; codepadがC99対応なんじゃないかね 試してないけど
こうじゃないのか? -> こういう感じじゃないのか
FILE * fin = stdin; FILE * fout = stdout;
VC++は #define stdin (&__iob_func()[0]) だからauto変数以外の初期化でエラーになる。
966の中括弧の役割が分からんのだが
ほふぅ
きゅっきゅっ
>>974 出先なんで試していないが俺もコンパイル通ると思うぞ。
出来ないって言っている奴は間違えてC++としてコンパイルしているのではないだろうか?
かぽぅ〜
普通、警告はエラーにするからコンパイルは通らない。
ひょひょっ
>>976 要素が増えたときのためのフェイルセーフでしょ。
個人的にはくだらんコーディングルールだなーと思うけど。
vcvars32.bat'の設定教えて
次スレ立てます
>>985 インストール時に自動で設定されるだろ。
>>985 プログラムの設定関係はそのプログラムのスレでどうぞ。
1000なら背が伸びる
1000なら彼女が出来る
1000なら宝くじが当たる
1000なら髪が生える
1000なら虫歯が治る
995なら明日も晴れ
996なら虫唾が走る。
997なら彼女ができる
998なら寝る
乗りなさい
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。