スレを勃てるまでもないC/C++の質問はここで 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/17(水) 15:41:48過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0716デフォルトの名無しさん
2008/12/19(金) 15:59:21時代によって違うから。
0717デフォルトの名無しさん
2008/12/19(金) 16:15:53|||
<#`Д´>=3
0718デフォルトの名無しさん
2008/12/19(金) 16:28:41なんで頭に●ンコが生えてんの?
0719デフォルトの名無しさん
2008/12/19(金) 16:31:14>残念、小学生レベル。
>自分基準で〜レベルとか、ランクをつけなくて良いから。
>残念、小学生レベル。
>自分基準で〜レベルとか、ランクをつけなくて良いから。
0720デフォルトの名無しさん
2008/12/19(金) 16:49:48いや、本当にそれは小学生レベルだろ?割り算、余りを求める算数を
あんたは中学で習ったのかい?w
0721デフォルトの名無しさん
2008/12/19(金) 16:53:39近代の義務教育でな。
0722デフォルトの名無しさん
2008/12/19(金) 16:57:54int main(void)
{
int no;
printf("数字を入力してください:");
scanf( "%d", &no); /*数字を読み込む*/
printf("あなたは%dと入力しましたね\n", no);
return 0;
}
ビルドエラーが発生しました。続行して、最後に成功したビルドを表示しますか?
教えて!偉い人
0723デフォルトの名無しさん
2008/12/19(金) 17:05:46/*数字を読み込む*/
^^^^^の全角空白かな
0724デフォルトの名無しさん
2008/12/19(金) 17:09:330725デフォルトの名無しさん
2008/12/21(日) 08:35:26vector<obj>::iteraot p, q;
p = playerbullet.begin()
while ( p != playerbullet.end() ) {
q = enemy.begin();
while( q != enemy.end() ) {
if( isHit(p,q) )
// 当たってたときの処理
}
}
のようにやってるんだけど
遅くて使い物にならない
何か高速化の方法ってありますか?
0726デフォルトの名無しさん
2008/12/21(日) 10:24:52敵を4分木に入れて、弾の直線と当たり判定を取るってのは?
弾をレイと捉えてレイトレースみたいなイメージ
0727デフォルトの名無しさん
2008/12/21(日) 11:21:03画面を数分割して敵弾の位置を大まかに分類しておいて、
明らかに無関係な領域にある敵弾は当たり判定自体をスキップする。
複雑な当たり判定を要する弾の場合は、
まずは判定の楽な円-円の判定で大まかに判定し、
明らかに離れているものは真面目に当たり判定を行わずスキップ。
0728デフォルトの名無しさん
2008/12/21(日) 12:28:110729デフォルトの名無しさん
2008/12/21(日) 12:41:23どう処理すればいい?
0730デフォルトの名無しさん
2008/12/21(日) 12:42:510731デフォルトの名無しさん
2008/12/21(日) 12:46:120732デフォルトの名無しさん
2008/12/21(日) 12:46:370733デフォルトの名無しさん
2008/12/21(日) 12:50:34つうか、例えば横512ドットだとして
左は、0 <= x < 256
右は、256 <= x < 512
とすれば、元から境目に存在はしない
0734デフォルトの名無しさん
2008/12/21(日) 12:56:530735デフォルトの名無しさん
2008/12/21(日) 13:21:21////////////////////////////////////////////////////////////////////////////////////////////////
// 指定された2つの RECT構造体が、重なっているか判定する
// 重なっていると true
// かさなっていないと false を返す。
bool RectLap( const RECT *a, const RECT *b )
{
// 改良失敗
// if( (a->top < b->bottom) && (a->bottom < b->top) && (a->left<b->right) && (a->right>b->left) )
// {
// return true;
// }
if( a->top < b->bottom )
if( a->bottom > b->top )
if( a->left < b->right )
if( a->right > b->left )
return true;
return false;
}
となります
改良の余地があればご指摘お願いします
0736デフォルトの名無しさん
2008/12/21(日) 13:41:57それで重いってことは、よほど沢山の弾があるのか?
0737デフォルトの名無しさん
2008/12/21(日) 13:53:01別スレッドで処理しているのですが、
CPUが割り当てられなくて処理落ちしてるとかも
考えられますか?
0738デフォルトの名無しさん
2008/12/21(日) 13:57:12別スレッドにするメリットってあんの?
0739デフォルトの名無しさん
2008/12/21(日) 14:00:43重たいわけもないでして
昔作ったやつは100発でもいけたので
不思議なのです
変えたといえばコンパイラだけですが
VC++6.0 -> VC++ 2008 Express にしただけです
0740デフォルトの名無しさん
2008/12/21(日) 14:02:09スレッドを使った理由は技術的好奇心だけです
元の1スレッドに戻してみます
0741デフォルトの名無しさん
2008/12/21(日) 14:08:59リリースモードでコンパイルしたら実用レベルになりました
スレ汚しすいません
0742デフォルトの名無しさん
2008/12/21(日) 16:01:12VC++ 2008 ExpressをPCに導入したのですが、
計算をさせて、結果を表示するプログラムを作って実行させたら
結果が出力される前にDOS窓が閉じてしまいます。
どうしてでしょうか?
0743デフォルトの名無しさん
2008/12/21(日) 16:05:28デバッグしないでいいならCtrl-F5(デバッグしないで実行)で。
それ以外にもとめる方法はいくつかあるが。
0744デフォルトの名無しさん
2008/12/21(日) 16:06:39あきらめろ
0745デフォルトの名無しさん
2008/12/21(日) 16:14:07ご親切にありがとうございました!
出力結果を無事に見ることができましたmm
0746デフォルトの名無しさん
2008/12/21(日) 16:22:200747デフォルトの名無しさん
2008/12/21(日) 16:49:43こういう場合は
1、グローバル変数を使う
2、ポインタで参照渡し
3、1つの関数を関数をいくつかに分ける
4、関数内で返したい値を1つの値に纏めた後、呼び出し先でまとめられた値を復元する
どれがスマート?
0748デフォルトの名無しさん
2008/12/21(日) 17:19:362 → どうしても同時に2つ返す必要があるのであれば、普通はそうする
3 → 同時に2つ値を返す必然性がないのであれば、そうする
4 → よほど制限された状況でなければあり得ない解決法
5、構造体にして返す。コピーのコストに見合えばアリ
0749デフォルトの名無しさん
2008/12/21(日) 18:08:53構造体に値を入れて、その入れた内容をポインタにキャストしたのですが
出来ませんでした(何も渡すことが出来なかった)
char *test;
test = (char *)&kouzoutai;
上記のようにしても駄目でした。
構造体をポインタにキャストする事は出来るのでしょうか?
0750デフォルトの名無しさん
2008/12/21(日) 18:13:110751デフォルトの名無しさん
2008/12/21(日) 19:14:24構造体ないに文字列持ってたんだろうな、それを直接(char * )でキャストしようとしたんだろ?
0752デフォルトの名無しさん
2008/12/21(日) 20:05:47マクロって何かありますか?
それが定義されていればセキュアな関数を使うようにしたいのです。
0753デフォルトの名無しさん
2008/12/21(日) 20:05:57kouzoutai の型が分からない限り答えようがない
0754デフォルトの名無しさん
2008/12/21(日) 20:30:29処理系名のマクロじゃないかな?
0755デフォルトの名無しさん
2008/12/21(日) 21:17:43一般的な方法はまだない。Open WatcomとVisual C++を個別にマクロで検出するしかない。
0756デフォルトの名無しさん
2008/12/21(日) 21:55:040757デフォルトの名無しさん
2008/12/21(日) 22:23:21_MSC_VER >= 1400
で判別してるものがあったのですが、これで大丈夫ですかね
0758デフォルトの名無しさん
2008/12/21(日) 23:29:530759デフォルトの名無しさん
2008/12/21(日) 23:32:190760デフォルトの名無しさん
2008/12/22(月) 15:54:01ご存知の方いないでしょうか?
メモリマップトファイル上にツリーを作って、複数のプロセスから参照したいと思っています。
0761デフォルトの名無しさん
2008/12/22(月) 16:23:15意味がわからん
0762デフォルトの名無しさん
2008/12/22(月) 16:29:33バイナリツリーが欲しい」
以外の解釈が可能か?
いや俺は見た事ないし、書くとしたら大変そうだが。
0763デフォルトの名無しさん
2008/12/22(月) 16:34:49いいだけじゃないの?
各データは固定長だろうから、それこそ配列にして
使用済みかどうかのフラグを持つだけでもいいし
0764デフォルトの名無しさん
2008/12/22(月) 16:40:25理解しているのはC言語の基礎だけです
DOS窓で動く、ジャンケンゲーム、数当て(BIGorSMALL)、石取りゲーム
くらいは作れるようになりました
この後一体どういう学習をすれば、Windows上で動く簡単なツールなんかを作れるようになりますか?
「GUI(?)をつくりたい」って言えばいいんですかね?
環境はWinXPhome/VC++2008
Windowsフォームアプリケーション?みたいなのもやってみたんですがさっぱりです
とりあえず、ウインドウを表示して、次に画像なんかを表示して〜
みたいなものはどうやってやればいいですか?
分かりにくかったらすいません宜しくお願いします
0765デフォルトの名無しさん
2008/12/22(月) 17:03:09C言語でWindowsAPIを使えばいい
Win32API,ウィンドウメッセージなんかでぐぐるといいが、
長いし(書くときはコピペするかウィザードで生成すればいいが)、少しとっつきにくいかもしれない
VCを使っているのなら、新規プロジェクト作成のウィザードから
Windowsアプリケーションを使うのもいい
どういうものを作りたいかによって選ぶべきと思う
0766デフォルトの名無しさん
2008/12/22(月) 17:05:05あなたの気のおもむくままに
0767デフォルトの名無しさん
2008/12/22(月) 17:05:59分かるには分かるが
面倒くせぇ
0768デフォルトの名無しさん
2008/12/22(月) 17:06:45回答ありがとうございます
Win32API?と、VCの機能を調べてみます
0769デフォルトの名無しさん
2008/12/22(月) 20:31:590770デフォルトの名無しさん
2008/12/22(月) 21:44:39CとC++は同じものだと考えてとりあえずは問題ない
というのも、C++はbetter Cという考えがあるから
「C++ではない純粋なC」でないといけないというのは
ちょっと特殊
0771デフォルトの名無しさん
2008/12/22(月) 21:47:21ファイルの拡張子を .c にすれば C になるはず
0772デフォルトの名無しさん
2008/12/22(月) 22:50:56なんでアドレスとか表示する意味があるんだ?
どうして、ポインターで指す必要があるんだ?
間接的にオブジェクトに代入してなんの意味がある?
ビット数の表示に意味なんてあるんだろうか?
いまやってることに、意味がない気がして・・
今、すげー・・やる気を失ってるところです・・
だれか・・元気付けてください・・
0773デフォルトの名無しさん
2008/12/22(月) 22:55:00すごく使うことになるのでとりあえず使い方をマスターしておけ
0774デフォルトの名無しさん
2008/12/22(月) 22:57:09お前の家の住所に意味はないのか?
例えば、「お前の家が見たい」って言われたとして、家ごとコピーして渡さなくても住所教えればいいだろ。そういうことだ。
0775デフォルトの名無しさん
2008/12/22(月) 22:57:30どう使うのか・・こう・・具体的に説明してくれるとありがたいです・・
0776デフォルトの名無しさん
2008/12/22(月) 22:58:01そ・・そういうことか!!!!!!!!
0777デフォルトの名無しさん
2008/12/22(月) 22:58:52なんでかっていうとめんどくさいからググレ
でも必要だから絶対覚えろ
・・・これは流石にひどいか
http://www7b.biglobe.ne.jp/robe/cpphtml/
ここのポインタの部分だけでもみるといいよ
C言語だったとしても内容変わらんから
0778デフォルトの名無しさん
2008/12/22(月) 23:23:27c=getc();
これで合ってると思うんですが、printf("c=%d", c);で表示すると入力したものじゃなくて変なのが入るんですがなぜですか?
0779デフォルトの名無しさん
2008/12/22(月) 23:25:02%cだ。
それだと。文字コードが表示される。
0780デフォルトの名無しさん
2008/12/23(火) 00:01:22100000個の要素を持った配列を渡すとき、「ちょっとこれサイズでかくね?」って思うでしょ
でもポインタ1個渡せば、あとはポインタの位置をずらしていくだけで配列を参照できるの
ねっ簡単でしょ
以上、ヴァンプ将軍のさっと簡単ハッキングでした
0781デフォルトの名無しさん
2008/12/23(火) 02:49:18先日Cの入門書を一通り学習し終えたのでwindowsアプリに手を出し始めました
しかしwindowsアプリではCの入門書でいうところの最初に学んだprintfやscanfのようなものが一切出てこず、違うものばかりです
ではそういったCの入門書ででてきてwindowsアプリの入門書では全くでてこない↑等のものはどこで使うのでしょうか?
また、書店にいくとCの関数辞典のようなものがありますがそういった書籍にのっているものも上記のようにwindowsアプリではでてこないものばかりなのでしょうか?
0782デフォルトの名無しさん
2008/12/23(火) 02:59:310783デフォルトの名無しさん
2008/12/23(火) 03:01:140784デフォルトの名無しさん
2008/12/23(火) 03:04:27Windowsでも一応コンソールアプリがあるけど、ふつーはprintf()とか標準入出力系の
関数は使いません。
それ以外の、ファイル入出力とか、文字種のチェックとか数学系とか時間計とかは使います。
ファイルにロックとかけるとか、ミリ秒単位で時間を扱うとか、ちょっとこった使い方をすると
WindowsのAPIとかを使うことになります。
0785デフォルトの名無しさん
2008/12/23(火) 03:09:27ありがとう、入門書で最初にやったことがいきなり不要扱いだったんで居間まで何やってたんだろう('A`)と少し不安になりました
プログラムを勉強するなら関数辞典は買っておけとよく言われるのですがこの関数辞典とは一般にC/C++のものをさすのでしょうか?
0786デフォルトの名無しさん
2008/12/23(火) 03:17:45そうだと思うけど、買う必要はないかな?
Cの標準関数の説明なら、ネットで探せばみつかるし。
http://www.bohyoh.com/CandCPP/C/Library/index.html
こういうやつとか。
0787デフォルトの名無しさん
2008/12/23(火) 03:23:32お気に入りにいれました
しかし結構何のことか全くわからん内容の関数とかあるんだなぁ・・・
0788デフォルトの名無しさん
2008/12/23(火) 03:30:22本を買うならリファレンスより、何とかクックブックとか何とかの技500とかみたいに、短いサンプルが
たくさん乗ってるやつのやつのほうがいいけど、オンラインでそういうやつあるかな?
0789デフォルトの名無しさん
2008/12/23(火) 08:59:44どうすればよいのでしょうか
敵の位置を変数「enemyposx」に入れてます
if(enemyposx<79.0)
{
enemyposx+=0.8;
}
if(enemyposx>113.0)
{
enemyposx-=0.8;
}
else
{
enemyposx+=0.8;
}
0790デフォルトの名無しさん
2008/12/23(火) 09:09:510791デフォルトの名無しさん
2008/12/23(火) 10:00:28if( x < 79 ) diff = +0.8 ;
if( x > 113 ) diff = -0.8;
x += diff;
0792デフォルトの名無しさん
2008/12/23(火) 10:17:59> ねっ簡単でしょ
ボブ! ボブじゃないか!
0793デフォルトの名無しさん
2008/12/23(火) 11:38:56できました。ありがとうございました
0794デフォルトの名無しさん
2008/12/23(火) 12:01:20でも解析とか始めるようになってデバッガーとか使い出してからやっと理解できたわ
0795769
2008/12/23(火) 15:13:54CLRオプションでコンパイルできないと言われましたがどうすればいいでしょうか?
0796デフォルトの名無しさん
2008/12/23(火) 16:10:58以下をご存じの方がいらっしゃいましたら、ご教授頂けましたらありがたいです。
環境はcygwin + g++です。将来的に linux でも使いたいと思っています。
異なる2台のHDDに各々数10GBのデータが入っています。
両方の HDD から、一度に512MB 程度づつ、データをメモリに読み込み、
逐次比較をしていくようなプログラムを作っているます。
HDD1台ごとに、一つのスレッドを作成し、スレッド内で HDD->メモリの
DMA 転送を行いつつ、dual buffer 構成にして別のスレッドで比較をしようと考えています。
HDD からメモリへDMA 転送をさせる方法を知りたいのですが、
普通に fread 文で読み込めば、勝手にDMA転送をしてくれるものなのでしょうか?
0797デフォルトの名無しさん
2008/12/23(火) 16:16:33プロジェクト作る時はCLRじゃなくてWin32のほうで
0798デフォルトの名無しさん
2008/12/23(火) 16:39:58DMA するかどうかはプログラミングの外の話じゃないかな。
それとメモリに読み込むより mmap した方が良いんじゃね?
0799デフォルトの名無しさん
2008/12/23(火) 18:15:48int a[n][2]という配列を作りたいのですが、
int **a;
a = (int *)malloc(n * sizeof(int *));
for(i = 0; i < n; i++){
a[i] = (int *)malloc(2 * sizeof(int));
}
でいいのでしょうか?
0800デフォルトの名無しさん
2008/12/23(火) 18:20:56int (*a)[2]で確保一回で済ますというのもあるな
0801デフォルトの名無しさん
2008/12/23(火) 18:46:49int (*a)[3];
a = (int *)malloc(n * sizeof(*a));
これでいいのでしょうか?
0802デフォルトの名無しさん
2008/12/23(火) 18:50:10Javaのほうが先にやってた俺は「参照が具体的な数値になったようなもんか」と考えたっけな
0803デフォルトの名無しさん
2008/12/23(火) 20:15:590804デフォルトの名無しさん
2008/12/23(火) 21:11:49ある程度コンピュータを知ってれば、アドレスのことでしょ?って思って
正確ではないにしろ、理解に詰まることはないんだけどね
Javaの参照とポインタは言葉通り、ちょっとニュアンスが違う。
そのあたりが"ポインタ"で詰まる理由のひとつかもね
0805デフォルトの名無しさん
2008/12/23(火) 21:52:39int (*a)[3];
a = (int (*)[3])malloc(sizeof(int [3]) * n);
だな
0806デフォルトの名無しさん
2008/12/23(火) 22:20:22プロジェクトの消去する方法がわかりません
ヘルプとかで、いろいろ探したりもしてみたんですが、わかりませんでした
どなたか、教えてください
0807デフォルトの名無しさん
2008/12/23(火) 22:36:04ソリューションエクスプローラーで右クリックしてメニューで削除を選ぶと削除される。
0808デフォルトの名無しさん
2008/12/23(火) 22:39:07でも、消えない・・
0809デフォルトの名無しさん
2008/12/23(火) 22:39:53ありがとうございました。
0810デフォルトの名無しさん
2008/12/23(火) 23:12:55も間違ってるよな
0811デフォルトの名無しさん
2008/12/24(水) 10:02:22http://www.asahi-net.or.jp/~yf8k-kbys/newcpp2.htmlのサイトにある、
//hello.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "hello" << endl;
}
をコンパイルしたのですが、
MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
とエラーが表示されコンパイルできません。
こんな初歩的な質問ですみませんが、どうすればコンパイルできますか?
またエラーの意味も出来れば教えてください。
0812デフォルトの名無しさん
2008/12/24(水) 10:16:38「Windows アプリケーションだっていうから
WinMain() を呼び出そうとしたら
そんな関数なかった」
解決法:
コンソールアプリケーションとしてプロジェクト作り直す。
0813デフォルトの名無しさん
2008/12/24(水) 10:24:37解決法とエラーの意味ありがとうございます!
無事コンパイルできました。
ここで疑問ですが、
win32コンソールアプリケーションとwin32プロジェクトの違いはなんなのでしょうか?
よければ教えていただきたいです。
0814デフォルトの名無しさん
2008/12/24(水) 10:27:100815デフォルトの名無しさん
2008/12/24(水) 10:28:55返答ありがとうございます
■ このスレッドは過去ログ倉庫に格納されています