今小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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。