【初心者歓迎】C/C++室 Ver.6【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただしその場合、質問者は必ず、環境を書きましょう。
【初心者歓迎】C/C++室【環境依存OK】
http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
【初心者歓迎】C/C++室 Ver.2【環境依存OK】
http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
【初心者歓迎】C/C++室 Ver.3【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
【初心者歓迎】C/C++室 Ver.4【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
【初心者歓迎】C/C++室 Ver.5【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1077102238/
【ラウンジ】質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
0002デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part11
http://pc5.2ch.net/test/read.cgi/tech/1077965179/l50
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/l50
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/l50
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/l50
タダで使えるVisual C++
http://pc5.2ch.net/test/read.cgi/tech/1082177340/l50
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
0003デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part11
http://pc5.2ch.net/test/read.cgi/tech/1077965179/l50
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/l50
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/l50
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/l50
タダで使えるVisual C++
http://pc5.2ch.net/test/read.cgi/tech/1082177340/l50
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
0004デフォルトの名無しさん
NGNGC言語なら俺に聞け! Part 76
http://pc5.2ch.net/test/read.cgi/tech/1081597375/l50
C++相談室 part29
http://pc5.2ch.net/test/read.cgi/tech/1082047479/l50
ぼるじょあがC/C++の宿題を片づけますYO! 21代目
http://pc5.2ch.net/test/read.cgi/tech/1078157730/l50
【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/l50
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/l50
タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/l50
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/l50
くだらない質問でもべっちょ偉そうに聞いていいスレ
http://pc5.2ch.net/test/read.cgi/tech/1069530956/l50
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGタダで使えるVisual C++
http://pc5.2ch.net/test/read.cgi/tech/1082177340/l50
0008デフォルトの名無しさん
NGNG>>2に入れてあるから心配するな。
0009デフォルトの名無しさん
NGNGボーランドC++コンパイラをダウンロードしてインストールしました。
WinXPで、環境変数のところに「C:\borland\bcc55\Bin」を追加しました。
早速、適当なプログラムを作ってみたのですが、
エラーE2209 が出て、インクルードファイル stdio.h をオープンできないとなってしまいました。
プログラムのソースは
#include <stdio.h>
int main (void)
{
printf ("hello\n");
return 0;
}
です。おながいします。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGhttp://www.cmagazine.jp/beginner/bcc/
[設定ファイルの作成]
bcc32.cfg
ilink32.cfg
0013デフォルトの名無しさん
NGNGある関数内でmallocし、その関数から抜ける前にfreeしたいのですが、
関数内には条件分岐でreturnする部分が数ヶ所あります。この場合、どう書くのが
一番きれいなのでしょうか?
具体的には
---------------------------
int func()
{
void *p=NULL,*q=NULL;
....
if(...)
return a;
....
p=malloc(...);
....
if(...)
return b;
....
q=malloc(...);
....
/* 続く */
001413
NGNGfor(...){
for(...){
if(...)
return c;
}
if(...)
return d;
}
...
free(p);
free(q);
return e;
}
--------------------------
みたいなものを書きたいのですが、このままだと、条件によってはp,qがfreeされません。
どうすれば、きれいに確実にメモリをfreeできるのでしょうか。
001513
NGNG(1) return の前にfreeを付ける。
--- 付け忘れる可能性がある。見にくくなる。
(2) funcを包み込む関数(仮にdo_func)を用意して、do_funcでfuncを呼び出しとfreeを行う。
( p,q をglobal変数にしたり、 func に void **型で渡したり)
--- global変数はなるべく増やしたくない。二つの関数間で共有するためだけにglobal変数を使いたくない。
void **型にすると、func内で *p のような書き方をしなければならず、見にくい。
(2') (2)と似ているが、do_func側でmallocもしてしまう。
--- func実行開始時点では mallocするサイズが決まっていないので、うまくいかない。
(2'') (2') と似ているがサイズが決まる前の部分をdo_funcに書いてしまう。
--- 一つの機能が二つの関数に分かれてしまうのは嫌
(3) return を全て goto に変える。
--- なんとなく嫌。
(4) 全体を do{...}while(0); で括り、 returnをbreakに変更。
--- forの内側ではbreakが効かない。
(5) #define RETURN(V) {free(p);free(q);return(V);} などとする。
--- 微妙…
という感じです。しかたなく(5)で行こうかと、あきらめかけているのですが、
もっとまともな書き方があったら教えてください。
001613
NGNGそれから、コンパイラ依存の機能を使うのもしない方向で。
0017デフォルトの名無しさん
NGNG漏れならgoto使うなぁ。
一番見やすそうだし、仕様変更にも柔軟に対応できそう。
でも最大確保サイズが分かってて、そんなに大きくないなら
スタック領域確保で対応するかな。
コンパイラ依存の機能はなしっていっても、
移植する必要がないならどんどん使った方がいいと思うよ。
今回の例でいうとalloca関数とか。
0018デフォルトの名無しさん
NGNGクラスや構造体を関数に渡すとき、ポインタで渡す場合と参照で渡す場合で
違いとかってあるんですか?
できれば"->"より"."を使ってメンバにアクセスしたいので参照渡しにしたいんですが。
0019デフォルトの名無しさん
NGNG参照にするかポインタにするかよりも、
関数の引数にconstつけるかどうかで、
関数内でデータが変化するかどうかを
関数を使うユーザーに暗示的に示せるので、
関数宣言の仕方に注意すべし。
0020デフォルトの名無しさん
NGNG機能的に違いは無いが、関数側から見ると、
ポインタはNULLが渡ってくる可能性を考慮する必要があるが、
参照は常に実体がある(ほんとは例外があるがそこまで気にしないでいい)。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGそのための参照でしょ。
002318
NGNG毎回忘れて後で読み直す羽目になってる・・・気をつけます。
>>20-21
NULLの場合を考慮しなくていいのは楽かも。
結果同じになるなら自分が使い易いほうでよさそうですね。
これから参照使って渡すようにします。
有難うございました。
0024デフォルトの名無しさん
NGNG(2)推奨。次点で(3)。
func()内での*pでのアクセスを避けるには、
func(void **p_copy)
{
void *p;
...
p = *p_copy = malloc();
}
とすれば良い。これならレジスタ等もうまく使ってくれる。
もちろん、do_func()内でNULLを代入しておく。
引数の数によっては、void **を渡すのではなく構造体のポインタを渡すのも手。
0025ラポ
NGNGすいませんが教えてほしいです。お願いします。
整数型配列 array に,先頭から n 個データが入っているとする.このようなときに,次の操作を行う二つの関数を作れ.
1、新しいデータ newdata を第 k 要素 array[k] の場所に挿入する(挿入前に array[k] 以降にあったデータは一つずつ後ろにずらす)関数
array_insert(int array[], int n, int newdata, int k)
2、第 k 要素の内容を削除する(削除前に array[k+1] 以降にあったデータは一つずつ前にずらす)関数
array_delete(int array[], int n, int k)
0026デフォルトの名無しさん
NGNG宿題丸投げはこちらにいきましょ
ぼるじょあがC/C++の宿題を片づけますYO! 21代目
http://pc5.2ch.net/test/read.cgi/tech/1078157730/l50
0027ラポ
NGNGありがとうございました。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGこの2つはどう関係しているのですか?
自分なりの解答としては
構造化プログラミングは構造の把握しやすいプログラムを作る方法のことで、
段階的詳細化はトップダウン法のことである。トップダウン法で作ったほうが
構造の把握しやすいプログラムができる可能性が高い、という点で関係している。
って感じなんですが、不安です。何かアドバイスお願いします。
0030デフォルトの名無しさん
NGNGあなたの質問 と このスレ の関係について教えてください。
この2つはどう関係しているのですか?
自分なりの解答としては
あなたの質問は環境に依存しない一般的な ことで、
このスレは環境依存もOKな優しいスレのことである。「すれ立てるまでもない質問はここで」 スレで聞いた ほうが
回答を得やすい質問である可能性が高い、と言う点で全然関係していない。
って感じなんですが、不安です。何かアドバイスお願いします。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGRubyなんかにもポーティングされてるのに何でここだと思ったか知らないが
専用スレはゲ製にある。
SDLスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005469181/
0033デフォルトの名無しさん
NGNGfor(m=0;m<N;m++){
for(n=0;n<N;n++){
a=0.0;
for(v=0;v<N;v++){
for(u=0;u<N;u++){
if(u==0 && v==0)
c=0.5;
else
c=1.0;
a+=c*f[u][v]*cos(((2.0*m+1.0)*u*pai)/(2*N))*cos(((2.0*n+1.0)*v*pai)/(2*N));
}
}
g[m][n]=(unsigned char)a;
}
}
としているのですが、逆DCTをしても元に戻ってくれません。
画像に対してなのですが、これであっているでしょうか?
逆DCTが違う可能性もあるのですが。
0034デフォルトの名無しさん
NGNGありがとうございます。
専用スレに逝ってきます。
0035デフォルトの名無しさん
NGNGアルゴリズムはよくわからないが
>g[m][n]=(unsigned char)a;
とやってる所を見ると精度がunsigned charになってしまう
からじゃないか?
0036デフォルトの名無しさん
NGNGヘッダーファイル等をUPDATEしないといけないと思うんだけど、
MicoroSoftのどこで何をダウンロードすれば良いのでしょうか?
0037デフォルトの名無しさん
NGNGPlatformSDK
0038デフォルトの名無しさん
NGNGVC++6.0で簡単なグラフィックを使う場合には
C++の知識が必要なのですか?
Cまでの知識でグラフィックを扱えるものはありますか?
0039デフォルトの名無しさん
NGNGWindows APIの知識があれば。
0040デフォルトの名無しさん
NGNGCかC++かで言えばC
0041デフォルトの名無しさん
NGNGヘッタファイルでconst int A = 1;とゆう風に定数を宣言してるのがよく見かけるのですが、
ヘッタファイルではexternをして、宣言はソースファイルに書くものじゃないんですか?
cでは大体ソースファイルで宣言されてたんですが、c++ではヘッタで宣言してるのをよく見るんです
0042デフォルトの名無しさん
NGNGヘッタファイルって何?
という突っ込みはさておき、それこそ定数の宣言だけしたような、
対応するcppファイルの存在しないヘッダファイルじゃないの?
インクルードガードしてたら問題はない。
0043デフォルトの名無しさん
NGNGとりあえず用語について。
×ヘッタファイル/○ヘッダファイル
あと、
>ヘッタファイルではexternをして、
こっちは「宣言」ですが、
>const int A = 1;とゆう風に定数を宣言
>ソースファイルに書くものじゃないんですか?
こっちは「定義」と呼ばれるものだと思います。
で、通常 C では #define で定数を定義するので、それを単純に
const に置き換えただけなのではないかと。
0044デフォルトの名無しさん
NGNG>>43
レスありがとうございます
どこかで、ヘッダファイルにはexternだけ書いて、定義はソースファイルで、という書き込みを見たのですが、
ヘッダファイルの方で定義してもいいんですね
どこでその書き込みを見たかも忘れてしまったので、混乱していました
0045デフォルトの名無しさん
NGNGコンパイラから見れば、ヘッダファイルとソースファイルに差異はない。
というか、ソースファイルにヘッダファイルが挿入されたものをコンパイラは処理するわけで。
0046デフォルトの名無しさん
NGNGそしてヘッダファイルの存在は忘れれ。
コンパイラが見ているのはその状態だ。
ということですな>>44
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG#defineの代わりにしてるなら普通だよ
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG/* 世界で一番汎用的なプログラム */
#include <con>
を見て笑えるようになったら、ヘッダについては卒業だな。
0052デフォルトの名無しさん
NGNG原理も解るが、笑えんぞw
0053デフォルトの名無しさん
NGNGmain()
{
printf("1 little ");
printf("2 little ");
printf("3 little ");
printf("4 little indian boys\n");
} 」
これだと上手くコンパイル出来ないのですが、
「#include <stdio.h>
main()
{
printf("1 little ");
printf("2 little ");
printf("3 little ");
printf("4 little indian boys\n");
} 」
これだとコンパイルできます、この二つの差は何でしょうか?
エディタはCPadでコンパイラはLSI C-86 Ver.3.30、OSは
winXPです。
0054デフォルトの名無しさん
NGNG005553
NGNG#include<stdio.h>
main()
{
int a;
a=54;
printf(">>%dスイマセン^^;\n",a);
}
0056デフォルトの名無しさん
NGNGどこでincludeしたらいいのか悩んでます。
globals.hって作って、その中でテンプレート&宣言をしてるんですが、
うまくリンクできてないみたいで、どこが悪いのかさぱ〜り。
externつけるとリンクしないし、つけないと今度は挙動がヘンだし。
0057デフォルトの名無しさん
NGNGとりあえずモチツケ
0058デフォルトの名無しさん
NGNG宣言と定義について解ってないと見た。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGソース晒せ。話はそれからだ。
>どこが悪いのかさぱ〜り。
どしろうとが何処で引っ掛かってるのかなぞ、
ソース見なこっちもさっぱり判らん。
0062デフォルトの名無しさん
NGNG単に愚痴りたいだけなのか?
これで質問しているつもりなのか?
後者だったら、よく周りの人間が付き合ってくれるもんだと感心する。
0063デフォルトの名無しさん
NGNGとはいっても、総当たり方式で、ですが。
extrenつけたり外したり、別のヘッダに移したりしてるうちに
ビルドできちゃいました。
テンプレートは.hでやっといて、別ファイルの方で宣言したらうまくいきました。
自分の持ってる本だとそこまで書いてなかったんですよう。
0064デフォルトの名無しさん
NGNG>ご心配おかけしましたが、...
さらに>>63の将来が心配になった人がいると思われ
0065デフォルトの名無しさん
NGNGint a;
a = int(-3);
printf("%d\n", a);
自分でやってて良く分かってないのですが、このように
データタイプ(値) というのは C++ 的にはどのような解釈
になるんでしょうか?
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGキャストでねーの?
0068A
NGNG環境依存かわかりませんが、borland bcc32 を使ってます。
2次元配列などを動的メモリで何個も使って、普通に動いてるように
見えるコードに、新たに別の配列を同様にして追加しようとすると、その前後で
メモリに書き込めない、というエラーがでるときがあります。
また開放しようとしたときに、メモリが読めない、と言われるときがあります。
ポインタでファイルをオープンしようとして、メモリが読めないとエラーが
出るときもあります。
配列の大きさ種類は色々ですが、最大で100 * 100 の double型の大きさで、
それを数個使う程度です。
何か全然初歩的なミスをどこかで犯してるのかもしれませんが、
もし何か気が付くことがあれば、教えていただけませんか?
お願いします。
0069デフォルトの名無しさん
NGNG新たに別の配列を同様にして追加 ってどういう意味?
できればソース出して。これだけの情報じゃあなんとも言えない。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG扱い方を間違えてる
007268
NGNGソースは大体以下のような感じです。以下は2個しか書いてませんが、 double 型以外の配列も同様の形で作ったり、などとして配列の数を
増やそうとすると、そこでメモリの読み書きができない、 というエラーが出てきたのでした。
>>70
やっていませんね。NULL を出すということは、そこのメモリは読み書きできなかったということになるんでしょうけど、その場合は
別のところにメモリを確保してくれるのでしょうか?
それともただそこでプログラムは停止する、ということでしょうか?
>>71
きっと間違えてますね。もし以下で何かおかしいことがあれば、 お教えいただけると嬉しいです。
007368 (2)
NGNGvoid free_dmatrix(double **top);
int main() {
double **Array1, **Array2;
Array1 = new_dmatrix(100,100);
Array2 = new_dmatrix(100,100);
......
free_dmatrix(Array1);
free_dmatrix(Array2);
}
double **new_dmatrix(int M, int N){
double **top;
int i,j;
top = (double **)malloc(sizeof(double *) * M);
top[0] = (double *)malloc(sizeof(double) *M*N);
for(i=1; i<M; i++) top[i] = top[i-1]+M;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
top[i][j] = 0.0;
}
}
return top;
}
void free_dmatrix(double **top){
free(top[0]);
free(top);
}
0074デフォルトの名無しさん
NGNGなのに、
topに1万回も書き込めば何があっても不思議じゃない。
0075デフォルトの名無しさん
NGNGポインタと配列に対する知識不足だな。
007668
NGNGどうもありがとうございます、
仰せの通り知識不足でどうやっていけばいいかは、
はっきりわかりませんが、危険な方法だという事ですね。
もうちょっと安全な書き方を考えてみます。
0077デフォルトの名無しさん
NGNG>>73のコードは、はっきりいってめちゃくちゃ。動くだけでも奇跡。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG>top[0] = (double *)malloc(sizeof(double) *M*N);
これがやりたいのかなぁ
top = (double **)malloc(sizeof(double *) * M);
for (i = 0; i < M; i++)
top[i] = (double *)malloc(sizeof(double) * N);
0081デフォルトの名無しさん
NGNGどのように行うのが一般的でしょうか?
0082デフォルトの名無しさん
NGNGメモリ内の0x41番地に'A'が有るという解釈は間違いですか?
(ASCII配列で)
0083デフォルトの名無しさん
NGNG間違いです。
ASCIIにおいて、'A'の値が0x41なだけです。
0084デフォルトの名無しさん
NGNGなんで読めない奴がいるんだyp
>>80
そうやると sizeof(double) * N バイトのヒープが M 個できるだろ?
008584
NGNG○ ブロックが
0086デフォルトの名無しさん
NGNG008733
NGNGレス遅くなって申し訳ないです。
あれから色々やってみたのですがいっこうに
元の画像に戻らずです・・・。
しかも貼り付けたやつは逆DCTのほうでした。
g[m][n]=(unsigned char)a;
の部分はg[m][n]がunsigned char型なのです。
画像を読み込んでDCTして出力という感じです。
0088デフォルトの名無しさん
NGNG元に戻らんってどの程度のレベルで言ってるの?
DCT変換後の結果をunsigned charで格納したらその時点で情報落ちするから、
逆DCTしても全く同じにはならないって事じゃないのか? >35は。
0090デフォルトの名無しさん
NGNGインスタンスの管理のしかたはわからんが普通に
class A;だとしたら
class* a;
a = new A;
a->Initialize();
delete a;
と、複数インスタンスとは別にツクってでいーんじゃない?
他の方はどーやっとる?
0091デフォルトの名無しさん
NGNG普通にはその変数を定義したところで初期化する。
込み入ったことをやりたかったら、初期化関数をstaticで用意する。
0093デフォルトの名無しさん
NGNGんじゃ根本的なアルゴリズムの問題だろ。
まず正しくDCT出来てるか確認汁。
0094デフォルトの名無しさん
NGNG>double **top;
>top = (double **)malloc(sizeof(double *) * M);
>top[i][j] = 0.0;
藻前はどこをアクセスしていると思っているのか?と小一時間(ry
0095デフォルトの名無しさん
NGNG> if(u==0 && v==0)
> c=0.5;
> else
> c=1.0;
俺の本には
cu = u==0? 1.0/sqrt(2.0) : 1.0;
cv = v==0? 1.0/sqrt(2.0) : 1.0;
c = cu * cv;
みたいに書いてある。
あとDCT係数は負になることもあるし、256を超えることもある。
unsigned char じゃ無理。
0096デフォルトの名無しさん
NGNG>94
問い詰められるのはおまいだ。
>top[0] = (double *)malloc(sizeof(double) *M*N);
なんだから、メモリの確保自体はしてあるだろ?
落ち着いて図でも描いてみるべし。
>73
×for(i=1; i<M; i++) top[i] = top[i-1]+M;
○for(i=1; i<M; i++) top[i] = top[i-1]+N;
これでいけると思われ。
でも、どうせなら malloc(sizeof(double*)*M+sizeof(dobule)*M*N) にして
malloc 1回にしたい気もする。
あー、けどアラインメントを考えるとうまくいかない環境もあるか。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG俺は複雑な初期化を必要とするstaticメンバ変数を使ったことはないが、
デフォルトコンストラクト可能なヘルパクラスをメンバに持つのはどうだ?
class A {
static struct helper {
helper() { /*...*/ }
T member; /* 使いたいメンバ */
} one;
};
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGと宣言し、
RECT rec[2] = {{0,0,0,0},{0,0,0,0}};と初期化し
r = recとやるのが無理だったのですが
forでまわすしか方法はないでしょうか?
0103デフォルトの名無しさん
NGNG構造体にいれる方法もある。
0104デフォルトの名無しさん
NGNGmemcpy(r, rec, sizeof(r));
0105デフォルトの名無しさん
NGNGやはり
#include <cstdio>として
sprintfで一度文字列に変換してからvectorへ持っていくという方法がベストでしょうか?
0106デフォルトの名無しさん
NGNGboost の lexicial_cast 使うのもアリ。何がベストかは、何を重視
するかによるから何とも言えんが。
http://www.boost.org/libs/conversion/lexical_cast.htm#lexical_cast
0107デフォルトの名無しさん
NGNGスマートなやりかただな
0108デフォルトの名無しさん
NGNGSolaris8+SunONE7 で ローカル時間にmsec(ミリ秒)を使いたい。
localtime構造体には、msecがなく、困ってます。
何か他のmsecのある構造体を教えてください。
また、time構造体から上の構造体への変換関数もお願いします。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGμsec ならあるんだけどなー。
残念だなー。
0111デフォルトの名無しさん
NGNGthnks.
STLの範囲内でと考えていて、参考書では<c*>はなるべく使わない方が
いいと書いてあったので他の人はどうしているか知りたかったと言うところです。
0112デフォルトの名無しさん
NGNGどうせ精度はmsec以下だけどね。
0113デフォルトの名無しさん
NGNG標準ライブラリの範囲内なら、std::stringstreamがあるが。
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG無知晒しage
0116デフォルトの名無しさん
NGNG'0'-0は'0'じゃないの?
0をひく意味があるの?
0117デフォルトの名無しさん
NGNG>>116
ない。ボケボケだったよ。
0118デフォルトの名無しさん
NGNG011968
NGNG恥ずかしながら、96さんのご指摘の通りでした。
常にM=N の配列を使っているので、ある所まではエラーが出なかった
ようです、お騒がせしました
0120デフォルトの名無しさん
NGNGint a=120; // 3ケタの整数
cout<<function(a); // 3が表示される
こんな感じです。
0121デフォルトの名無しさん
NGNGcout << boost::lexical_cast<std::string>(a).length() ; // (゚д゚)ウマー
0122121
NGNG/=10 で数えたほうがよろしいと思われ。
0123デフォルトの名無しさん
NGNGif( a < 10 )
//1桁
とか比較したほうが
0124デフォルトの名無しさん
NGNG文字列の中に+を入れて
if(str[i] == ('+' || '-' || '*' || '/'))
こうすると思った通りに動きません。
if(str[i] == '+')
こうだと正常に動作するので上の論理演算が正しくないと思うのですが
なにがおかしいのかが解らないのでご教授ください
0125デフォルトの名無しさん
NGNGif(str[i] == ('+' || '-' || '*' || '/'))はif(str[i] == 1)と等価。
if(str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' )と書くか
if( strchr("+-*/",str[i]) )と書く。
0126デフォルトの名無しさん
NGNGswitch(str[i])
{
case '+': case '-': case '/': case '*':
/* 処理 */
break;
}
0127デフォルトの名無しさん
NGNG括弧で式が括られている場合の演算子の優先順位を考えてみましょう。
一段階ずつ自分の手で、式を計算していってみると分かりやすいですよ。
例えば、>124の場合、
1. if (str[i] == ('+' || '-' || '*' || '/'))
まず、('+' || '-' || '*' || '/')の中が評価される
2. if (str[i] == (true || '-' || '*' || '/'))
'+'は非ゼロである為、論理演算ではtrueとみなされる
3. if (str[i] == true)
||は先頭から評価されていき、ひとつでも真となる条件があった場合、
後ろの式は評価されない
4. if (false)
str[i] == trueが成り立たない場合、評価の結果はfalseとなる
0128デフォルトの名無しさん
NGNG回答有難う御座います。
ifとswitchではどちらが速いんでしょうか?
0129デフォルトの名無しさん
NGNG解りやすい解説有難う御座います。
0130デフォルトの名無しさん
NGNGそんなことを気にするよりも前に、もっと他に気にすることがあるでしょ。。。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGsrand(time(NULL));
0133デフォルトの名無しさん
NGNGwhile (1) {
printf(rand() % 2 == 0 ? "まいう" : "まいう〜");
}
0134デフォルトの名無しさん
NGNGint a;
a=(srand(time(NULL))/3)*100 + (srand(time(NULL))/13) +1;
ってできるでしょうか?できない気がしてしょうがないんですが、
百の位を0〜3、十と一の位に1〜13の数が入るようにしたいのです
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGネタですか?
0137デフォルトの名無しさん
NGNGはげしくワロタ。というかコーヒー吹いたじゃねぇかゴルァ!
0138デフォルトの名無しさん
NGNGsrandを知った瞬間からsrandをGoogleなりでちゃんと学習しようよ
自分で検証もせずに相手にデバッグさせるのは、この手のスレで一番のノーマナー
0139デフォルトの名無しさん
NGNGsrandはいわばトランプの札をシャッフルする。
札を配る(乱数を返す)のはrand()。
ヘルプなり入門書なりきちんと読もうや、をい。
なお、やりたいことはトランプっぽいな。
もし、それなら0-51の範囲で扱った方が楽かも知れんぞ。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG関数しないなら出来るけど。
#include <stdio.h>
#define NUMBER5
void rev_intary(int vc[], int no)
{
int i;
int back = vc[0];
for(i=NUMBER-1; i>=0; i--)
back = vc[i];
}
int main(void)
{
int i;
int a[NUMBER];/*値*/
int temp;
printf("%d個の整数を入力してください。\n", NUMBER);
for (i = 0; i < NUMBER; i++) {
printf("%d番目:", i + 1); scanf("%d", &a[i]);
temp=a[i];
}
puts("逆に並べると、");
printf("%d\n", temp);
puts("です。");
return (0);
}
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG>入力した順と逆に表示する関数がつくれない・・・
そうか。オレは作れるけどな。それがどうかした?
0144デフォルトの名無しさん
NGNG#define NUMBER5
//スペースが不足してませんか
あと仕様が微妙に不可解。テンポラリ変数使っても意味ないのでは?
配列を逆回ししてあげればそれでおしまいのような。
puts("逆に並べると、");
for (i=NUMBER-1; i>=0; i--)
printf("%d\n", a[i]);
puts("です。");
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGなんか i-- とか >= とかが個人的に気持ち悪いので、
puts("逆に並べると、");
for(i=0; i<NUMBER; i++)
printf("%d\n", a[(NUMBER-1)-i]);
puts("です。");
こうしません?
>>141
つうか rev_intary はどこで呼ぶのさ。
0147デフォルトの名無しさん
NGNG最近のコンパイラなら、それをデクリメント方式に直してくれるのかな?
そうでないなら、加算コストが無駄で、俺は逆に引いてしまう・・・(まぁDBでもないかぎりは変わらんけど)
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG前者は内容の可読性、後者はコードの可読性を重視してるってことさね
気にすんな
0150デフォルトの名無しさん
NGNG本を見ても意味不明なわけで
0151デフォルトの名無しさん
NGNGそのレベルだったら配列を関数に渡すのはちょっと難しいかもしれない。
まずは簡単な関数作ったり、ポインタと戯れてみよう。
もしくはいい本を探そう。
0152デフォルトの名無しさん
NGNG最初から、
「数値配列を逆順に出力する関数を作りたいのですが、
具体的にどう配列をわたし、どう出力したらよいかわかりません。
教えてください。」
と質問しろ。
プログラミングは初心者でも日本語は十年以上使ってるんだろう?
言葉足らずの質問は、こちらが補完して回答するより
本人にきっちり明確に再質問させたほうが、
結局双方のためだと思うが?>all
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGここは初心者スレだ。
相手のレベルにあわせてやるのも必要だろう。
うざければスルーすればいいしな。
あと本人の今後など誰も気にしとらん。
そこに質問があったから、それに答える。
ただそれだけのことだろう。
0155デフォルトの名無しさん
NGNG質問内容をできるだけ明確にするってのは
初心者スレでも当然要求されるもんだと思うが?
0156デフォルトの名無しさん
NGNG何が分からないのか分からない場合は、質問しないのがネチケットですし。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGclass Hoge{
public:
Hoge(int a){...}
...
};
のようなクラスがあったとき、
Hoge fuc(){
...
return Hoge(x)
}
ってな感じで return文のあとにコンストラクタを
直接書いているコードを良く見ますが、コンストラクタって
戻り値ないのになぜ?
動作は確認したし、すっきり書けるので自分は
すでにこの書き方が身についてしまったのですが、
理由をはっきりさせたいです。
よろしくお願いします。
0159デフォルトの名無しさん
NGNG遅レスだが、boostよりは速いだろw
n = 1+(int)log10(a);
0160デフォルトの名無しさん
NGNGそれはコンストラクタを直接呼んでいるのではなくて
無名オブジェクトを構築してそれを返しているだけ。
{
Hoge hoge(x);//hogeという名前のHogeオブジェクト
Hoge(x);//名前は無いけどHoge型のオブジェクト
}
スコープにそのオブジェクトがあるだけでよい場合は
よく使う手段のような気がする。
0161デフォルトの名無しさん
NGNG=演算子のオーバーロードが仕込んで在るんじゃないの?
0162デフォルトの名無しさん
NGNGたとえばこんな関数があったとき、
void hoge_func( const Hoge& h ) { ... };
こんな風に使うことができる。
hoge_func( Hoge(any_value) ); //Hogeの無名オブジェクトを引数にしている。
>>161
コピーコンストラクタ、operator=()が定義されていなくても基本的には動作する。
当然、メモリイメージそのままのコピーになるけど。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGボトルネックにならないと分かりきっていない限りはやらないな。
try-throw-catchとか。
0165デフォルトの名無しさん
NGNG自作しようとして挫折しました。ご教授ください。
0166165
NGNG0167デフォルトの名無しさん
NGNGそれを小さい順に並び替えるにはどうしたらいいでしょうか?
もし同じ数があれば連続して並ばせる
0168デフォルトの名無しさん
NGNG1.自分で作る
2.人のソースからぱくる
3.ATLなどのライブラリを使う
0169デフォルトの名無しさん
NGNG配列やソートという言葉を知ってますか?
0170167
NGNG仮に
a=7
b=3
c=5
d=3
とあったとすると、
a=3
b=3
c=5
d=7
となるようにしたいのです。
この例だと4つですが
それが、ころころ変わるのです
数が決まっていれば何とかなりそうですが・・・
0171デフォルトの名無しさん
NGNG自作するなら ctype.h のマクロを使う。
あるなら開発環境その他のライブラリを使う。
0172デフォルトの名無しさん
NGNG作業用の配列に入れてソートして戻せば良いのでは?
0173デフォルトの名無しさん
NGNGプログラム中に同じ型の変数が不定個存在するわけ?
ちょっと想像できない。
素直に配列なり(C++が使えるなら)std::vector/std;;setなりを使うように
書き直したほうが早いぞ。
0174デフォルトの名無しさん
NGNG配列を使わない理由は?
0175デフォルトの名無しさん
NGNG何とか完成したかに見えたのですが、VC上で実行すると上手くいくのに、
exe単体を起動すると何故か書き換えは行われず無視されてしまいます。
何が原因と考えられるのでしょうか?
環境はWinXP、VC++6.0SP6です。
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGスペースとタブに限定するなら、何もしなくてもいいんじゃ?
0178デフォルトの名無しさん
NGNG素直にエディタの置換機能使うか、
Perlで書いた方が速いぞ。
0179デフォルトの名無しさん
NGNG使わないというより、使えないのです。
恥ずかしい話ですが、プログラミングを始めてからトントン拍子である程度これたのですが
配列、ポインタあたりからつまづき始め、いらだち始めてきたので気分転換に
今ある知識でちょいと簡単なプログラムを作ろうと思ったのです
0180デフォルトの名無しさん
NGNG総当りでやらなくちゃいけないから配列使わないと無理。
100個あったら100!分やらなきゃいけないわけで、配列以外では現実味が無い。
0181デフォルトの名無しさん
NGNG配列の勉強するいいチャンスだと思って。
0182デフォルトの名無しさん
NGNGちょっとつまづいた位で勉強する気が失せるようだったら、
向いてないからプログラム辞めた方がいいよ。
そうでないなら、めげずにガンガレ!
0183デフォルトの名無しさん
NGNGそら、本腰入れて配列の勉強しろよ。
きちんとした入門書を読むこと。これが一番。
0184デフォルトの名無しさん
NGNG俺も>>182-183と同意見。
配列C/C++に限らず、プログラム全般で基本かつ習得必須の概念。
ここでつまずいてちゃ、まともなプログラムはかけないよ。
「ここまでとんとん拍子」っていっても、その段階ではほとんど意味がない。
0185デフォルトの名無しさん
NGNGEntを押す前にBsとかDelを押しても文字が消えません
一度打ってしまうと修正できないんですか?
0186デフォルトの名無しさん
NGNG環境による。
0187185
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGなんで?
0190デフォルトの名無しさん
NGNGioctl()で消したりすることができるようになるかなぁ?
ちなみにgets()は使っちゃあかんぞぃ
fgets() (+scanf())にすべし。
>>186
異議なし。
0191190
NGNG初心者なんでどうも動作がおかしいんです。
(tokenはvector<int>として定義)
int BigInt::ceil_int(int numerator,int denominator)
{
int result = numerator/denominator;
if((numerator%denominator)!=0){
if(result>0)
result++;
else
result--;
}
return result;
}
0192190
NGNG{
set(s);
}
int BigInt::set(string s)
{
for(int i = 1;i <= ceil_int(s.length(),INTERVAL_BI);i++)
{
if((s.length()-i*INTERVAL_BI) < 0)
token.push_back(atoi(s.substr(0,s.length()%INTERVAL_BI).c_str()));
else
token.push_back(atoi(s.substr(s.length()-i*INTERVAL_BI,INTERVAL_BI).c_str()));
DEBUG(cerr<<i<<","<<token[i]<<endl);
}
}
これでBigInt bi("83758647673487563");とすると正しく分割されないんです。
どうしてでしょうか?
0193デフォルトの名無しさん
NGNG暖かい言葉ありがとう。
今回のプログラムは結果的にまったく完成せずに幕を閉じる、
創る楽しさを再発掘できたよ
ガンガってみる
そしたらまた、そうのうち作り直してみる
0194デフォルトの名無しさん
NGNGまず、同じことをC++ではなく、Cで書いた場合、
ちゃんと動くものを書けるか?
0195デフォルトの名無しさん
NGNGif((s.length()-i*INTERVAL_BI) < 0)
↓
if((s.length() < static_cast<size_t>(i)*INTERVAL_BI)
0196デフォルトの名無しさん
NGNGクラスAで(new等で)明示的にクラスBを生成しない場合、
クラスBのコンストラクタはどの時点で呼ばれるのでしょうか?
あるいは呼ばれないのでしょうか?
0197デフォルトの名無しさん
NGNGclass B {
B() { std::cout << "B::B()" << std::endl; }
~B() { std::cout << "B::~B()" << std::endl; }
};
class A {
A() { std::cout << "A::A()" << std::endl; }
~A() { std::cout << "A::~A()" << std::endl; }
B b;
};
main() {
A* a = new A;
delete a;
}
こんな感じで試した方が数段早く理解できると思う。
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG環境は、Visual C++ 7.1 + STLport 4.6.2。
これでboost 1.31.0をビルド・インストールしようとしています。
以下のように一部書き換えたvsvars32.batを実行して、
------------------------------------------------------
@set STLPORT_PATH=C:\STLport-4.6.2
@set STLPORT_VERSION=4.6.2
@set INCLUDE=%MSVCDir%\INCLUDE\stlport;%MSVCDir%\ATLMFC\INCLUDE;
%MSVCDir%\INCLUDE;%MSVCDir%\PlatformSDK\include\prerelease;
%MSVCDir%\PlatformSDK\include;%FrameworkSDKDir%\include;%INCLUDE%
@set LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;
%MSVCDir%\PlatformSDK\lib\prerelease;%MSVCDir%\PlatformSDK\lib;
%FrameworkSDKDir%\lib;%LIB%
------------------------------------------------------
bjam "-sTOOLS=vc7.1-stlport"
"-sBUILD=debug release <runtime-link>static/dynamic
<threading>multi <stlport-version>4.6.2"
"--without-python"
とやると、regex以外はビルドに成功するのですが、
0200199
NGNGhttp://www.kmonos.net/alang/boost/classes/posix_time.html
記載のコードが、LNK2019エラーとなって
ビルドできません。
date_timeのビルドでエラーは出ないものの、
どうも、time_from_string()など、
一部の関数がライブラリファイルに含まれていないようです。
どなたか、同じ環境で正常にビルドできた方、
ビルド方法を教えて頂けるとありがたいのですが。
0201191
NGNGどうも、ありがとうございました。ソースコードにtoken[i-1]の-1を忘れている
のにも気づかず、話もできません…
それでもバグを修正してくれてありがとうございました。
0202199
NGNGすみません。
以下のスレで訊いた方がよいような気がしてきたので、
質問を移しました。
【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/l50
0204デフォルトの名無しさん
NGNGそれ仕様。そうでないといろいろ困る。
0205デフォルトの名無しさん
NGNGBのプロパティを初期設定したい場合どこで呼べばいいのかわからなくなる。
同様に、Aが破棄される際にBが先に破棄されていると
Bに終了処理が必要な場合、以下同文ということだな。
0206デフォルトの名無しさん
NGNGでも、現行の仕様が一番シンプルで分かりやすい。
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part11
http://pc5.2ch.net/test/read.cgi/tech/1077965179/l50
0212デフォルトの名無しさん
NGNGIDEだのデバッガの使い方はさすがにスレ違いだ。
つか、専用スレで聞いたほうが早いし。
0213デフォルトの名無しさん
NGNG#ifndef BOX_H
#define BOX_H
class Box {
public:
// Constructor
Box(double lengthValue = 1.0, double widthValue = 1.0, double heightValue = 1.0);
// Function to calculate the volume of a box
double volume();
private:
double length;
double width;
double height;
};
#endif
これの5行目のクラス宣言の部分でエラーが発生しコンパイル出来ません。
ちなみに、環境はウインXP、ボーランドbcc55です。サンプルは下のサイトからDLしたものです。
http://www.apress.com/book/bookDisplay.html?bID=218
どこがおかしいのでしょうか???どなたかお教え下さい。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNGヘッダをコンパイルしても意味ない
対になるbox.cppを探してコンパイルしる
0221デフォルトの名無しさん
NGNG一緒にコンパイルしようとしてますが、最初のヘッダの時点で、上記の
メッセージが出てコンパイル出来ません。
ちなみにコンパイルの際の入力方法としては、例えば、sample12_04であれば
bcc32 Box.h Box.cpp prog12_04.cpp
って入力してますけど。このやり方がおかしいんでしょうか?
必ず、Box.h 5: 宣言の構文エラー ってメッセージが出て進みません。
どうかお教え下さい。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGすいません、ありがとうございます。Box.hはどうするんですか?これは指定する必要無いんでしょうか?
0225デフォルトの名無しさん
NGNGどうやってコンパイルするのかが分からなかったもので。
要するに、bcc32 prog12_04.cpp Box.cpp
で、ヘッダ以外をコンパイルし、それから、prog12_04.exe で実行すれば
良かった訳ですね。納得しました、どうもすいませんでした。
0226デフォルトの名無しさん
NGNGヘッダファイルはこんなクラスや関数がある、と示すもので
インクルードして使う。コンパイルする必要がない。
http://www.nifty.com/webapp/digitalword/word/007/00721.htm
分割コンパイル、プロトタイプ宣言、ヘッダファイル、
オブジェクトファイルなどをキーワードにして勉強しませう。
0227デフォルトの名無しさん
NGNG何割かの人間が通る道かな?これはw
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGC++のコンパイルエラーの一覧表みたいなものって
あったりしますかね?
解説付だとうれしいんですけど。
ググってみてもMLの記事ばっかりひっかかってしまいます。
0230デフォルトの名無しさん
NGNGVC++ならMSDNに付いてますよ。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG割れ厨ならば通報しまつよ
0233デフォルトの名無しさん
NGNGgcc は? man じゃ出てこないよね。
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGVisual C++.net使って、「独習C」読み進めてます。
以下のような文で、数字を文字として取得した際に、
何故、コメントアウトした文が必要なのかわかりません。
この式を抜いてコンパイルすると、
「n(数)」といれたはずが、「nn」となるのはカクニンしましたが・・・。
(前略)
char num;
printf("数字を入力:");
num = getche();
printf("\n");
/* num = num - '0'; */
if(num>=0 && num<10) printf...
(後略)
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGx = 0 と x = '0' の違いは分かる?
前者は 0 という数値を、後者は 0 という文字コードを x に代入している。
printf("value = %d, character code = %d\n", 0, '0'); を実行して確認してみると良い。
後は↓の二つを読んでちょ。
ASCII 文字コード表
http://e-words.jp/p/r-ascii.html
「−'0'」の部分の働きがよくわかりません。
http://www.jtex.ac.jp/qa_p34.html#Q12
0238デフォルトの名無しさん
NGNGなお、abs等のあらかじめ用意されている算術関数は利用せずに作らないといけないです。
0239235
NGNGあ、わかりました!
英字でなら、以前にやったことがあるかも。。。
ASCIIコードで '5' - '0' だったら、
53 - 48 ってことですよね。
スッキリしました、ありがとうございます〜。
0240デフォルトの名無しさん
NGNGどこが分からないのか言ってくれないと手伝えないよん。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGint absolute(int a) {
if(a<0)
return -a;
else
return a;
}
0243デフォルトの名無しさん
NGNGint absolute(int n) {
return n < 0 ? -n : n;
}
0244デフォルトの名無しさん
NGNGそれは日本語が分からないと言う事か?
0245240
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGってなんてことないところで出るんですが、なぜなんでしょう?
問題の行をコピペしてほかの所に貼り付けても、エラー出ませんでしたので
どうも二次エラーじゃないかと思うんですがどうでしょうか?
二次エラーだとしたら、一般的にどの辺を見直してみるとよいでしょうか?
0249デフォルトの名無しさん
NGNG一概には言えないが、大抵はその直前の行が終了していない(';'がないなど)。
0250248
NGNG引数に持っていった関数の変数名が同じだと、その後、main内に戻ってきたときにその変数の値は受け継がれるのですか?
int yakugime(int te[])
{
int flush = ch_flush(te);
printf("%d\n",flush);
int straight = ch_straight(te);
printf("%d\n", straight);
return 0 ;//実験のため0
}
とかくと、6行目にエラーが出て、試しに4行目を//消してやってみると
なぜかch_flush内で配列teをいじってそのまま、
ch_straightにもっていかれるのです
たぶんこの二つのエラーは何か関係があるんじゃないかと思うのですがどうでしょうか?
0251デフォルトの名無しさん
NGNGいや、全く関係ない。
変数の宣言はブロックの先頭で行ってみればいいんじゃない?
それと、関数の引数の配列はポインタと同じなので、関数側でいじってるなら、それが反映される。
もちろん、それは変数名とは何の関係もない。
0252デフォルトの名無しさん
NGNG迅速な対応ありがとうございました
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGポインタ配列を拡張して、その拡張した先にstrcpyで文字列をコピーさせたいのですが、
アプリケーションエラーが出てしまい、strcpyが実行出来ません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char **ppData;
int i;
if ((ppData = (char **)malloc(sizeof(char *))) == NULL) {
exit(1);
}
ppData[0] = "aaaaaaaa";
// 配列を拡張
if ((ppData = (char **)realloc(ppData, sizeof(char *) * 10)) == NULL) {
exit(1);
}
// ココで落ちる
strcpy(ppData[1], "bbbbbbbb");
strcpy(ppData[2], "cccccccc");
strcpy(ppData[3], "dddddddd");
strcpy(ppData[10], "kkkkkkkk");
free(ppData);
return 0;
}
どのようにすればstrcpyを行うことが出来るのでしょうか…?
0255デフォルトの名無しさん
NGNGstrcpy(ppData[1], "bb..."); とあるが、ppData[1] はどこ指してると思う?
0256デフォルトの名無しさん
NGNGポインタの配列の領域は確保しているが、文字列が入る領域を確保してない。
0257デフォルトの名無しさん
NGNGご指摘ありがとうございます。
配列を拡張した後にcallocをすることで、
ちゃんとstrcpyを実行する事が出来ました。
ありがとうございました。
0258252
NGNGいろいろ考えたのですが、どうもよい方法が思いつきません
一回一回、初期化しなおすか、配列を使わないでやるぐらいしか・・・
0259デフォルトの名無しさん
NGNG受け取る側でコピーしてやればいいわけで。
0260デフォルトの名無しさん
NGNG配列はポインタとして関数に渡されるってのは基本だよ。ちゃんと覚えとかな。
無理やり値渡ししたかったら構造体にすると言う手もあるが。
書き換えを許さない場合、C++ならconst修飾して関数側で必要に応じコピーを
作るってのが普通。
pureCはどうするのか分からん(w
0261デフォルトの名無しさん
NGNGboostを勉強してみようと思い、サンプルを探してコンパイルしてみようと思ったのですが
boost関連の.hppファイルと、rpcnsip.hファイルを同時にインクルードしようとすると、
rpcnsip.hの構文エラーがでてコンパイル出来ません。
どちらとも別々に使った場合はエラーが起こりません。
例えば
#include <rpcnsip>
#include <boost/config.hpp>
int main() {
return 0;
}
のようにするとエラ−が起こります。
どなたか解決方法を御存知ないですか?
0262デフォルトの名無しさん
NGNGエラーについて相談するときはエラーメッセージ貼れよ。
0263デフォルトの名無しさん
NGNG0264261
NGNG>>261にかいてあるコードをそのままコンパイルしたときのエラー(一部)です。
エラー E2303 c:\Borland\Bcc55\include\rpcnsip.h 30: 型名が必要
エラー E2139 c:\Borland\Bcc55\include\rpcnsip.h 30: 宣言に ; がない
エラー E2303 c:\Borland\Bcc55\include\rpcnsip.h 31: 型名が必要
エラー E2139 c:\Borland\Bcc55\include\rpcnsip.h 31: 宣言に ; がない
エラー E2303 c:\Borland\Bcc55\include\rpcnsip.h 32: 型名が必要
エラー E2139 c:\Borland\Bcc55\include\rpcnsip.h 32: 宣言に ; がない
エラー E2141 c:\Borland\Bcc55\include\rpcnsip.h 40: 宣言の構文エラー
エラー E2238 c:\Borland\Bcc55\include\rpcnsip.h 47: 'RPCNSAPI' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\rpcnsip.h 40: 一つ前の 'RPCNSAPI' の定義位置
エラー E2141 c:\Borland\Bcc55\include\rpcnsip.h 47: 宣言の構文エラー
エラー E2238 c:\Borland\Bcc55\include\rpcnsip.h 55: 'RPCNSAPI' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\rpcnsip.h 47: 一つ前の 'RPCNSAPI' の定義位置
エラー E2141 c:\Borland\Bcc55\include\rpcnsip.h 55: 宣言の構文エラー
エラー E2238 c:\Borland\Bcc55\include\rpcnsip.h 63: 'RPCNSAPI' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\rpcnsip.h 55: 一つ前の 'RPCNSAPI' の定義位置
エラー E2141 c:\Borland\Bcc55\include\rpcnsip.h 63: 宣言の構文エラー
0265デフォルトの名無しさん
NGNGそらboostのせいじゃなくてrpcnsip.hに必要なマクロが定義されないだけ。
0266デフォルトの名無しさん
NGNGでは、どのように対処すればいいのでしょうか。
試していたところ、windows.hでも同様なエラーが発生しました。
rpcnsipやwindows.hと.hppファイルを同時にインクルードしなければ、
エラーは発生しないようなのですが…。
0267デフォルトの名無しさん
NGNG>>261にwindows.hを追加すれば、うちではエラーは出ないで正常にコンパイルできる。
やはり問題はboost以外にありそうな気がするが。
BCCの設定は間違いないのか?
あと、自分から情報は提示しようとせず、ソースすら晒さずに
「どのように対処すればいいのでしょうか」と聞かれても、
「知るかボケッ、自分で考えろ!」としか回答のしようがないのだがね。
0268デフォルトの名無しさん
NGNG算術関数は浮動小数点に対して定義してあるので整数 x に対して用いる場合
std::sqrt( float(x) );
とすると良い、とあるのですがこのfloat(x)というのはどこで定義されていて、
どれほど可搬性があるのでしょうか。またstatic_cast<float>(x)とはどう違う
のでしょうか。
0269デフォルトの名無しさん
NGNGfloatじゃなくてdoubleじゃないんかという話はさておき。
それはC++標準のキャストの1つ。
変換先が組み込み型であればstatic_castと同じ。
0270デフォルトの名無しさん
NGNG多謝。組み込み型なら同じなんですね。fortranみたいな表記でびっくりです。
ちなみにC++標準ライブラリ チュートリアル&リファレンス by Nicolai M. Josuttis
では float, double, long doubleにオーバーロードされているのでこれらの内
ならどれでもOKとして、サンプルではfloat(x)を使っていました。
Anjuta使っているのですが、Anjutaの型表示では確かにdoubleと表示されます。
0271デフォルトの名無しさん
NGNG最適化してくれると思うけど。
0272デフォルトの名無しさん
NGNGだからオーバーロードされてるって言ってるだろ。
0273デフォルトの名無しさん
NGNGあるクラスが異常にでかくなってきたので、
サブクラスを作って分割したいのです。
特殊な処理を行う機能を追加したら、そのサブルーチンが
相当な量になってしまっとるような状況なんですよ。
できればその処理だけ別のクラスを作ってやりたいの
ですけど、いい方法教えてください。
0274デフォルトの名無しさん
NGNGオーバーロードされているといっても、
たいていの実装のfloat版sqrtはfloat型の引数を
doubleにキャストしてdouble版sqrtを呼んでいるだけだから、
最適化が無ければint→float→doubleの2度手間になってしまう。
0275デフォルトの名無しさん
NGNGそのクラスの設計を最初からやり直す。
0276デフォルトの名無しさん
NGNG最適化を施しても精度をfloat相当まで落とす処理が無駄な手間になる。
0277デフォルトの名無しさん
NGNGそれだけじゃ、誰も答えられんだろ。
といって、その膨大なクラスのソースコードを見せられても読む気しないし。
デザパタでも勉強してください。
0278デフォルトの名無しさん
NGNG書籍「リファクタリング」を読む。
0279デフォルトの名無しさん
NGNGそういう書込みが、doubleとfloatの速度が同等もしくはdoubleの方が速いという誤解を蔓延させている。
0280デフォルトの名無しさん
NGNG脊髄反射でレスしないで、ちゃんと元発言からの話の流れを把握してから書き込もうね。
だれも速度の話はしていないよ。>>268-272 >>274 >>276
0281デフォルトの名無しさん
NGNGそりゃ一概に言えないだろ…特定環境の話をしているのかね?
ちなみにうちのWindowsマシンの浮動小数演算コプロセッサは80bitバスで、
それ以下のbitの場合はすべてそれにキャストして演算されているようですが…。
あ、もしかして、短い分だけキャッシュに乗りやすくなるとか、
メモリのフェッチ時間が短くなるとか、そういう話かな?
それならほぼ正しいかも知れず…。
0282デフォルトの名無しさん
NGNGあー、あれは違ったか。
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGやっぱりchar配列?
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG環境はVC++6.0です
string型を格納するlistを含むclassを作ってコンパイルすると
エラーはでないんですがWarningが出てきます.
warning C4786: '?$reverse_bidirectional_iterator@Viterator@?$list@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$
allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@AAV43@PAV43@H' : 識別子が '255' 文字に切り捨てられました (browser 情報内)。
こんなのが何個も出てきます.
ソースはこんな感じです.
#include <list>
#include <string>
using namespace std;
class Base
{
list<string> lst;
list<string>::iterator p;
};
解決方法はありますか?
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGスマソ
いままでlistとかstringで調べてた
>>290 thx!!
0292デフォルトの名無しさん
NGNG>>288
BMPデータで一ドットが32bitだったりする場合ね
24bitだと逆に遅く…
0293デフォルトの名無しさん
NGNGいや、場合によるだろ。
ピクセル単位の処理じゃないかもしれないし
次のピクセルのバイトはとっておくとかもできる。
0294デフォルトの名無しさん
NGNG1割引になる」というプログラムを作成してみたのですが上手くいきません。
何処がおかしいのか教えていただけませんか?
#include <stdio.h>
main()
{
double fuel;
double rate;
double charge;
printf("給油量");scanf("%d",fuel); /*給油量の入力*/
printf("石油の単価");scanf("%d",rate);
if(fuel<=20){charge=fuel*rate;} /*給油量が20L以下の時*/
else{charge=(fuel-20)*rate*0.9+rate*20;} /*給油量が20Lを超える時*/
printf("料金%d",charge); /*料金を出力*/
}
0295デフォルトの名無しさん
NGNGscanf関数の使い方
0296デフォルトの名無しさん
NGNGprintf("石油の単価");scanf("%d",&rate);
&をいれなおしてやってみましたがどうしても料金が0円
になってしまいます。
0297デフォルトの名無しさん
NGNG%dじゃなくて%lf
0298デフォルトの名無しさん
NGNGdouble型ですもんね^^;
解決しました、ありがとうv
0299デフォルトの名無しさん
NGNGstatic int a = 1;
// b.h
#include "a.h"
static int a = 2;
aが再定義されていますというエラーがでるのですが、
staticにするとそのファイル内だけで有効になって、他のファイルで定義されていても被らないんではないんですか?
0300デフォルトの名無しさん
NGNG#includeは単純にファイルを挿入するだけで、それはプリプロセッサの仕事。
コンパイラはそんなことは知らない。
0301デフォルトの名無しさん
NGNGなるほど。ありがとうございます。
0302デフォルトの名無しさん
NGNG以下のように演算子を定義しました。(部分抜粋です)
friend UPair<T1, T2> operator +(const UPair<T1, T2> &up1, const UPair<T1, T2> &up2){
UPair<T1, T2> ret;
ret.m_t1 = up1.m_t1 + up2.m_t1;
ret.m_t2 = up1.m_t2 + up2.m_t2;
return ret;
};
friend UPair<T1, T2> operator -(const UPair<T1, T2> &up1, const UPair<T1, T2> &up2){
UPair<T1, T2> ret;
ret.m_t1 = up1.m_t1 - up2.m_t1;
ret.m_t2 = up1.m_t2 - up2.m_t2;
return ret;
};
コンパイルすると
fatal error C1001 : 内部コンパイラエラー が出てしまいます。
operator-の部分をコメントアウトすると無事通るのですが、何が悪いのでしょうか?
おしえてください。
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNGそれを見る限りでは問題なし。
はて、ソースのほかの部分に問題があるのか、VCの問題なのか。
0305デフォルトの名無しさん
NGNGどうもです。
他の部分と言うと
メンバ変数とコンストラクタ、デストラクタ、
POINTとSIZEへのキャスト演算子ぐらいしかないです。
operator-の部分に何かあるらいと思い、
動作(差を取って返す)はそのままで"operator *"や"operator /"に変えたらコンパイルできました。
また、operator-であっても、第2引数をintやdoubleなど変えれば通ります。
駄目元でリビルドもしました。
なんか非常に特殊な状況のような気がしてきました...
0306デフォルトの名無しさん
NGNGVC7.1ではすんなり通りました。VC6.0固有の問題かと思われます。
0307デフォルトの名無しさん
NGNGVC6は部分特殊化はサポートしてないはず。
0308302
NGNGWinXP+6.0Enterpriseにsp6を導入したところ無事通りました。
お騒がせしました。
ところで部分特殊化とは何でしょうか?是非教えてください。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGこんなのかな、特殊化の中でもまだTとかの残っているもの
template <typename T>
struct Isvector{
enum{value=0};
};
template <typename T,typename A>
struct Isvector<std::vector<T,A> >{
enum{value=1};
};
template <int i,int j>
struct static_gcd{
enum{value=static_gcd<j,i%j>::value};
}
template <int i>
struct static_gcd<i,0>{
enum{value=i};
}
0311デフォルトの名無しさん
NGNG特殊化 ≒ テンプレートのオーバーロード
部分特殊化 ≒ ↑の型が任意である余地の残っている場合
...でなんとか理解できてるのでしょうか?
自信は無いです_| ̄|○
0312デフォルトの名無しさん
NGNGテンプレートのオーバーロードという表現は分かってる人になら通じるし、
そういう見方も出来るのは分かるんだけど、テンプレートとオーバーロードは
本質的に異なるものなので、あんまりその表現はお勧め出来ない。
0313デフォルトの名無しさん
NGNGC++なんですが、たとえば下のようなクラスを定義します
class test{
private:
int a:
int b;
public:
test(void){
a = 0;
b = 0;
}
test(int c,int d){
a = c;
b = d;
}
};
で、宣言の際に
test myclass(1,2);
としてconstructorに値が流れた場合、メモリはどのように確保されていくのですか?
constructorが呼ばれた段階でcとdが作られるのはわかるのですが、aとbが生成される
タイミングがわかりません。どなたか教えてください
0314デフォルトの名無しさん
NGNGもし、コンストラクタが呼び出された後に、aとbが生成されるとしたら
コンストラクタの中で何が起こりますか?
0315デフォルトの名無しさん
NGNGint f
{
test myclass(1,2);
}
このように書いたときは、
1.fのスタック上にaとbとを格納する領域が連続して確保される。
2.この領域へのポインタが引数の1, 2とともにtestのコンストラクタに渡される。
3.testのコンストラクタは、渡されたポインタを元にa, bに代入する。
0316デフォルトの名無しさん
NGNG>>313の環境も聞かずにわかることなの?
0317デフォルトの名無しさん
NGNGnewを使って2次元配列を確保しました。
その中に値を入れたいのですが、
{{1,1},{1,1}}のように一回ですべての配列に値を入れる方法はありますか?
0318デフォルトの名無しさん
NGNG完全にコンパイラに依存することですか?
C++でクラスを使うと遅くなるって聞いたんですが、
本当なんですかね。
0319デフォルトの名無しさん
NGNGenumはdefineと違ってプリプロセッサが処理するわけではないということのようですが、
では、実際にどんな風に処理されるのでしょうか?
例えば、
enum{ hoge, foo, bar};
と書いておいて、
int n;
n = bar;
とすれば、nは2になるわけですけれど、hoge、foo、barは変数ではないし、defineを使う場合のように、
プリプロセッサが具体的な数字に置き換えてしまうわけでもないわけですよね。
hoge、foo、barは変数でないけれど、それぞれをconst変数のようにメモリの一部に格納すれば
実現可能ですが、それもなんだか変な感じがします。
単に疑問に思っただけで、具体的に何か困っているわけではないのですが、
気になったので、識者の方々、ご存知でしたら教えてください。
#環境はgccでもVCでもbccでもなんでも良いです。
よろしくお願いします。
0320デフォルトの名無しさん
NGNGhoge, foo, barは「定数」。
コンパイラにとっては"bar"も"2"も似たような物だと言えば分かりやすいかな?
実際多くの環境でn=2;と書いた時と全く同じコードが生成されると思う。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG今、C言語の本の定数のところを読み返してみました。
なるほど、enumが定数表現の一種と思ったらすんなり理解できました。
本の最後の方にあるプリプロセッサのところを読むころには
最初の方に書いてあった定数のことが頭から抜けていた私です。
どうもありがとうございました。あーすっきりした。
>>321
えぇ?これは私へのレスですよね?
うーん、なんか難しすぎて意味が良くわかりません。
もすこし勉強してきます。
0323デフォルトの名無しさん
NGNG#include <stdio.h>
int
main(argc,argv)
int argc;
char *argv[]
{
printf("Hello");
}
0324デフォルトの名無しさん
NGNG無い。
0325デフォルトの名無しさん
NGNGコンソールプログラムなんですが、
http://venus.aez.jp/uploda/dat/upload6824.lzh
[←][↓][SPACE] や、[↓][→][SPACE] の同時押しを実行すると、
押されているにもかかわらず押されていないと判定されるキーが
出てきてしまいます。
Win9xでは問題なく動作していたのですが、XP に乗せ替えた途端に
このような状態になってしまい、どうしたものかと。皆さんの環境では
問題なく動作しますでしょうか。お手数でなければご報告よろしく
お願いします。
プログラムを終了するときはエスケープキーを押してください。
0326デフォルトの名無しさん
NGNGmain()
{
int im;
im=0;
while(im<11){
printf(" HELLO ");
im = im+1;
}
}
このプログラムを実行する際に「HELLO」が表示されたりされなかったり
して不安定なんですがなぜでしょうか?
環境のせいだと思うんですが・・・
自分はXPをつかっていてエディタはCPad、コンパイラはLSI C-86
です。
0327デフォルトの名無しさん
NGNGprintf(" HELLO \n");
0328デフォルトの名無しさん
NGNGだめでした;;
本来なら表示されているはずのところに何も表示されません、
行間はちゃんととられてるのでプログラム自体は正常に動いている
ようですが・・・
0329デフォルトの名無しさん
NGNG0330326
NGNGわけわかりません・・・^^;
0331デフォルトの名無しさん
NGNG漏れんとこじゃ表示できたんだけどなぁ。
printfで表示できない環境なんて聞いたことはないけど、
絶対ないとは言い切れないから、それかもね。
0332326
NGNGほんとに突発的になるんですよ・・・、
文字の表示に関する設定のどこかだと思うんですが・・・
0333デフォルトの名無しさん
NGNGあんまり意味ないとは思うけどprintfのあとに
fflush(stdout);
とかつけてみたら?
0334デフォルトの名無しさん
NGNGえと、326ではりつけてるプログラムが実は説明用のプログラムで
本当はもっと複雑なプログラムで問題が起こっているなんて事は
ないですよね。
もっと複雑なプログラムでprintfでデバッグなんかしてて、
プログラムを実行すると途中で落ちちゃうんだけど、
どのprintfも実行されてないなぁ…おかしい!
なんてことはないですよね。
もし、「実は正にそうですた」ならば上で書いたfflushは有効かもしれません。
printfで出力したものは、実はバッファにためられてあとでまとめて出力されます。
プログラムの正常終了時にはちゃんと吐き出されますが
異常終了時には表示されないこともあります。
fflushをつかえば、その時点で出力されます。
なんてえらそうに書いちゃったけど、もし「そんなの知っていますよ」だったらごめん。
0335デフォルトの名無しさん
NGNGきときと - CPad - Q&A
http://hp.vector.co.jp/authors/VA017148/pages/cpadqanda.html#lsiconnt
0336デフォルトの名無しさん
NGNG#include <stdio.h>
int token[] = {387892,37428737,37468763};
void main(void){
int i;
char[1024] buf;
for(i=0;i <(sizeof(token)/sizeof(int));i++)
sprintf(buf,"%d%s",token[i],buf);
printf("%s\n",buf);
}
tokenを逆順に繋げていって文字列にしたいんですがうまくいきません。どうしてでしょうか?
0337デフォルトの名無しさん
NGNGchar[1024] buf; ←
0338336
NGNGなぜがコピーできなかったので自分でかいてミスしていました。
それにしてもどうしてでしょうか?
0339デフォルトの名無しさん
NGNG最終的にbufの中はどうなってほしいんだ?
0340339
NGNGこうか?
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGint token[] = {387892,37428737,37468763};
void main(void){
int i;
char buf[1024];
for(i=0;i <(sizeof(token)/sizeof(int));i++)
sprintf(&buf[i],"%d\0",token[(sizeof(token)/sizeof(int))-(i+1)]);
printf("%s\n",buf);
}
0344336
NGNGそういう事なんですが・・・
>>343さん
どうもそのソースコードでもうまくいかないんです。
33387892となってしまいます;
ちなみに私の環境はLinuxコンパイラはgccです。本当に済みません;
0345326
NGNGそれぞれの追加してみたところなんとか安定動作するようになりました^^
fflushっていうのは初耳でしたが、次からは付けてみようと思いますv
ありがとうございました♪
0346デフォルトの名無しさん
NGNG一般の二次元配列がhoge[y][x]とy、xの順番である以上、
同じようにy、xの順番にしたほうがいいと思うのですが、
なぜ逆になっているのでしょうか。
0347デフォルトの名無しさん
NGNG世間一般では、(x, y)というようにxを先行させるのが常識だねぇ。
二次元配列とは意味が違う。
0348デフォルトの名無しさん
NGNGif(!x)という式は
xが0の時にif文が実行され、
xが0でないときは実行されないと解釈して宜しいでしょうか?
0349デフォルトの名無しさん
NGNG>他スレから誘導されてきました。宜しくお願いします。
誘導されたとは言え、向こうで書かれたことを頓着してないわけね。
>if(!x)という式は
それは式ではない。
>xが0の時にif文が実行され、
>xが0でないときは実行されないと解釈して宜しいでしょうか?
質問の意味が、下の例の場合にどっちが実行されるかと言う意味ならば、
xが0ならば 1のブロックが実行され、そうでないなら2のブロックが実行される。
if (!x) {
/* 1 */
} else {
/* 2 */
}
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG}/*ここまで*///だと思う
0353デフォルトの名無しさん
NGNGMicrosoft Visual C++ Toolkit 2003がDL出来る様になったので、PSDKなど
揃えBCC5.51でコンパイル出来なかったDXSDK8.1のサンプルのコンパイルに挑ん
でみました。が、その殆どがReleaseビルドではwarning吐きながらもコンパイル
できるのですがDebugビルドではリンカーエラーでEXEファイル作ってくれません。
ネットで検索したところ、Libファイルの取り込み忘れ等あるのですが、サンプル
付属のMAKEファイルをNMAKEで処理しているので、どうしていいのか解りません。
解る人おられましたら教えてください。
以下エラーです。
Microsoft(R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
Warning: cannot find "donuts3d.dep"
link.exe @C:\TEMP\nm5D.tmp
LINK : warning LNK4224: /PDBTYPE is no longer supported; ignored
d3dfont.obj : error LNK2019: unresolved external symbol __ftol2 referenced in fu
nction "public: long __thiscall CD3DFont::InitDeviceObjects(struct IDirect3DDevi
ce8 *)" (?InitDeviceObjects@CD3DFont@@QAEJPAUIDirect3DDevice8@@@Z)
donuts.obj : error LNK2019: unresolved external symbol __ftol2 referenced in fun
ction "protected: void __thiscall CMyApplication::ConstructMenus(void)" (?Constr
uctMenus@CMyApplication@@IAEXXZ)
.\Debug\donuts3d.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : リターン コード '0x460'
Stop.
よろしくお願いします。
0354325
NGNGしれません。今度はバイナリだけです。多少変更しました。
http://www.uploda.net/anonymous/etc2/upload23193.lzh
たとえば、[←][↓]を同時に押した状態のまま、[スペース]を
押したとき、画面の "スペース" の横に○印が表示
されますでしょうか?
0355デフォルトの名無しさん
NGNGd3dx.libのリンクし忘れ
0356325
NGNGDirectXは使っていなくて、GetAsyncKeyState() API でキーの状態を
チェックしています。>>355さんの環境でも、[←][↓]を押したまま
[SPACE]キーを押しても、スペースキーが押されていないような反応を
示しました?
0357デフォルトの名無しさん
NGNG>>355は>>353へのレスだと思われ
0358デフォルトの名無しさん
NGNGあと、キーボードの同時押しは組み合わせによって認識されないキーがあったはずだけど。
0360325
NGNG>キーボードの同時押しは組み合わせによって認識されないキーがあったはずだけど
やっぱりそういうのがあるんですか…。
これらのキーを同時に処理しなければならないので困ったもんです。
こちらももう少し調べてみます。ほかにも何か情報をお持ちの方が
いらっしゃいましたらお願いします。
0361デフォルトの名無しさん
NGNGキーボードを変えるしかない。
0362353
NGNGMAKEファイルの記述はこうなっています。
CPP=cl.exe
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32"
/D "_DEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
LINK32=link.exe
LINK32_FLAGS=d3dx8dt.lib d3d8.lib d3dxof.lib dinput.lib dxguid.lib winspool.lib oleaut32.lib
uuid.lib dxerr8.lib ole32.lib winmm.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib
advapi32.lib shell32.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\dmboids.pdb"
/debug /machine:I386 /out:"$(OUTDIR)\dmboids.exe" /pdbtype:sept
d3dx.libをd3dx8dt.libの前に追加しますと、
d3dx8dt.lib(d3dxmath.obj) : error LNK2005: _D3DXColorAdjustContrast@12 already d
efined in d3dx.lib(d3dumath.obj)
↑同様ERRORが山ほど出る
d3dfont.obj : error LNK2019: unresolved external symbol __ftol2 referenced in fu
nction "public: long __thiscall CD3DFont::InitDeviceObjects(struct IDirect3DDevi
ce8 *)" (?InitDeviceObjects@CD3DFont@@QAEJPAUIDirect3DDevice8@@@Z)
music.obj : error LNK2001: unresolved external symbol __ftol2
.\Debug\dmboids.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : リターン コード '0x460'
Stop.
と違うエラー出る様になり、d3dx8dt.libより後に追加しますと、最初のエラー
と同じです。
DirectXサンプルの他に、ポリゴン扱うサンプルも試してみたのですが、
error LNK2019: unresolved external symbol __ftol2
このエラーで失敗します。
symbol __ftol2はlibc.libだと思うのですがよく分かりません。
コンパイラオプションに/QIfistを追加するとビルドできるのですが・・・・・・
0363デフォルトの名無しさん
NGNGDebug版ランタイムって確か入ってないと思ったけど…。
0364353
NGNGDXSDKインストールする時にDebug版で入れました。
libc.libはNODEBUG、DEBUG版はlibcd.libで、無ければコンパイル時に
CAN NOT OPEN FILEになります。(コンパイラオプション/MLdで自動読み込み
なのでMAKEファイルに記述してもしなくてもよい)
LIBPATH:通ってますしDirectXのファイル不足は無いと思います。
が、libcd.libにsymbol __ftol2があるかどうかと言う事なら、私には解りません。
DXSDKサンプルではない、他のポリゴン扱うサンプルでのReleaseビルドでも
LNK2001: unresolved external symbol __ftol2
が出て先へ進めない現状です・・・・・・
0365353
NGNGnction "public: long __thiscall CD3DFont::InitDeviceObjects(struct IDirect3DDevi
ce8 *)" (?InitDeviceObjects@CD3DFont@@QAEJPAUIDirect3DDevice8@@@Z)
これってsymbol __ftol2 が見つからないってエラーでは無く、
public: long __thiscall CD3DFontが見つからないって事でしょうか?(^^;
0366デフォルトの名無しさん
NGNGなんか、VCTK2003は標準ランタイムが足りないんじゃないかって思えてきた。
0367353
NGNGおっしゃる通りVCTK2003だけでは全然足りません。
これにPSDK+DDK+サービスパック等で不足補いました。
見かけ上ファイルは揃いましたが、バージョン違いによるライバラリ等の整合性
が取れないのかもしれません。
ですが、DXSDKサンプルはReleaseでならビルド出きるわけでなんとも。
0368デフォルトの名無しさん
NGNGまあSDKとか足りてないのは当然なんだけど。
LINK : warning LNK4224: /PDBTYPE is no longer supported; ignored
とかあることだし、デバッグのサポートが無効になっていて
標準Cランタイムもデバッグ版は付属してないとか言うオチじゃないの?
0369デフォルトの名無しさん
NGNGVisual C++ Toolkit 2003付属コンパイラ(cl.exe)は、一部サポート無効とか
の廉価版では無く、制限の無い、一番上の物らしいです。
オプション/pdbtype:はVC6にはあった様ですがVC7からは変更になった様で、
デバッグサポートが無効というわけではないようです。
標準Cランタイムも全て揃っているのか私にはわかりません。
手掛かりは__ftol2とコンパイラオプション/QIfistでしょうか。
0370デフォルトの名無しさん
NGNG閉じるものを作りたいのですがどうすればいいのでしょうか
Cです。よろしくお願いします
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG言われてもわからないのでリンク張ってくださるとありがたいです
0373デフォルトの名無しさん
NGNG自分で探せ。探せないのなら、DirectXなんか使えない。
0374デフォルトの名無しさん
NGNGプ
0375370
NGNGお願いします
0376デフォルトの名無しさん
NGNG諦めろ。
0377デフォルトの名無しさん
NGNGOpenGLでGLUTってことでいいのかな?
void displayfunc(void)
{ /* 何らかの文字を表示 */ }
void keyboardfunc(unsigned char key, int x, int y)
{ if (key == 033) exit(0); }
...
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowPosition(0, 0);
glutInitWindowSize(glutGet(GLUT_SCREEN_WIDTH), glutGet(GLUT_SCREEN_HEIGHT));
...
glutCreateWindow("hoge");
glutKeyboardFunc(keyboardfunc);
glutDisplayFunc(displayfunc);
...
return 0;
}
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGC++でコンソールアプリを作成しています。
プログラム実行時の設定を外部ファイルに持たせようとしていますが
ファイル構造や読み取り方などの定石はあるのでしょうか?
今設計しているファイル構造は以下のようなものなのですが
aaa=111
bbb=222
文法チェック、必須項目チェック、範囲チェックなど
結構手間がかかってしまいます。
0380デフォルトの名無しさん
NGNGwinな環境なら API も充実してるし、iniファイル使えよ
0381デフォルトの名無しさん
NGNGもし私と同じプロジェクトに参加している別会社の人なら、
その辺りはライブラリ化する予定がありますので半月ほどお待ちください。w
0382デフォルトの名無しさん
NGNGお願いしちゃっていいですか?
半月ですか?時間かかりすぎです。
1日でできませんか?
すでに火が出ているのはご存知でしょう?w
0384デフォルトの名無しさん
NGNGWatcom C/C++ 11jというコンパイラを手に入れました。
これでWindows2000、XP上でI/Oポートをいじれるexe,dll等は作成出来るのでしょうか
差し迫っての問題ではないのですが、やはりVisual C++でしか開発できないのでしょうか
0385デフォルトの名無しさん
NGNGこういうの有ったし、できるんじゃない?
0386デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1035882599/
0387デフォルトの名無しさん
NGNGそれ、NT系の2000/XPじゃ使えない様な気がする。
>>384
exeやdllだけでI/Oポートに直接アクセスすることはOSとして不可能。
Watcomだからっていう問題ではない。
フリーのドライバが有るのでそれ使え。
0388384
NGNGI/Oポートに直接アクセスするのはドライバ開発になるのですね。
0389デフォルトの名無しさん
NGNGcin >> n;
while( n <= 3 ) { cin >> n; }
説明するまでもないですが、入力した整数が3以下ならば
入力し直すというだけのプログラムです。もちろんnに適当な
整数を入力すれば期待通りに動きます。
ところでnの値を入力する際に、例えば5.4とすると
小数点以下は切り捨ててn=5として扱われるわけですが、
上記のプログラムにおいて例えばn=1.5と入力すると無限ループになってしまいます。
「n=1.5と入力したらn=1となる、よってwhileの条件はtrueとなる」と、ここまでは
いいのですが、何故whileの中の cin >> n を無視してしまうのかがわかりません。
どうしてこうなってしまうのでしょうか?
なお Borland C++ を使用しています。
0390デフォルトの名無しさん
NGNGnはintなので、cin >> n とやる時、1.5と入力するとストリームバッファ
に ".5" が取り残されてしまう。すると次のcin >> nは必ず失敗して
しまい永久ループになる。(nの値が変化しない)
従ってcinのストリームの状態を常に調べる必要がある。failbitが
立ったりして(cin)が0になったら、whileをbreakするなどの処置が
必要。
0391370
NGNGGLUTっていうのをもってない場合はインストールしなきゃいけませんね
それだったらDirectXを入手する方がいいでしょうか?
っていうか[ファイル]メニューの[新規作成]なんてどこにあるんだ
さっぱり分からん(つД`)
0392デフォルトの名無しさん
NGNG#include <iostream>
int main()
{
int n;
std::cin >> n;
while (n <= 3) {
if (!(std::cin >> n)) {
std::cout << "An error has occured in operator >>" << std::endl;
break;
}
}
}
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGこんなのとか。
#include <iostream>
#include <sstream>
int main(){
using namespace std;
string buf;
int n=0;
while(1){
cout << "4以上の整数を入力してください:";
getline(cin,buf);
istringstream(buf) >> n;
if(n >= 4){
break;
}
n=0;
}
cout << "入力された数字は"<<n<<"です\n";
return 0;
}
0395389
NGNG非常に勉強になりました。
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG言ってみればC++でcinはCで言うところのscanf()、getline()+stringstrem
はCで言えばfgets()+sscaf()みたいなイメージだな。中身はもちろん全く
違うが。
>>393の例外は気に入った。
0398デフォルトの名無しさん
NGNG付けすぎw
0399デフォルトの名無しさん
NGNG関数のローカル化ができるものがあるなら教えてください。
0400デフォルトの名無しさん
NGNG0401399
NGNG具体的にお願いします。
Cで長編物を作っていて管理に困ってC++を始めたのですが、
難しくて挫折してCで同じようなことが出来ないかなと思い質問しました。
2chのスレ数でいうと、c:cpp=2:1とCの方が多いのですが、
プログラマーの人はCで長編物を作る場合、
管理でどういう所に気をつけるのですか。
0402デフォルトの名無しさん
NGNGナイスな一行目だな
0403デフォルトの名無しさん
NGNG具体的もなにもstaticについて調べれば分かることだが。少なくともC++の経験があればな。
static int func(void){;}とすると、このfunc関数は内部リンケージを持ち、他のファイルからは呼び出せなくなる。
ゆえに同じものを複数のファイルに書いても衝突しなくなる。
0404デフォルトの名無しさん
NGNG無理してC++のあらゆる機能を使うこともないと思う。
0405399
NGNG>>402
(^^)
>>403
できました。publicは普通の関数、privateはstaticを付ける
みたいな感じでいいのですか。
>>404
ローベルさんのページhttp://www1.kcn.ne.jp/~robe/で
勉強したのですが、基本的なあらゆる部分でCと違う感じがします。
0406403
NGNG0407デフォルトの名無しさん
NGNG本の1,2冊くらいは読んどけ。
0408デフォルトの名無しさん
NGNGこんな失礼な奴に。
0409399
NGNG0410河豚 ◆8VRySYATiY
NGNGどなたか、ご教授下さいませんか?
0411デフォルトの名無しさん
NGNG>具体的にお願いします。
ワロタ
0412デフォルトの名無しさん
NGNGその変数はそのクラスの型の変数すべてで共有なのか
それとも個別に用意されるのか教えてください。
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNGそれがわかってたら>>412のような疑問は湧いてこない。
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGインスタンスを定義したらだね。
>>415
違う。
0418デフォルトの名無しさん
NGNG> インスタンスを定義したらだね。
クラスのインスタンスのことじゃないよね?
0419デフォルトの名無しさん
NGNG> ひとところに関数を定義するなら、inlineが無効のような気がするのです。
クラス定義内に関数の定義を書いた場合はinlineとみなされるので、
違いが無いように見えるかもしれない。
もしくは、最適化をかけていなければインライン展開されないので、
違いが無いように見えるのかもしれない。
0420デフォルトの名無しさん
NGNGstatic inline int x;
とは書けんぞ。
0421デフォルトの名無しさん
NGNGクラスのstaticメソッドの話が混ざってるぞ。
0422デフォルトの名無しさん
NGNG混じってるのはお前の頭の中だけ。
0423デフォルトの名無しさん
NGNG0424353
NGNGあれやこれやとやったところ、使っていたlibcd.libに__ftol2が入っていなかった
というなんともおそまつな話。(だって知らんもんよぉ
それと、ネットうろついててVC6のライブラリ群見つけたので、それでコンパイル
してみたところ__ftol2入ってないlibcd.libでコンパイル出来ました。
VC6の(当時の?)ヘッダでは__ftolになるみたいです。
助言下さったかたありがとう御座いました。
0425デフォルトの名無しさん
NGNGSTLの解説書によると<cstdref>で「サイズの単位に使われる符号無しの型」
とありますが、#include <cstdref> としなくてもコンパイルが通ります(g++)
またsize_tはどの程度使用が推奨されるものなのでしょうか。
for( size_t i=0 ; i<vec.size() ; i++) ではなく、やはりループごとに
for( std::vector<vector<string> >::size_type i=0 ; i<vec.size() ; i++)
と書くべき? (typedef を使わなければ)
0426デフォルトの名無しさん
NGNGsize_t って unsigned int の typedef だし
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG具体的にお願いします。
0430デフォルトの名無しさん
NGNG大きさを表すのに適切な符号無し整数なら、別にunsigned intでなくてもいい。たとえばunsigned long intでもいい。
0431デフォルトの名無しさん
NGNGcstdrefじゃなくてcstddefな予感。
0432425
NGNG仰せのとおり、cstddrefです。
/usr/include/string.hではsize_tを使うために#include <stddref.h>
とやっていました。(C用ですが)
結局>>430氏の言うあたりで結論なんですね。Thanks.
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGa%b
でaやbを負の数にした場合どういった風に定義されているのでしょうか?
0435デフォルトの名無しさん
NGNGif (a % 100 > 0)
a += 100 - (a % 100);
例えばこのように書いたときに、
"%":不正な左オペランドです。
とでてしまうのですがどのようにかえるべきでしょうか。
%を同じように使ってもでないときもあるのです。
0436デフォルトの名無しさん
NGNGimplementation-defined
Programming languages --- C++ (FINAL DRAFT)
http://www.kuzbass.ru/docs/isocpp/expr.html
5.6 の 4 を参照。
0437デフォルトの名無しさん
NGNGC++では確か処理系定義。
0438437
NGNG0439デフォルトの名無しさん
NGNGaの型は整数型だろうな?
0440434
NGNGありがとうございます。けど英語わからないです・・・・
どういうことなのでしょうか?ほんとに教えて厨ですけど説明していただけるとうれしいです
0441デフォルトの名無しさん
NGNG"C FAQ" "処理系定義" でググれ。
0442412
NGNG0443デフォルトの名無しさん
NGNGC++でのsize_tはstdの中にあるんで、std::size_tなどとしなければならないよ。
0444デフォルトの名無しさん
NGNG規格の英語なんて大した英語じゃないぞ。
この程度の英語が読めないようじゃ、この先も苦労する。
まずは辞書引きながらででも読んでみて、その解釈が正しいのかどうかを
問うべきじゃないのか?
…と釘を刺しつつ
>441
それだとヒットしなさげ
>440
ここを参照しる!
ttp://seclan.dll.jp/c99d/c99d05.htm#dt19990607
なお、C++ では 14882:2003 においても処理系定義のままである。
0445デフォルトの名無しさん
NGNGいくら規格の英語がたいした事無いとはいえ
量に圧倒されるのが、日ごろ英語に触れてない日本人なわけで。
斜め読みも出来ないから、目的の情報を拾いにくい。
0446デフォルトの名無しさん
NGNGまあガンガレ>>434
0447434
NGNG大学でプログラミングの勉強に困ったらまた来ます。そのときはどうぞよろしくお願いします。
英語もこれから勉強しようと思います!でわ!
0448デフォルトの名無しさん
NGNGwindows2000sp3のバージョンが知りたいんです。
VCで取得するところはうまくいったんですけど、肝心の比較数値がわかりません。
ぐぐったら簡単に見つかるだろうとタカをくくってたら意外とみつからなくて…
自分でインストールして調べるしか無いかな…
もしわかったらおねがいすます!
0449デフォルトの名無しさん
NGNGSPがついていようがなかろうが、2195
0450デフォルトの名無しさん
NGNGレスありがとうございます。
マ、マジですか?
もしかして判別不可能ですか?
0451デフォルトの名無しさん
NGNG指数計算するpowみたいな関数と、
ランダムな数値を得る関数ってありますか?
0452デフォルトの名無しさん
NGNGOSVERSIONINFOEXのwServicePackMajor/Minorをみればいい
0453デフォルトの名無しさん
NGNG何をしたいのかいまいち理解できないのですが、powとかrandとかでは
いけない理由はなんでしょうか?
0454デフォルトの名無しさん
NGNGすいません。最近C++の勉強を始めたんですが、
Cの時に使ってた、mathみたいなライブラリはC++で使ったらいけないのかな、と思いまして。
全然使ってもいいんでしょうか?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGそんなんあったんですか!
アリガ�d!
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGよく知りもしないのに指摘して恥をかく好例。
0460デフォルトの名無しさん
NGNG全然まじですよ?
0461デフォルトの名無しさん
NGNG2 残りなく。すっかり。
3 (俗な言い方)非常に。とても。
[大辞泉]
で、肯定?
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNGすっかり使ってもいいんでしょうか?
非常に使ってもいいんでしょうか?
とても使ってもいいんでしょうか?
...ありえな〜い
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGはい、低脳
次。
0466デフォルトの名無しさん
NGNG(または本をお願いします)
0467デフォルトの名無しさん
NGNGありがとうー。
言葉には気をつけます。スマソ
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=C%E8%A8%80%E8%AA%9E%E5%85%A5%E9%96%80&ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja
0470デフォルトの名無しさん
NGNGさらしあげ
0471デフォルトの名無しさん
NGNG全然OK
0472デフォルトの名無しさん
NGNGありえないが、流行語みたいなもん。
好んで使ってるジャリタレが消えれば消えるでしょ。
0473デフォルトの名無しさん
NGNGありえない
0474デフォルトの名無しさん
NGNGノ-―-`、ヽ`ヽ-.、 i./ ,./-‐` """´'ー 、! `ヽ、
_,,/ , _---、`ヽ\ヽヽ、 ノ./, - ' ´  ̄ ̄`ヽ_ \ ヽ!
, ‐'´ r-.  ̄ヽ、 \'、ヾ、\ ー'´イ/ _,. ィ,.、 `ヽ、ヽ i l
. / .l トヘ ヽ. ヽ ', ヽ ,ク´ __,. - '/'´ ヽ ヾヽl !
/ / /l '、 \ ヽ、 \. ヽ ヽー'´7i , ,-'-`!/´ ヽ''ニ-`、 ',、〈
l / / /'´ヾヽ、_ ,\ ヽ_,. -‐、 ', ヽ、 ヽ//./ / __ __ i、 l ヾ
リl // / _,,.\`く' `´<ヽ、 \ ヽ \ ーヽ.,.イ ', '´`ヽ r '' ヾ_,!l !l .!
!l l l / l 、/"`ヾヽ\ ,' ‐''ヾー-、.\ ヽヾーi、l _l =! (゚;) (゚;) l= ! _/ !
l V./ゝ !=! (゚;) ` (゚;) l=/_7ー、=,ヽ`!.ir、.', ' ,_,. i 、_ ,、`./'r、i !
ヽll 'ヽ!! , -- l -- 、 `/r,ヽ ヽ! !ヽ'_,.! __ i_ ) / !
ヽヘ、!l,! , - 、 __,. -.、 ,i.l) ノ !. ヽ.ヘ. !' ヽ ノ、')´ .!
_ゝlヘ !'´ .i /、リ) ,' `ヽ、 ヽ _ ノ / ./ i
`>'=ノ , `ヽヽ l,.ィ_、_\_ i ,.. - 、,-、.`_iー--‐.´レ' /,.へ、 _ ',
〃 /,ヽ、r'こl` ー-‐ ',l´'Yヽヽ `ヾ´ l/ '´ /´ ! / ,// l ヽ!
l / !. ( ` ー=-´‐ ) ! '、 ! / _l_. ! / // ./_,,L i
七_ 七_ l l 二 ナ ゝ i ヽ |! |!
(乂 ) (乂 ) ノ /し cト  ̄ ̄ ̄ ヽ ・ ・
0475デフォルトの名無しさん
NGNG「全然」を肯定に用いた例が芥川龍之介の文章の中に
存在するらしい(未確認)。
>>468
独擅場(どくせんじょう)は手偏。もともと独壇場(どくだん
じょう)は独擅場(どくせんじょう)の誤読である。
0476デフォルトの名無しさん
NGNG別に夏目漱石も森鴎外も普通につかっとるが。
とりあえず大辞林は漱石の文例を収録してた。
>以下大辞林から引用
ぜんぜん 【全然】
(2)あますところなく。ことごとく。全く。
「一体生徒が―悪るいです/坊っちゃん(漱石)」「母は―同意して/何処へ(白鳥)」
>引用終わり
高島センセも『お言葉ですが』でこのネタを扱ってたことがありましたな。
もちろん、「全然は肯定でも使う」って話。
0477デフォルトの名無しさん
NGNGことごとく使ってもいいんでしょうか?
全く使ってもいいんでしょうか?
...やっぱりありえな〜い
0478デフォルトの名無しさん
NGNGいま、クラスのメンバ関数を作っているのですが、メンバ関数の作り方で悩んでいます。
戻り値でエラーコードを戻し、引数に参照型の変数を持つやり方はめんどくさいと思いました。
戻り値でコピーを渡しつつエラーを判定する何か良い方法はありませんでしょうか?
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGお返事ありがとうございます。
その方法は思いつきませんでした。ありがとうございます。
しかし、intなどを戻す場合は新しいクラスを作らなければならないのでしょうか?
それもちょっとめんどくさいような気がしました。
なにかないでしょうか・・・。すみません。
0482デフォルトの名無しさん
NGNGintの全ての範囲が必要なら無理。範囲外の値をエラーとする。
負の値がエラーを表すのはよくある。
0483デフォルトの名無しさん
NGNGあるいは例外をスローすろ。
0484デフォルトの名無しさん
NGNGなぜに例外を使わない?
0485デフォルトの名無しさん
NGNGお返事ありがとうございます。
やはりそのやり方が一番簡単だと思います。
しかし、int現在はマイナス値を返す可能性があるので使えないかもです。
intではないデフォルトのクラス自体を返すときも難しそうです。
>>483
お返事ありがとうございます。
例外ですか…。まだ勉強中です。
この中では例外が一番良いのかもしれませんね。精進いたします。
ありがとうございました。
0486デフォルトの名無しさん
NGNGメンバ関数は戻る時にエラー格納メンバ変数を書き換える
0487デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/488135843X/
http://www.amazon.co.jp/exec/obidos/ASIN/4881358448/
といっしょに、「珠玉のプログラミング」か「プログラミング作法」を買おうかと思っているのですが、初心者には早いですか?
0488デフォルトの名無しさん
NGNGすみません。まだ一度も例外を使ったプログラムを書いたことが無いのです。
いかにも難しそうなので後回しにしていましたが…使うしかないのかも。
0489デフォルトの名無しさん
NGNG>「珠玉のプログラミング」か「プログラミング作法」
理解できれば一人前だ
0490デフォルトの名無しさん
NGNGアイディアありがとうございます。
それはいいですね。
しかし、この機会を例外を使うチャンスと考えて、変更箇所は多いですが一度例外を使ってみます。
失敗したら、そのアイディアを使いたいと思います。
0491デフォルトの名無しさん
NGNG理解できればということは、結構難しいのですか?
倉本は、かなり初心者向けのようで、間にクッション挟まないといけないかも。
0492デフォルトの名無しさん
NGNGグローバルなエラー変数を使うという方法もある。
errnoのように。あまり薦められないが。
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGerrnoですか。聞いたことはあるのですが一度も使ったことがないのでよくわからないです。
勉強します。ありがとうございました。
0495デフォルトの名無しさん
NGNG初期化に使う以上はconstでなければいけないと思うのですが、constだと初期化の時しか
値が設定できないので、入力の受付ができません。
別に入力を受け付けてからその値でconstなら問題ないのですが、この値は複数の外部関数
が参照するため、大域変数として置きたいとも考えています。
何か解決方法はありませんか?
0496デフォルトの名無しさん
NGNGvectorのテンプレート引数は何?
「cinに入力された数」に対応するにはvectorインスタンスの数?それとも一つのvectorの要素数?
「初期化に使う」って、何の初期化に何を使うことの話?「constでなければいけない」のは何?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGそもそも配列と違って vector (の要素数は)定数でなくともかまわない。
ただ vector の要素数は可変だから
最初に要素数を指定する変数をグローバルで使いまわすのはおすすめできない。
メンバ関数 resize() や size() で vector 内部の要素数にアクセスしたほうがいい。
0499デフォルトの名無しさん
NGNGconst int n=5;//これをcinから取得したい
hoge_array arrays[n];
ってなことを考えてるような気がするんだが・・・
これだと配列をnewで確保するか、std::vector<hoge_array>を使えってのが答になる。
0500デフォルトの名無しさん
NGNGひょっとして宿題スレで最短経路を聞いてた人?
向こうでも軽く答えたけど、vector はそもそも動的配列だから、
要素数を指定するのに const 性は必要ない。
つか、(思いつくままに書いた)漏れの書き方が悪いんで、
グローバルにおかないように書き直した方がいいね。
0501デフォルトの名無しさん
NGNGオープンするときに、ファイル名に動的に数字を置くことって出来ますか?
たとえば「test_01.txt」というファイルを作成してオープンする場合だったら
ofstream file( "test_01.txt" );
とするのではなく
int n;
cin>>n;
ofstream file( なんらかの処理 );
という感じで、ファイル名をいじりたいのですが。
よろしくおねがいします。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGstringstream とか。個人的には sprintf 使ったほうが楽だと思うけど。
0504デフォルトの名無しさん
NGNGファイル数がすくなくて、ソースの寿命も短いんだったら
name[6] = '0' + ( i / 10 );
name[7] = '0' + ( i % 10 );
とかいう力技もありかな。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGC++オンリーに拘る理由は余り無いよ、逆のケースならあるけど
0508デフォルトの名無しさん
NGNGよりセキュアなプログラムを組むために、いろいろ教えてください。
BOFのと、修正ポイントとか
0509デフォルトの名無しさん
NGNGscanf使わないように徹底しててもsprintfなんて使ったら片手落ちもいいところだ。
0510デフォルトの名無しさん
NGNGstrncpy() は
1) 末尾が '\0' 終端されない可能性がある
2) あまったバッファは放置するのではなく、必ず '\0' で埋められる
ので、単に strcpy() を置き換えるのに使うのはダメでしょ。*BSD から strlcpy() 移植して
使うべし。
0511デフォルトの名無しさん
NGNGその用途ならsprintf()で充分じゃん。
0512デフォルトの名無しさん
NGNGせめて snprintf() に
0514デフォルトの名無しさん
NGNGバッファオーバーフロー
0515マイク ◆yrBrqfF1Ew
NGNG0516デフォルトの名無しさん
NGNG高々一つの文字列をコピーするならsprintf(dest, "%.*s", len, src)で充分。
0517デフォルトの名無しさん
NGNG分かりづらいのが問題。
0518デフォルトの名無しさん
NGNGバッファオーバーフローといえば、「NOP」という言葉が連想されるけど
その論理なら NO になってしまう罠w
0519デフォルトの名無しさん
NGNGあと printf() 系は str* 系関数に比べると重いし、async thread safe では
ないので使える場所に制約がある。普段はあまり問題にならんけど。
0520デフォルトの名無しさん
NGNGstr*もスレッドセーフである保証は無い
printf系ももちろんそう、FILE*に適応する場合のみ顕著化する可能性がある
スレッドセーフで問題になる代表例は、strtok
0521デフォルトの名無しさん
NGNGprintf() はともかく snprintf() はふつー thread safe になってると思うぞ。
たとえば Solaris 9 だと、snprintf() と同時に setlocale() を呼び出さない
限りは MT-Safe と規定されてる。
http://docs.sun.com/db/doc/817-0692/6mgfnkuql?q=sprintf&a=view
str*() 系が Async-Signal-Safe っつーのは私の勘違いだった。
0522デフォルトの名無しさん
NGNG日本語のインストールドキュメントありませんか?
0523デフォルトの名無しさん
NGNG参照スレ
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/
0524デフォルトの名無しさん
NGNGデータの個数はファイル読み込みまでわからないような場合、
どのようにコードを書けばいいか教えてください。
具体的にしたいことは、M×N行列のデータを書き込んだ、
以下のようなフォーマットのファイルを読み込みたい、ってことです。
1: M N // マトリクスの行・列数
2: ○ ○ … ○ // N個のデータ を H[0][0] 〜 H[0][N-1] へ
:
M+1: ○ ○ … ○ // ↑ 上記をM行繰り返し
可変引数とかを使ったことないもので・・・
あまり環境依存はないかもしれないですが、
いちおうコンパイラは gcc です。
0525デフォルトの名無しさん
NGNG各データ長が同じなら、行頭nバイトを固定で確保してそこにデータ数をいれとくとか
読み込んだ1行のバイト数をデータ長で割るとか
0526524
NGNG> >>524
> 各データ長が同じなら、行頭nバイトを固定で確保してそこにデータ数をいれとくとか
> 読み込んだ1行のバイト数をデータ長で割るとか
すいません、データ型は double or float を想定していて、
データ長は不定です。
なおデータの区切りはスペースを想定してます。
0527デフォルトの名無しさん
NGNG1.ファイルの最初に全ての行の行毎のデータ数を書き込む。
2.行データの終わりを示す数字を決めて、それを書き込む。(最初のスペースまでとかね)
3.値データをなにも考えずスペースに挟んで一気に書き込む。
0528527
NGNG0529デフォルトの名無しさん
NGNGデータ本体にスペースと同じコードがあったらやばいくないか?
抽出方法は知らんが
0530デフォルトの名無しさん
NGNG何も include しなくてもコンパイルできるのはなぜですか?
main()
{
printf("Hello, World\n");
}
0531デフォルトの名無しさん
NGNGCだから。
いちおう聞いておくけど、コンパイルできるのがおかしいと思う理由は?
0532デフォルトの名無しさん
NGNGが、どのような意味なのか、教えてくださいまし。
0533デフォルトの名無しさん
NGNGプリプロセッサに指定したファイルをインクルードするように指示する。
0534デフォルトの名無しさん
NGNGうちのGentooでは通らんが?
test.cpp: In function `int main()':
test.cpp:3: error: `printf' undeclared (first use this function)
test.cpp:3: error: (Each undeclared identifier is reported only once for each
function it appears in.)
0535デフォルトの名無しさん
NGNG_wsetexit(_WINEXITNOPERSIST);
もしかしたら普通に自作関数なのかもしれませんが・・・
参考までにコンパイルエラーメッセージ
: warning C4013: 関数 '_wsetexit' は定義されていません。int 型の値を返す外部関数と見なします。
: error C2065: '_WINEXITNOPERSIST' : 定義されていない識別子です。
0536デフォルトの名無しさん
NGNGなんでC++にしてるの?
0537大学1年(国立)
NGNG初心者には何がお勧めですか?
プログラマーはシステム考えるほうならいいけど、作成のほうだと40代になると使い物にならなくかると聞いたのですが どうなんでしょうか?
まだ簡単な計算しかできません。
いつかは世界大学プログラミングコンテストやハッキングコンテストに出てみたいです。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG画面がどんどんスクロールして、次々に文字列が表示されますが、
画面をスクロールしないで、定位置に文字を表示させるにはどうしたら良いですか。
例えば、linuxは起動時にディスクのチェックをすることがありますね。
このチェックの進み具合が画面の右に%表示されますが、
これは数字が書き換えられても同じ場所に表示されています。
これと同じ事がしたいです。
よろしくお願いします。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGちょっとマンドクサイガ
0542デフォルトの名無しさん
NGNGfor (i = 0; i < 100; i++) {fprintf(stderr, "%3d%% completed.\r"); sleep(1);}
0543デフォルトの名無しさん
NGNGオレは530じゃないけど、printfの定義はどこにあるの?
0544デフォルトの名無しさん
NGNGint *func()
っていう関数で
int data[10];
return data;
とすると、問題のあるポインタ変換って出るんだけど、
dataは、&data[0]と同じ意味だよね?
こういう時どうしたらいいの?
いちいちmallocするの?
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
/ '''''' '''''' ヽ
| |
| (●), 、(●) |
| ,,ノ(、_, )ヽ、,, |
| `-=ニ=- ' |
! `ニニ´ .!
| |
.\ ______________ /
0547546
NGNG激しく誤爆した
0549デフォルトの名無しさん
NGNG1 いちいち malloc する
2 int data -> static int data にする
3 ワーニングは無視する。ただし戻り値は使わないこと
0550デフォルトの名無しさん
NGNGわかりました。
でも教えてください。
int data[10]と宣言した場合、そのブロック中で
dataと書くことと、&data[0]と書くことは同じじゃないんですか?
0551デフォルトの名無しさん
NGNG関数内に書いた
int data[10];
は、関数抜けたら無効になるわけだが。
で、いちいちmallocするって、大丈夫か? ちゃんとfreeもするのか?
普通はstaticだろ。
0552デフォルトの名無しさん
NGNG>dataと書くことと、&data[0]と書くことは同じじゃないんですか?
そんなことは今のお前さんにはどうでも良いことだ。
0553544
NGNGstaticはなんかやなんで、その関数の引数から渡せばいいですよね。
0554デフォルトの名無しさん
NGNG考え直せ。
0555デフォルトの名無しさん
NGNGこの場合、インクルードするということは、printfのプロトタイプ宣言を
そのファイルにとりこむことが主な目的になるわけですよね。
でも関数はそのプロトタイプ宣言がなくても、その実体があればいいのです。
だって、実体があればリンクできるからね。
つまり、あなたのプログラムをコンパイルしたときに、gccはprintfの実体を
みつけることが出来たので、エラーを出さずにコンパイルを完了することが
出来たわけです。
じゃあなんで、stdio.hをインクルードするのかというと、
関数のプロトタイプ宣言があるとその関数の引数チェックが出来るんですね。
もし、間違った型の引数を与えてたりすれば、gccはそこでエラーを出してくれます。
だから、インクルードした方が確実なのです。
ということを最近知りました。
嘘言ってたら、だれか指摘して!
0556544
NGNG配列がポインタに読みかえられるのは関数の実引数のときでいいんですか?
今回だと、ただの配列だからポインタには変換できんと。
0557デフォルトの名無しさん
NGNG今回問題になっているのは、
func()内にあるdata[10]はfuncから戻ったときにはすでに破棄されているから
funcの戻り値は使いようが無いってこと。
data[10]破棄されないようにするにはstaticにするか動的に領域を確保するかせよと。
個人的には int *func() のインタフェース自体を変更すると思うけど。
配列名がポインタに読み替えられるのは一部の例外を除き常に。
0558デフォルトの名無しさん
NGNGはぁ?
だから、今回のは、配列だのポインタだのとは 全く関係ないのだが。
0559544
NGNG普通の自動変数と同じような扱いってことですよね。
ブロック抜けたら消滅するっていうことで。
なんか配列とポインタがごっちゃになってました。
出直してきます
0560デフォルトの名無しさん
NGNG>普通の自動変数と同じような扱いってことですよね。
同じような扱い?
「扱い」じゃなくって、普通の自動変数そのものだぜ。
っていうか、「普通の」って言葉も変だがな。
0561544
NGNGそうっすね。
つまり自動変数だと!
「普通の」っていうのは、オレが配列とポインタの関係をあさっての方向で認識していたからで。
配列はあくまで配列なんだと、ここにきてわかりますた。
0562デフォルトの名無しさん
NGNGstrcat(str[], )の右側に何か入れればできますか?
0563sage
NGNG0564デフォルトの名無しさん
NGNG答えるならstr[]も直してやれよ。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGそれだけじゃあなぁ・・・
C++でstring使ってるならシンプルな解答で済むんだが。
Cだと、もうちっと前提がわからんとな。
strに一文字追加できる領域があるんなら strcat(str, " "); でも良いけど。
0567デフォルトの名無しさん
NGNGhttp://homepage1.nifty.com/kaneko/nfight.htm 物理演算とIKベースの格闘ゲーム(になる予定)
http://homepage1.nifty.com/kaneko/missile.htm ミサイルデモプログラム
逮捕された
winny製作者が過去に作っていたフリーソフト
漏れプログラムとかしたことないから分からんけど
これってすごいの?それともこれくらい作れて普通?
物理とかの知識も要りそうなんだけど
0568デフォルトの名無しさん
NGNGプログラムとかしたことない奴がなんでこの板にいるの?
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNG泣いた
0572デフォルトの名無しさん
NGNG配列についてなんですが、
1bitだけ使う方法はありませんか?
cでお願いします。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGコンパイルして実行してみても値がまったく変わってないようなんです
いろいろ試してみたんですけど、どうしても値が増えないようで
どうすればいいんでしょうか?
0575デフォルトの名無しさん
NGNG書き忘れましたがBCC++5.5です
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNGint hoge(int x)
{
return ++x; //お前、ここでreturn x++;って書いていただろ
}
こういうこと?
0578デフォルトの名無しさん
NGNGソース晒せ。
素人がどこで勘違いしているかなぞ、ソース見な誰にもわからん。
0579デフォルトの名無しさん
NGNG#include <cstdlib.h>
#include <ctime.h>
class r{
public:
int a(int point),b(int point),c(int point),d(int point),e(int point),f(int point),g(int point),h(int point);
};
int r::a(int point){
int aa;
cout<<"\n\n日本の首都は?\n\n";
cout<<"1.東京\n";
cout<<"2.京都\n";
cout<<"3.秋葉原\n\n";
cout<<"回答を入力してください:"<<endl;
cin>>aa;
if(aa!=2){return ++point;}else{return point;}
};
int r::b(int point){
int bb;
cout<<"\n\n日本の首相は誰?\n\n";
cout<<"1.小泉\n";
cout<<"2.巨泉\n";
cout<<"3.正日\n\n";
cout<<"回答を入力してください:"<<endl;
cin>>bb;
if(bb==1){return ++point;}else{return point;}
};
0580574
NGNGint r::c(int point){
int cc;
cout<<"\n\nアメリカの大統領は?\n\n";
cout<<"1.ブッシュ\n";
cout<<"2.低脳\n";
cout<<"3.クリントン\n\n";
cout<<"回答を入力してください:"<<endl;
cin>>cc;
if(cc!=3){return ++point;}else{return point;}
};
main(){
srand((unsigned)time(NULL));
int point=0;
int q;
int i;
r question;
for(i=0;i<3;i++){
q=rand()%3;
cout<<point<<q<<endl;
switch(q){
case 0:question.a(point);break;
case 1:question.b(point);break;
default :question.c(point);break;
}
}
cout<<"あなたの点数は"<<point<<"/3点です。"<<endl;
return 0;
}
0581デフォルトの名無しさん
NGNG乱数と関数の使い方覚えようと思って作ってました
0583デフォルトの名無しさん
NGNGつっこみがいのあるプログラムだな(w
関数は間違いなく値を(条件に合えば)増やして返しているが、
返された値を無視してるじゃないか。
0584デフォルトの名無しさん
NGNG関数呼び出しただけでmainのほうの値も変わってると勘違いしてたみたいです。
0585デフォルトの名無しさん
NGNGコンパイルしてやってみた
入力形式を例示してけろ
よくわかんねーよ
0586デフォルトの名無しさん
NGNGstruct Card1{
int num
int mark;
} mycard1;
初期化
for(int i=1;i<=4;i++){ //マーク
for(int j=1;j<=13;j++) {
mycard1.num = j; mycard1.mark = num;
}}
上を下のようにしたら初期化はどうなりますか?
enum Num {Ace, Two, ... , King};
enum Mark {Hearts, .... };
struct Card2{
enum Num num;
enum Mark mark;
} mycard2;
0587デフォルトの名無しさん
NGNG一体そのループで何をしたいのか見当もつかないが、
列挙型変数に整数値を代入したいという趣旨であれば、
Cならそのまま代入できるんじゃなかったと思ったが良く分からん。
C++だと、直接代入しても多分警告が出るだけでコンパイルはできるはずだが、
正式には mycard2.num = Num(j); みたいにする。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNGmycard1.mark = num;
0593デフォルトの名無しさん
NGNGputchar(str[yy]);
}
上の条件式で
警告:条件が常に真
と出てしまって困っています。
なぜなんでしょうか?
0594デフォルトの名無しさん
NGNGgcc、bcc32、cl
どれつかっても警告出ないよ。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGそうですけど・・・
unsigned int yy;
だとなにかいけないんでしょうか?
ちなみにコンパイラはbcc32です。
0597デフォルトの名無しさん
NGNGunsigned int がとれる範囲を考えてみれば分かるが、
0より小さい値には絶対にならない。
0598596
NGNGyyが0になってから1引くと
(2^32)-1になるってことですね
もし、どうしても上の条件で書きたければ
for(yy=101; yy>0; yy--){
putchar(str[yy-1]);
}
ということなんですね
ほんとうにありがとうございました。
0599デフォルトの名無しさん
NGNGクラスの静的変数を初期化するために、アプリケーション開始時に一度だけ実行したいコードはどこへ書けばいいんでしょうか?
やはりmain関数から明示的に呼び出す必要があるのでしょうか?
クラスの実装部分に書いてなんらかの宣言をすれば自動的に一度だけ実行されるようコンパイルされるような方法が欲しいのですが…
0600デフォルトの名無しさん
NGNGその静的変数をクラスにまとめて、コンストラクタで初期化するようにする。
0601デフォルトの名無しさん
NGNG#include<stdio.h>
int main(void)
{
int n1,n2,D;
puts("二つの整数を入力してください。");
printf("整数1;");scanf("%d",&n1);
printf("整数2;");scanf("%d",&n2);
if(n1>n2)
D=n1-n2;
printf("二つの整数の差は%dです。",D);
else
D=n2-n1;
printf("二つの整数の差は%dです。",D);
return(0);
}
else 文のところでエラーが出てしまいます。どこがおかしいのでしょうか?
0602デフォルトの名無しさん
NGNGない
>>クラスの実装部分に書いてなんらかの宣言をすれば自動的に
>>一度だけ実行されるようコンパイルされるような方法が欲しいのですが…
class A {
static int nData; // 宣言
}
int A::nData = 3; // 定義
クラスの静的変数は、C++がmainの実行前(というか、そのクラスが
最初にインスタンシングされる前)に初期化する規格になっている。
(グローバルの静的変数はmainの前)
0604デフォルトの名無しさん
NGNGif(n1>n2) {
D=n1-n2;
printf("二つの整数の差は%dです。",D);
} else [
D=n2-n1;
printf("二つの整数の差は%dです。",D);
return(0);
}
0605デフォルトの名無しさん
NGNGTypo なのかネタなのかはっきりしろよ。
> } else [
^^^^
0606デフォルトの名無しさん
NGNG即答ありがとうございました。
コンパイルできました。
なぜ if文で{ や}が必要なのかよくわかりません。
なくてもコンパイルできるときがあったのですが.....。
0607599
NGNG>>600
それだとmainから明示的に呼び出すのと同じじゃないでしょうか?
>>602
配列の要素を定数あるいは一定の数列で初期化したいのです。
たとえば
static int anArray[100];
をforループで初期化するとか…
まぁ、クラスごとに初期化用の静的メソド書いて
Class1::Initialize();
Class2::Initialize();
…
とかってmain関数に延々と書けば済むことなんですけど・・・
0608デフォルトの名無しさん
NGNG最近、shiftキーの調子が悪い・・・
>>606
君が読み間違ってる。
中括弧がいらないのは制御文の中身が短文の場合のみ。
0609デフォルトの名無しさん
NGNGコンパイラの立場になってみる。
}がなくて、どこまでがifの範囲とわかる?
{ }がないと、直後の1文だけを範囲とみなすしかないじゃん。
endifとかでもないかぎり
0610デフォルトの名無しさん
NGNG貴重な情報ありがとうございました。
これからいろいろとif文について詳しく学びたいと思います。
0611600
NGNGclass Class1
{
struct Initialized
{
Initialized();
int anArray[100];
};
static Initialized s;
public:
// ...
};
Class1::Initialized Class1::s;
Class1::Initialized::Initialized()
{
// 好きにしる。
}
0613デフォルトの名無しさん
NGNG条件演算子を使った文を書いているのですが、minに代入された値が利用できないとありコンパイルできません。どこがいけなかったのでしょうか?
#include<stdio.h>
int main(void)
{
int n1,n2,n3,min;
puts("三つの整数を入力してください。");
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
printf("整数3:");scanf("%d",&n3);
min=n1;
min = (n1<n2) ? n1 : n2;
min = (n2<n3) ? n2 : n3;
printf("三つの整数の最小値は%dです。",min);
}
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGエラーメッセージは
警告 W8004 条件演算子を利用した三つの整数値の最小.cpp 12: 'min' に代入した値は使われていない(関数 main() )
でした。
0616デフォルトの名無しさん
NGNGどうでもいいけど、struct Initializedってすげー違和感あるな
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGminに代入された値は利用されていない、ではないのか?
min = n1;
と代入しているが、次の行で、
min = (n1<n2) ? n1 : n2;
さらに、
min = (n2<n3) ? n2 : n3;
と代入しているので、上の行でminに代入された値はどこからも利用されてないよ、
というメッセージ。
ついでに言うと、このアルゴリズムは間違っている。
0619デフォルトの名無しさん
NGNGアルゴリズムの間違いを訂正してこう作りました。
#include<stdio.h>
int main(void)
{
int n1,n2,n3,min;
puts("三つの整数を入力してください。");
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
printf("整数3:");scanf("%d",&n3);
(n1<n2) ? min=n1 :min=n2;
(n2<n3) ? min=n2 :min=n3;
printf("三つの整数の最小値は%dです。",min);
}
11行目からエラーが出る始末です。もう泣きたくなります。
0620デフォルトの名無しさん
NGNG演算子について勉強し直せ。めちゃくちゃ。
ついでに、考え方を書いてみるので、その通りに作ってみな。
まず、二つの数を比較し、小さい方を覚えておく。
残りの一つと、先に比較した数を比較する。
0621デフォルトの名無しさん
NGNGなんでこうなっちゃうんだろう。不思議だなぁ。
0622デフォルトの名無しさん
NGNGまぁ、昔のチミも今のチミからみたらそんなもんじゃろ?
0623デフォルトの名無しさん
NGNG今もあまり変わって無くてな
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG「代入された値は利用されていない」はあくまで警告で、
それでコンパイル不能にはならない。
コンパイルできない原因は他にある。
あと、最小値を求めるアルゴリズムを考えるなら、
3数に限定しないで、配列とループを使った
アルゴリズムを考えたほうが勉強になるぞ。
つか、そのほうがたぶん簡単にかけるし。
0626デフォルトの名無しさん
NGNG問題解決できました。ありがとうございました。
こうするんですね。
#include<stdio.h>
int main(void)
{
int n1,n2,n3,min;
puts("三つの整数を入力してください。");
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
printf("整数3:");scanf("%d",&n3);
(n1>n2)?min=n2:n1;
(min>n3)?min=n3:n1;
printf("三つの整数の最小値は%dです。",min);
}
アドバイスありがとうございます。
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG本当にそのとうりです。
でも課題だったので仕方なく条件演算を使ってみました。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG>(n1>n2)?min=n2:n1;
>(min>n3)?min=n3:n1;
min = (n1 > n2)? n2: n1;
min = (min > n3)? n3: n1;
ね。
(なんでmin <= n3のときにn1を代入するんだろう)
0633デフォルトの名無しさん
NGNGmin = (n1 < n2) ? n1 : n2;
min = (min < n3) ? min : n3;
だと思うんだが・・・。
0634デフォルトの名無しさん
NGNG答えありがとうございます。
1,2,3、と入力して3が最小とは....。
代入に不安があったのであれこれやってみたのが間違いでした。
こんな問題に答えてくださってありがとうございます。
0635デフォルトの名無しさん
NGNGプログラム習得のポイントが言語仕様よりも
アルゴリズムにあるということを強く感じた。
0636デフォルトの名無しさん
NGNG同じ翻訳単位の中に置くことを前提できれば、
anArrayはinitializedのメンバにする必要は無いと思うけど。
どんなもんだろ?
0638デフォルトの名無しさん
NGNG回答Thx.
うーん、そうか。
自分はinitializeがClass1の中で定義されてるなら
anArrayの所属は気にしたことが無かったよ。
まぁ、確かに嫌なもんだといわれると気持ち悪く感じてくるな(w
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG配列の動作を確認しようとa[0]からa[4]まで0-4とカウントするように書いてみたのですが
実行してみると a[3] だけ 29637605 になってしまいしました。
ためしに桁数を変えてみると0-2までむちゃくちゃな答えになってしまいました
どこが悪いのでしょうか?
#include <stdio.h>
int main()
{
int a[5];
int tmp;
for (tmp = 0; tmp < 5; tmp++)
{
a[tmp] = tmp;
tmp++;
}
for (tmp = 0; tmp < 5; tmp++)
printf("a[%d] = %d\n" , tmp , a[tmp]);
return 0;
}
0642デフォルトの名無しさん
NGNG自己レスすみません。
とんでもない間違いをしていました。
そもそもtmp++が二度実行されていますね。
もう少し落ち着いてから書き込むべきでした。
失礼しました。
0643デフォルトの名無しさん
NGNG{
a[tmp] = tmp;
tmp++; /*この文不要*/
}
0644643
NGNG0645643
NGNG期待していたのはHIDEと表示されることなんですが、
妊DE
と表示されてしまいます。
なぜなんでしょうか?
int date_out(unsigned int date)
{
char date_o[4];
int j;
for(j=0;j<=3;j++){
date_o[j]=date%0x100;
date=date>>4;
}
for(j=3;j>=0;j--){
putchar(date_o[j]);
}
return 0;
}
0646デフォルトの名無しさん
NGNGこれでわ。
0647643
NGNGにしてみましたがだめです。
0648643
NGNGdate=date/0x100;
で意図したとおりに動きました。
質問なのですが、
date=date/0x100;
と、
date=date>>4;
は同じ意味ではないのですか?
0649デフォルトの名無しさん
NGNGcharは何ビット?
0651650
NGNG<<:>>の処理にかかった時間: 3.250000秒
*:/の処理にかかった時間: 28.765000秒
と、あきらかな違いがありました。
コンピューターにとっては<<>> */は同じ作業ではないようなのですが、
なぜなんでしょうか?
0652651の続き
NGNG#include <time.h>
int main(void)
{
clock_t start, end;
unsigned int i,t;
t = 1;
start = clock();
for(i = 0;i<0xffffffff;i++){
t=t<<31;
t=t>>31;
}
end = clock();
printf("<<:>>の処理にかかった時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
t = 1;/*一応念のため*/
start = clock();
for(i = 0;i<0xffffffff;i++){
t=t*0x80000000;
t=t/0x80000000;
}
end = clock();
printf("*:/の処理にかかった時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
return 0;
}
0653デフォルトの名無しさん
NGNG結果が同じでも、同じ処理ではない。
疑問に思ったらアセンブラで出力させてみ。
0654651
NGNGのサイトでアセンブラで出力させる方法はわかりました。
そんでもって.asmファイルもでてきたのですが、
ファイルの読み方がわかりません。
どこかよいサイトを紹介していただけませんか?
0655デフォルトの名無しさん
NGNGだから効率の良いコードか生成される。
t*0x80000000からは、t*0x12345678と大して変わらない効率のコードしか生成されない。
#コンパイラの最適化によってもっとマシなコードを吐かせる事は可能かもしれないが
0656デフォルトの名無しさん
NGNG載せたら解説くらいしないでもないよ。
0657651
NGNGに出力された.asmを貼っています
0658656
NGNGシフトの方は最適化で消えてなくなっている。
乗算除算の方は31ビット左シフト、31ビット右シフトに最適化されている。
そりゃぁ、速度差が出る訳だね。
一応擬似コードを書いておくと、
// シフト
eax = 0;
if (eax >= 0xffffffff) {
goto @3;
}
@2:
++eax;
if (eax < 0xffffffff) {
goto @2;
}
// 乗算除算
eax = 0;
if (eax >= 0xffffffff) {
goto @7;
}
@6:
edx = ebx;
edx = -edx;
edx <<= 31;
ebx = edx;
ebx >>= 31;
++eax;
if (eax < 0xffffffff) {
goto @6;
}
0659デフォルトの名無しさん
NGNGよく分からないので、危険だとおもわれるソースを張って見ます。
それを攻撃するようなプログラムを作って、どういう仕組か説明してもらえませんか・
-=-=-=-=-=-脆弱なプログラム-=-=-=-=-=-
#include <stdio.h>
int input(int day){
int d;
scanf("%d",&d);
printf("day - dは%d",day - d);
return d;
}
int main()
{
input();
return 0;
}
0660デフォルトの名無しさん
NGNGうーん、そのコードから脆弱なプログラムはできないな。
0661デフォルトの名無しさん
NGNGこの手の質問には回答してええもんかいな? (w
0662デフォルトの名無しさん
NGNGとりあえずそのプログラムを実行し、"echo"という入力でも与えてみて。
0663デフォルトの名無しさん
NGNGおそらくunsigned short の再定義だと思うのですが、STLの解説書にも
StroustrupのC++にも載っていません。
そのわりに -ansi -pedantic つけても警告出ずに通ってしまいます。
ぐぐるとVC++では定義されているようでMSのページがヒットします。
0664デフォルトの名無しさん
NGNGtypedef unsigned short ushort g++
で検索してみ。
0665デフォルトの名無しさん
NGNG0666ダミアソ
NGNG0667デフォルトの名無しさん
NGNGそれじゃ、なんの意味もねーじゃんよ
しったかぶってんなよ
0668デフォルトの名無しさん
NGNG>660 ヨメ
0669デフォルトの名無しさん
NGNGlong double nf=88;
printf("nf=%lf x=%d\n",nf,15+37);
return 0;
}
nfの値は意図した通り88が表示されるのですが、
xの値は52を表示してくれません。
何故でしょうか???
0670デフォルトの名無しさん
NGNGnf=88.000000 x=52
0671デフォルトの名無しさん
NGNG0672599
NGNG静的メンバの初期化の件ですが、>>611を参考にして以下のようにしました
ヘッダ部
class Ini;
class aClass {
static int anArray[××];
static .........
static void staticInit(){ 初期化コード;}
friend Ini;
};
実装部
class Ini{
public:
Ini(){aClass::staticInit();}
};
static Ini ini;
クラス自身のコンストラクタみたいな機能があればこんな事しなくて済むのに・・・
0673599
NGNGイチから考え直します…
0674デフォルトの名無しさん
NGNG>>611みたいに IniはaClassの中で定義しちゃったほうが安全だし、
static IniもaClassのメンバにすべき。
aClassのスコープ外からIniが見えたら不味いでしょ。
あと、IniをaClassのfriendにするならstaticInit()自体Iniに持たせてもいいような気がする。
この辺は好みの問題だけど。
0675デフォルトの名無しさん
NGNGなんでわざわざ劣化させるんだ?
0676デフォルトの名無しさん
NGNGあるライブラリのヘッダファイルを見ていたら、
下記の様に構造体の宣言がありました。
deviceを定義している宣言なのに、
宣言内部にdeviceが出てきます。
どういう事なのでしょうか?
どなたかアドバイスをお願いします。
struct device {
struct device *next, *prev;
char filename[PATH_MAX + 1];
}
0677デフォルトの名無しさん
NGNG典型的(古典的)なリンクリストの宣言。
>struct device *next, *prev;
はポインタであり、device構造体のサイズに関係なく、
サイズが固定である為問題ない。
0678デフォルトの名無しさん
NGNGstruct hoge *nexthoge;
・・・
つまり、hogemaxは???型のポインタ。
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG10回位読んでなんと無く分かりました。
後は「リンクリスト」で調べて見ます。
ありがとうございました。
>678
???型のポインタとは、環境によって構造体へのポインタの型が
変わるので???と記述したということしょでうか?
intだったりlongだったりするということでか?
0681デフォルトの名無しさん
NGNGごめんなさい。
君の言う通り、???はstruct hogeで・・・
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGありがとうございました。
0684デフォルトの名無しさん
NGNG#include <iostream>
#include <fstream>
#define COUNT_FILE "count.hoge"
int read_count() {
int count = 0;
std::ifstream ifs(COUNT_FILE);
if (!ifs.fail())
ifs >> count;
return count;
}
void write_count(int count) {
std::ofstream ofs(COUNT_FILE);
if (!ofs.fail())
ofs << count();
}
int main() {
write_count(++read_count());
return 0;
}
0685デフォルトの名無しさん
NGNG× ofs << count();
○ ofs << count;
0686デフォルトの名無しさん
NGNG自己参照構造体で調べれば良い。
0687デフォルトの名無しさん
NGNGありがとうございました
0688わー
NGNGVisual C++です!
0689デフォルトの名無しさん
NGNGスレ違い。
VisualC++スレへどうぞ。リンクは>>2を参照。
0690デフォルトの名無しさん
NGNGというか、言語に依存する以前の問題じゃん。
ようはなーんにも知らないし知る気もないんだろ。
宿題スレにいくか、氏ね。
0692デフォルトの名無しさん
NGNGコンパイラはgcc2.9です。
0693デフォルトの名無しさん
NGNGlibとか作ってるひといませんか?
common.hとcommon.cppみたいなのを作って配ろうと思ったんですけど
libのほうが良いみたいな意見もあって悩んでいます。
0694デフォルトの名無しさん
NGNGあー、確か、前居た会社では使ってたな。
std.lib(スタンダードの意)だったはず。
何がはいってたか忘れた(;´▽`A``其の頃は駆け出しだったもんで・・・
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG環境によりけり。
>>693
ライブラリの更新をちゃんと通知できる環境でないなら、
ソースのまま配布の方が安全。
但し、勝手にソースを変更する奴に注意。
0697692
NGNGありがとうございます。参考にします。
ついでに、チームで開発するのに参考になるようなサイトとか書籍ってありますか?
エラー処理とかログを吐く処理とか新人さんにふって、
これも共通のLIBみたいなものにしようと思うのですが。
0698デフォルトの名無しさん
NGNGclass A
{
B b;
};
class B
{
friend A;
};
0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG新人に共通処理は書かせない方が身のため。
結局書かせた本人が全部書き直す羽目になりかねない。
共通処理が綺麗にできているプロジェクトを見ると、大抵巧くいっている。
逆に共通処理に癖があるプロジェクトは大抵火の車になる。
0701697
NGNGよく考えたら、仰るとおりですね。
いままで共通処理がいまいち(外注さんがつくった)だったので、新プロジェクトでは
基本的な部品から見直そうと思ってるのですが、参考になるものがなく
苦戦してます。
0702デフォルトの名無しさん
NGNGclass A;
class B
{
friend A;
};
class A
{
B b;
};
0703698
NGNGそれぞれ別ヘッダだと、エラーになってしまうのですが、
そういう場合はどうすればいいのでしょうか?
自分としては、親ウィンドウ(classA)、子ウィンドウ(classB)として、
メニュー等は親ウィンドウ、描画等は子ウィンドウでそれぞれ管理したいのですが、
こういった場合、classBは自メンバーに対する外部用のアクセスメソッドを
必要な分だけ用意すべきなのでしょうか?
(メンバーをpublicにするというのは除いて)
0704デフォルトの名無しさん
NGNG>それぞれ別ヘッダだと、エラーになってしまうのですが、
それは多分ヘッダファイルが適切にインクルードされていないから。
>こういった場合、classBは自メンバーに対する外部用のアクセスメソッドを
>必要な分だけ用意すべきなのでしょうか?
外部からアクセスする必要があるものは当然そうする。
しかし、描画処理がclassBの中で完結するようにできれば、外部からのアクセスは
ごく限られたものになるはず。
0705698
NGNGありがとうございます。
最初は「適切にインクルード」の意味が理解できなかったのですが、
お互いが相手側のヘッダファイルをインクルードしていたのを、
片方だけにするとうまくいきました。
0706デフォルトの名無しさん
NGNG基底クラスから継承したクラスを使ってて
途中で基底クラスを切り離したくなった時はどうすれば良いのでしょうか?
0707デフォルトの名無しさん
NGNG全部書き直す。
ってか、基底クラスを切り離したくなるってこと自体、クラス設計がむちゃくちゃってこと。
一から全部作り直したほうがよい。
0708デフォルトの名無しさん
NGNG「基底クラスを切り離す」とはどのような操作のこと?
自分言葉で表現されては誰も理解できない。
きちんとプログラミングの用語を使って明確に質問しなさい。
0709デフォルトの名無しさん
NGNGそもそも切り離す機能がC++に備わってない以上
そういう操作のプログラミング用語は存在しないでしょ。
>>706
設計に問題が有ると思われるが、どうしても という事なら
使用してるクラスに切り離したいクラスのインスタンスを渡すようにすればどうだろうか?
これだったら出来なくも無さそうだし
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG俺なりに解釈してみた・・・
インターフェイスだけ継承して、実装するのはコンポジション化した別クラスとする。
やりたいことによっては、どちらのクラス、あるいは両方とも継承は使わない。
(まあ、直接使いたいクラスはポリモフィズムとかの関係で継承はするだろうが)
class A{// このクラスのインターフェイスを使いたい
virtual void Func();
}
class B : A{// とりあえず派生
A * m_pA;// Aから派生したクラスのインスタンスを指している。
C * m_pC;// Aから派生していないクラスのインスタンスを指す。
void Func(){// で、こんな感じに
if( m_pA != NULL )
m_pA->Func();
else
m_pC->Function();// 派生していないのでAにとらわれない処理
}
}
0713デフォルトの名無しさん
NGNG率直に聞くと、画像を扱うのは難しいでしょうか?画像ってのは写真とかじゃなくて、座標を用意して、
何か物体を座標上を動かしたりするようなもののことです。
シューティングの原型のようなイメージです
0714デフォルトの名無しさん
NGNG一時間もかからない。
GLUTによる「手抜き」OpenGL入門
http://www.center.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
0715デフォルトの名無しさん
NGNG>座標を用意して、何か物体を座標上を動かしたりする
それは環境依存と思われるので、
標準 C の勉強だけではいつまでたっても扱えないでしょう。
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG入口に立つのは簡単だけど、極めるのは大変と。
まぁ、なんでもそうだな。
0718デフォルトの名無しさん
NGNGんなもん、質問の趣旨を推測して回答してもどうにもならんと思うのだが。
何をしたいのか具体的に書け。>>706
0719デフォルトの名無しさん
NGNGこれは
買おうと思うんですが、 ぶっちゃけお勧めですか?
0720デフォルトの名無しさん
NGNGそのページ見てみたけど
> そこで本書では処理手順をPAD(問題分析図)で図式表現して掲載した。
> このPADを参照してプログラム作成に挑戦してほしい。
この一文で、地雷っぽい印象を受けた。
0721デフォルトの名無しさん
NGNG武田 20
梅吉 30
こう書かれたテキストファイルを読み込み、
最高値は 梅吉君 30です
最低値は 田中君 10です
平均値は 20です
と出力したいのですが、ifのところで、名前と数値を一緒に扱うにはどうしたらいいのでしょうか?
0722デフォルトの名無しさん
NGNGここらへんをもっと詳しく。具体的のどういう扱いがしたいのか。
0723デフォルトの名無しさん
NGNGwhile(scanf("%s %f",name,&x)!=EOF)
if(m<=x)
{
m=x;
}
m=xのとき、xが誰か?を調べたいのです。
0724デフォルトの名無しさん
NGNG何とかなるかもしれません。
もうちょっと頑張ってみます。
0725デフォルトの名無しさん
NGNGif (strcmp(name,"梅吉") == 0)
コピーしたいなら
strcpy(m_name, name);
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGstruct ScoreInfo
{
char name[256];
int score;
};
struct ScoreInfo score_info[32];
こんな感じの構造体を用意して score_info[] に点数を読み込む。
最高点・最低点をとったデータが score_info[] の何番目にあるかを
調べて、その番号 (仮に i としよう) を使って
printf("最高点は %sくん %d です\n", score_info[i].name, score_info[i].score);
とでも。
C++ なれてれば配列ではなく vector 使うとか、最大・最低点を探すのに
STL アルゴリズム使うとか工夫はいろいろあるが、まぁ大枠は変わらん。
0728デフォルトの名無しさん
NGNG構造体ですか・・・
ちょっと調べてみます。
皆さんの書き込みも参考にします。
どうもありがとうございました。
0729デフォルトの名無しさん
NGNG>回数指定反復
>後判定反復
>無限ループ
ダメだこりゃ。
0730デフォルトの名無しさん
NGNGint max,min;
char maxName[256],minName[256];
とかするだけだ
while(scanf("%s %f",name,&x)!=EOF)
if(max<=x)
{
max=x;
strcpy(maxName, name);
}
0731デフォルトの名無しさん
NGNG10年くらい前にアセンブラいじってたのですが、
object思考とかWindowsの波に乗り遅れてしまい、一から出直しです _| ̄|○
0732デフォルトの名無しさん
NGNGどの本がいいとは言い切れないが
”Visual C++”じゃなく、標準C/C++について解説してる本を買いましょう。
あと、Win32についてはリファレンス以外はどれも似たようなもんだと思う。
猫でも〜なページと、MSDNでも読んどけば問題ないんじゃないと。
Windowsのコアな実装について深く知りたいなら、Advanced Windowsを推しとくよ。
0733デフォルトの名無しさん
NGNG#ifndef GUARD_A_H
#define GUARD_A_H
#include "b.h"
class A;
class A{
public:
B test(void);
};
#endif
b.h
#ifndef GUARD_B_H
#define GUARD_B_H
#include "a.h"
class B;
class B{
public:
A test(void);
};
#endif
このようなファイルをコンパイルしたいんですが
識別名を宣言するのに型が指定されていないとエラーが出ます。
どうすればコンパイル出来ますか?
0734デフォルトの名無しさん
NGNGコンパイルしてどーするんだ?
なぞなぞやってるんじゃないんだから、ちゃんと動くプログラム書こうぜ。
設計からやり直せ。
0735デフォルトの名無しさん
NGNG色々やってみて多分問題はここだろうと思ったので質問しました
設計からやり直せというのは
やはりこんなコードとおりませんか?
0736デフォルトの名無しさん
NGNG前方宣言が逆になってるだけ
class B;
class A { public: B test(); };
0737デフォルトの名無しさん
NGNG前方宣言の意味を勘違いしていました。
ありがとうございます。
0738デフォルトの名無しさん
NGNGstrcpyって言うの使う以外は、自分の書いたのと同じプログラムでした。
strcpy使えばいいのか・・・どうもありがとう。試してみます。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGwhile (scanf("%d",&dat)!=EOF)
は^Zを入力すれば止まるというのは理解できるのですが、
while (scanf("%d",&dat)!=-9999)
としても意味がない、というのが何故なのかわかりません
^Zは-1を返すと書いてあったのですが
while (scanf("%d",&dat)!=-1)
もダメなんでしょうか?
0741デフォルトの名無しさん
NGNGscanfは、変換前にエラーが発生した場合にEOFを返すというだけ。
それ以外の場合は変換した項目の数を返す。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGありがとうございました。頑張ります。
0744デフォルトの名無しさん
NGNGそっくりそのままこれが表示されるんですが、どうしたらよいでしょうか
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGあれってなに?マゾですか?って話よ
0747デフォルトの名無しさん
NGNG趣味が小説書き
趣味が作曲
趣味が工作
...別に問題ない
0748デフォルトの名無しさん
NGNG趣味と仕事は別物だが?
0749デフォルトの名無しさん
NGNGなにかを創造するのは人間だけの特権だ。オナニーが趣味だなんて言ってる奴はサルだな
0750デフォルトの名無しさん
NGNG仕事がマゾの人もいるし。
0751デフォルトの名無しさん
NGNG奴そういないよ。会社で散々やってるのになにが悲しくて家で・・・
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNG秋葉系ブサキモヲタです
0755デフォルトの名無しさん
NGNG仕事のプログラムは動かす以外の作業が多くて大変だった。
そして今は辞めたくても辞められなくなった…。
職業プログラマーになる奴は、Cより日本語を学んでくれ…。
コメントは判るように書いてくれ。仕様書はちゃんと読んでくれ…。
0756デフォルトの名無しさん
NGNGエスケープシーケンスが使いたいのなら、頭に \x1b が必要。
たとえばカーソルをy行x桁めに移動したいなら、 "\x1b[y;xH"
ただし、Windowsであればエスケープシーケンスが使えるのは9x系のみ
NT系である2000やXPぢゃ使えない。
0757デフォルトの名無しさん
NGNG多少の仕様変更は受け付けますから…お願いですから。
0758デフォルトの名無しさん
NGNG日曜プログラマに目覚めちまった漏れ。
動きゃいい「だけ」のプログラム書けばいいから結構楽しいよ?
前の仕事のせいか、大学ノートに柱になる関数の仕様やらコンポーネントダイアグラム
みたいなプログラム設計を鉛筆で殴り書きしたりするのも、なぜか楽しい
1バイト入魂!(゚∀゚)
0759デフォルトの名無しさん
NGNGサルの趣味がオ○ニーねぇ。そんなサルいたっけねぇ。ボノボ?
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG組み込み系の業務やってる人が、webプログラミングするとか。
ありじゃなない?
0762デフォルトの名無しさん
NGNG余暇ではそのデザイン性のなさでPGする気が失せるのが大半だろう
0763デフォルトの名無しさん
NGNGそれに反するものとしてちょっとした(プログラミングのための)ツールや
PDAのアプリを書くのが半ば趣味だったり。
#仕様書がちがちの仕事なんて趣味じゃやりたくなくってね。
とは言え鼬害だねぇ、この話題。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGってやっても大丈夫ですか?
0766デフォルトの名無しさん
NGNG((std::string)("dir")).length()
0767デフォルトの名無しさん
NGNGtbl->cmd の型と値によるが。tbl->cmd == NULL だったりしたら確実にアウト。
あと char* とか char[] に対して文字列長をとりたいなら、わざわざ std::string
の一時オブジェクトを作らずとも strlen() 呼べば?
0768デフォルトの名無しさん
NGNGプリミティブなchar[4]がクラス化するのは無理って叱られるんでないのかな
0769767
NGNG0770765
NGNGchar *とstringを頻繁に交換しているので、なるべくstringに統一したかったのですが、
stringとstring.hのように重複するようなライブラリ使うと太ったりとかはありませんか?
VCでやってるのですがgccで動かないとかなると痛いので、標準的な使い方が知りたいです。
0771デフォルトの名無しさん
NGNG> stringとstring.hのように重複するようなライブラリ使うと太ったりとかはありませんか?
太るって、何がどうなることを指してるんだ?
0772765
NGNGstd::string + strlenといったようにコードのサイズが大きくなるという意味で使いました。
要するにstd::stringの中でstrlen等を呼び出してるのだろうか?ということに読み替えて下さい。
0773デフォルトの名無しさん
NGNG> std::string + strlenといったようにコードのサイズが大きくなるという意味で使いました。
それを気にするほどの環境なのか? 組み込みとか制御系はともかく、Windows や
UNIX 環境なら標準 C, C++ ライブラリはダイナミックリンク (DLL, *.so) の形で提供
されているから、最終的な実行ファイルのサイズはほとんど変わらんし、実行時に
命令キャッシュのヒット率に多少の影響が出る可能性はあるが、ほとんど誤差だ。
そもそも実行ファイルサイズを数十バイト単位で気にする必要があるなら、STL
使わんでしょ。l
0774デフォルトの名無しさん
NGNG構造体を使わないとすると、名前の検知はどういう風にすればいいでしょうか?
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNGすいません。勘違いしてました。スルーしてください。
0777デフォルトの名無しさん
NGNGscanfだと、田中 幸雄 のように間にスペースが入っている名前を正確に検知できませんよね?
スペース入りの場合はどうすればいいのでしょうか?
0778デフォルトの名無しさん
NGNGホームページだって姓と名は分かれてるでしょ
0779デフォルトの名無しさん
NGNG空白以外のものをセパレータに使うのなら、姓名の間に空白を入れることはできるようになる。
#勿論scanf()を使用する条件で、だ。
0780デフォルトの名無しさん
NGNG見本になりそうなソースをぐぐって探したのですが、JAVAのソースはあってもCのソースは見つけられませんでした。
参考になるソースをご存知の方いませんか?
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGchar str[256];
scanf("%[abcdefghijklmnopqrstrvwxyz ]", str);
ってすると'a'〜'z'と' 'から成る文字列をstrに格納できる。
0783デフォルトの名無しさん
NGNGだから環境書けって。
もしかしてグラフって
* *
* * * *
* * * *
* * *
こんな風に標準出力に吐かせる?
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG>>779
>>782
すでにデータが入力してあるテキストファイルを使うので、
スペースを入れさせないことはできません。
これだけ作ったのですが、うまく出てこないし、>>782を使ってもエラーが出てきて・・・
http://ccfa.info/cgi-bin/up/src/up1845.txt
0786デフォルトの名無しさん
NGNGこんなこと出来たんだ
scanfすげー
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG跳ね返る処理をつけようと思いつきました。
で、弄っているのですが、上手くいきません。
どうも、描画関連で躓いているようですが、
そもそも、私自身がCマガのプログラム自体理解できていないので
どうしようもありません。助けてくれませんか?
ソースはここ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1060403548_64/bound.c
0789デフォルトの名無しさん
NGNGbool a,b,c;
a = !(x & y);
b = c ? a : !a;
上記変換式(xor)を1行で書くとすると
b = c ? !(x & y) : !(!(x & y));
と書くしかないのでしょうか(a = (x & y); は 警告 が出てしまいます)?
0790788
NGNG0791デフォルトの名無しさん
NGNG1行にする意味があるの?
0792デフォルトの名無しさん
NGNGとりあえずfgets()使ってやってみた。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=68
0793デフォルトの名無しさん
NGNGなんでintをboolに代入してんだ?
何がしたいのかよく分からんが A xor B を1行で書くなら
A ^ B
でいいだろ。
0794780
NGNG人の名前は数人分をあらかじめソースの中に入れておき、その中から選択して年と月を入力すると
その月から2か月分のサインカーブが表示するようにしたいのです。
0795デフォルトの名無しさん
NGNGthetaはラジアンなのかディグリーなのか?
実数を(int)にキャストする際は、切り捨てられる範囲の値が重要でないかをチェック。
単に描画関数に渡すためだけのキャストなら、計算用の変数は実数で持っておいて渡す時にキャスト。
0796793
NGNG0797デフォルトの名無しさん
NGNGありがとうございます。
半分理解できませんが、本とネットと睨めっこして翻訳してみます。
0798788
NGNGbound関数以外はCマガの中の人のものなので・・・。
θはラジアン…と思っていましたが、
main関数とか処理を見てみるとラジアンに変換しているし、
勘違いが原因なのかもしれませんね。
ウィンドウ処理は良く分からないので、ぐぐって調べてみますが
処理を変更したら上手くいくかもしれないので 試してます
0799デフォルトの名無しさん
NGNG>782の場合、普通は"%[a-z ]"と書く。
ついでに言えば、空白以外の文字列と言う意味で"%[^ ]"とか
csvの読み込みでカラム数が決め打ちで良ければ"%[^,],%[^,]"なども使える。
#但し、後者の例では','の連続や'"'で囲うフォーマットには対応できないので注意。
0800デフォルトの名無しさん
NGNG1行読み込んで
数値の直前の空白文字をstrrchr()で探して、その前後で名前と数値に分けろ
0801デフォルトの名無しさん
NGNG0802782
NGNG"%[a-z ]"って実装依存じゃないの?
以下、ISO/IEC 9899:1999 §7.19.6.2より抜粋
If a - character is in the scanlist and is not the first, nor the
second where the first character is a ^, nor the last character, the behavior is
implementation-defined.
0804デフォルトの名無しさん
NGNGどうしてもscanf使わなきゃいけないの?
0805デフォルトの名無しさん
NGNGエンターは次の構造体へ移る
数字は数値に読み込んでそれ以外は名前に読み込んで
スペースを終了条件にする
0806デフォルトの名無しさん
NGNGwhile(1){
c=getc(fp)
if(feof(fp))
break;
if(!(c==' ')){
if(!(c=='\n')){
if(digitCheck(c)){
d_str[d_count]=c;
d_count++;
}
else{
n_str[n_count]=c;
n_count++;
}
}
else{
strcpy(structure[s_count].name,n_str);
strcpy(structure[s_count].value,d_str);
s_count++;
memset(0,d_str,sizeof(d_str));
d_count=0;
memset(0,n_str,sizeof(n_str));
n_count=0;
}
}
}
こんな感じ?
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNG}
else{
}
この中で更にgetc()してスペースで抜ければいいと思われ
0809デフォルトの名無しさん
NGNGもまえら >800 とか >792 とか読めよ
0810デフォルトの名無しさん
NGNGヘタレが出過ぎた真似した
0812デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1084749585/
で解決しなかったのでこっちで聞きます。
MinGWで、Cしか使えません。
gmpが使えなくて困ってます。
ttp://www.mit.msn.to/devel/mingw-gmp.html
ここでできるようですが、わかりません。
MSYS のインストールで、MinGWにmake.exeがないと言われます。
GMP のインストールでも
$make
でmakefileがないと言われます。
別にMinGWに拘りません。gmp使うにはどうしたらいいでしょう?
あるいは、大きな数を扱うにはどうしたらいいでしょう?
DESとRASを作りたいです。
0813デフォルトの名無しさん
NGNG>MSYS のインストールで、MinGWにmake.exeがないと言われます。
これは正常。
0814デフォルトの名無しさん
NGNGここより適切なスレがあるよ
cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
0816デフォルトの名無しさん
NGNGソースは、
省略
DWORD set;
set=0x00000000
RegSetValueEx(
hKey,
"TEST",
NULL,
REG_DWORD,
(LPBYTE)&set,
10
);
省略
見たいな感じなんですけど
Googleで調べてDWORDにも注意したんですけどだめでした
0817デフォルトの名無しさん
NGNG10 → sizeof(set)
でないか?
0818デフォルトの名無しさん
NGNGを利用して数値だけを出すのを作ってみましたが、固まります。
何が悪いのやら・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=65
>>801
while()
{/*ここから*/
}/*ここまで*/
ですよね?
0819デフォルトの名無しさん
NGNG>printf("合計%7d点\n平均は%5lf点\n",sum,sum/i);
書式指定と変数があってない
0820デフォルトの名無しさん
NGNG初心者のためのポイント学習C言語
http://www9.plala.or.jp/sgwr-t/
0821デフォルトの名無しさん
NGNG>>820
解決しました。お騒がせしました
0822デフォルトの名無しさん
NGNGsinカーブのグラフを書きたいのですが、ネットでソースを見つけたところ下のようなものを見つけました。
#include <stdio.h>
#include <string.h>
#include <math.h>
void main(void)
{
char p[21];
int ts,tc;
double rd,n;
rd=3.14159/180;
printf(" -1 0 1\n");
printf(" I....+....I....+....I\n");
for(n=0;n<=360;n=n+15){
strcpy(p," I ");
ts=(int)(10+10*sin(n*rd));
tc=(int)(10+10*cos(n*rd));
if(ts==tc)
p[ts]='+';
else{
p[ts]='*';p[tc]='o';
}
printf("%5.0f %s\n",n,p);
}
}
これをコンパイルしてみたのですが、テキストを使った擬似的なものしか表示できません。
普通のグラフのような滑らかな曲線を表示させるためにはどのような方法があるのでしょうか?
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG使っているのはBorland C++ BuilderなのかBorland C++ Compilerなのか?
Builderなら専用スレで聞いたほうが早い。
CompilerならWinAPIでWindowsに描画させることを考えるか、
いっそBuilderなりVCなり買うかどっちか。
0825デフォルトの名無しさん
NGNGマルチは死ね
http://pc5.2ch.net/test/read.cgi/tech/1084749585/701
0826デフォルトの名無しさん
NGNGC++かCオンリーのSDKかMFCかどうすればよいのでしょうか。
参考にしてる本やサイトで、つぎなるステップがまちまちだったりするので、是非このスレの
住人に意見を聞きたいです
0827デフォルトの名無しさん
NGNGC++がやりたかったらC++に行く。
C++いらねと思ったら別の道に行く。
念のために言うとC++はCとはまったく別の言語と思っといたほうがいい。
「Cがある程度わかるからC++も何とかなるだろう」とは思わないこと。
個人的な趣味でプログラミングをするなら、正直C++は必要ない。
それよかjavaとかC#とかにした方が、多分、幸せになれる。
0828デフォルトの名無しさん
NGNG適当なこと言い過ぎ。
まず、CとC++は全く別な言語ではない。
Cで習得した内容はC++でも役に立つ。
が、根本的な部分で考え方の転換が必要になる部分があったりする。
あと、今は個人的な趣味でプログラムすることがある人にこそ、C++じゃないかな。
テンプレートなどを使い出せば、かなりディープな世界が待ってるし。
もちろん、Java/C#などでも問題ないけどね。
仕事でしかプログラム作らない/作りたくないという人はJavaにした方がいい。
その方が効率もいいし、仕事も多い。
C#はWeb関連で案件もぽつぽつ出てきてるようだが、まだまだ少数。
で、>826の質問への答えだけど、
あなたの実力がどれくらいか全く分からないので、どのサイトや書籍が最適とは言えない。
が、まずは今知ってるCでサンプルではなく、自分で考えて設計して何かを作ってみるべきだろうね。
そうやって得た土台が無いと、どの言語に移っても身についていかないよ。
個人的にはCで自分の作りたいプログラムが組めるようになってるなら、
Win32環境であれば、C++&WTLをお勧めする。
後はC++やりながら、Java/C#をかじっていけば、大して苦も無く覚えられるよ。
0829デフォルトの名無しさん
NGNG> Win32環境であれば、C++&WTLをお勧めする。
どうでも良いが WTL って VC++ についてくる ATL ないと使えなかった
ような気がするんだが。気のせい?
0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG技術本読むためにプログラム覚えてるんじゃないだろ。
プログラムで何がしたいかがあるから本読んでるんじゃないの?
スポーツでも車でも「次はどの本読めばいいですか」なんてこんな質問無いだろ?
0832デフォルトの名無しさん
NGNGHeaderControlを用いてエクスプローラのようなリスト表示ができません。
どのパーツをどういう構成で仕上げればよいのか、教えてください。
0833デフォルトの名無しさん
NGNGスレ違い。専用スレへどうぞ。
リンク先は>>2を参照
0834デフォルトの名無しさん
NGNG解説しているサイトなどあれば教えてください
0836デフォルトの名無しさん
NGNG覚えるのが目的であって、実際に活用する事は思いつきもしない
0837デフォルトの名無しさん
NGNGその辺が趣味の趣味たる所以だが、
正直、C/C++なんぞ覚えないでもVBとかHSPとか使って
手軽に楽しんだほうが良さそうな気がするけど。
0838デフォルトの名無しさん
NGNG初歩的な質問でスマソ。
mallocで動的に確保したint配列にスペース区切りの数値入力を求める方法ってどうやるべき?
0839デフォルトの名無しさん
NGNG作りたいものが無いのに続く奴なんて居ないと思うけど。
それと共に自分のレベルを上げていきたいと思うのは当然だろ?
0840デフォルトの名無しさん
NGNG少し知恵がついてから目標決めても悪くないと思うけど。
初めはなんか作ってみたいってのでも良いでしょ。
あと、実際にC++を使うかどうかは別にしても
C++を勉強しておくことは無駄にはならないという気がする。
例えば、Cでプログラム組むときにグローバル変数を使う事に対して
自然に躊躇できるようになるとか、やたらに巨大な関数を
書かないようになるとかそういう副作用が期待できるような。
あと、オブジェクト指向言語を1つ知っておくと、他のオブジェクト指向言語に
入るときも割とすんなりいけるのでいいかも。
0841デフォルトの名無しさん
NGNG激しく意味不明なんだが、数値入力はファイルから?標準入力?
どっちにしても、mallocでメモリ確保したポインタなら、普通の配列と同じように使える。
ただCはインデックス漏れのチェックしないから、気をつけれ。
たとえば標準入力から読むなら
scanf("%d ", &h[i]);
みたいのをループでまわすか、普通に%d %d %d ....ってやってもいんでないか?
まあ普通はfgetsやってからsscanfやると思うけど、ちょっと作ってるだけならこれだけでおk。
0842デフォルトの名無しさん
NGNG宿題は宿題スレへ。
自分でも理解できないことを書いているのがミエミエ。
>数値入力を求める
日本語として破綻してます。
0843デフォルトの名無しさん
NGNGに書いてある「リソース スクリプト」ってのが私のVC++には存在しないのですが・・・
どうしたらよいでしょうか。
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG家でまでもやりたくないだろ普通
オタクですか?
0846デフォルトの名無しさん
NGNG電車の中でハンドアセンブルでもしていろと?
0847デフォルトの名無しさん
NGNGはぁ?
0848デフォルトの名無しさん
NGNG>技術本読むためにプログラム覚えてるんじゃないだろ。
>プログラムで何がしたいかがあるから本読んでるんじゃないの?
>836
>覚えるのが目的であって、実際に活用する事は思いつきもしない
>837
その辺が趣味の趣味たる所以だが、
↑
↓
>845
>家でまでもやりたくないだろ普通
↑
↓
>846
>電車の中でハンドアセンブルでもしていろと?
... >847 にはげどう(w
0849デフォルトの名無しさん
NGNG質問させてください
ビット処理の勉強の優先度って高いのでしょうか低いのでしょうか?
なにと比べてとかそのへんの基準の設定もお任せします
私のあふぉな頭では難しくて爆発(ry
よろしくお願いします(´・ェ・`)
0850849
NGNG説明不足でした
ビット処理の勉強というのは
ビット演算(論理和、論理積、左右シフト
ビットフィールド・・・
フラグのオン/オフ?!
符号拡張(??)
などなどです
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG851の言う通りだと思う。
ビット処理がすぐにでも必要(理解したい)と思うのなら優先度は高いはず。
0853デフォルトの名無しさん
NGNG必要になったときに使うと思う
0854デフォルトの名無しさん
NGNG一日あれば覚えられるやん。
0855デフォルトの名無しさん
NGNG禿げ堂
>>854
まぁ、そうだけど最初の頃はそのへんが泥臭い感じでとっつき難いのも分からんでもないじゃん。
>>849
俺が思いあたるビット操作がどうしても必要な場合って、例えば、CPUのポートたたくときとか
人のソースいじるときでビット操作が出てきちゃったときとかそんな感じだ。
後から覚えても良いと思うけど。
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGそれで私にビット操作の方法を聞きに来たわけだが、当然設計しなおしさせた。
0858デフォルトの名無しさん
NGNGファミコン時代の再来だな。
0859デフォルトの名無しさん
NGNGというのでしょうか? ウィザードで何を選べばいいのでしょうか?
0860デフォルトの名無しさん
NGNG好きなの選べ。
0861デフォルトの名無しさん
NGNGスレ違い。VCスレへどうぞ。→>>2
0862デフォルトの名無しさん
NGNG個人的な事で申し訳ないが
正直VBよりCやC++の方が色んな面で簡単だと思う。
ぶっちゃけVBはアイコンペタペタ、手書きコード少量のイメージがあるが
実際にはVBは無駄にコード多いよ、、
0863デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGchar *p;
としたときにpの内容は不定値になるのでしょうか?
それとも、この時点で静的領域の適当なアドレスが入っているのでしょうか?
どちらが正しいのかわからなかったので教えてください。
0866デフォルトの名無しさん
NGNGローカルだったら不定だね。
0867デフォルトの名無しさん
NGNGこんな管理しやすい方法は他に無いだろってヨダレだらだらでしたよ
0868デフォルトの名無しさん
NGNGa.h---------------------------
#include "b.h"
class a{
b hoge;
}
---------------------------
b.h-------------------------
#include "a.h"
class b{
}
---------------------------
ってやるとエラーがでるんですけど、これはどうしてですか?
0869デフォルトの名無しさん
NGNG#ifndefあたりで回避できたかもしれない
0870デフォルトの名無しさん
NGNGFAQだなぁ(苦笑
インクルードは、指定したファイルの内容をその位置に挿入する、
つまり、ファイルの内容をまるまるコピー&ペーストするのと同じ。
a.hとb.hが互いに相手をインクルードしたら無限ループに陥るでしょ。
>>868のサンプルだとそもそも、b.hにa.hをインクルードする必要が無いわけだが、
もし、class bでもclass aを必要とするならこうする。
たぶん、まともな入門書なら書いてあるはずだが。
a.h---------------------------
class b; //先行宣言
class a {
b* hoge;
};
acpp---------------------------
#include "a.h"
b.h-------------------------
class a; //先行宣言
class b {
a* hogetta;
};
bcpp-------------------------
#include "a.h"
0871デフォルトの名無しさん
NGNG回避できませんでした。
抜本的解決法とかありますか?
0872デフォルトの名無しさん
NGNGどうもありがとうございます。
で、実はb.hでは
int fuga(a&);
ってな関数を使いたいんですけど、これで試してもうまくいかないんです。。
0873デフォルトの名無しさん
NGNG質問するときはそれを最初に書かんといかんぞ。次からは気をつけるべし。
で、a::hogeは、きちんとb*型に直してあるのか?
0874デフォルトの名無しさん
NGNGすいません。今度から気をつけます。
で、だめでした。
error C2061: 構文エラー : 識別子 'a' がシンタックスエラーを起こしました。
といわれます。
0875873
NGNGできました。
acpp---------------------------
#include "a.h"
ここを勘違いしてました。
0876デフォルトの名無しさん
NGNGいや、スマソ、オレがタイポしてら。
当然、a.cpp b.cpp ともに a.h b.hの両方をインクルードすると。
あと、class bが b::fugaの引数としてしかclass aを参照しないなら、
a::hogeはb型のままでヲケなはず。
0877デフォルトの名無しさん
NGNGここのページにおいてある
ttp://www.mit.msn.to/prime/prime3_2-3-5-7.c
を実行すると
999962000357=999983*999979
において
素数と判定されてしまいます。
なぜなのでしょうか?
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGgccでおすすめのデバッガありますか?
0880デフォルトの名無しさん
NGNGunsigned int t=0xffffffff;のとき
x=t>>32;
としてx=0にしたいのですが
x=0xffffffffになってしまい困っています。
何か言い解決方法はありませんか?
c言語 コンパイラはbccです。
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG>>880
2回にわけれ。
0884デフォルトの名無しさん
NGNGunsigned intが32bitであれば32以上のシフトはできない。
x=t>>16>>16;
のように分ければうまくいく。
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG走ってるのにね。
やはり処理系依存(Intelの場合はCPUで未定義)なのね。。。
0887デフォルトの名無しさん
NGNGはぁ?
0888888
NGNG0889デフォルトの名無しさん
NGNGありがとうございます。
二回に分けることでうまくいきました。
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG細かいことだが、文章が矛盾している。
「左オペランドの型のビット数を『超える』シフトは未定義」ならば、「unsigned
intが32bitであれば32『を超える』シフト」が未定義なのであって、32のシフトは
振る舞いが定義されているはずである。では、どちらが正しいか。
規格には、"greater than or equal to"と表現されている。よって日本語では
「左オペランドの型のビット数『以上の』シフトは未定義」とすべきである。
よって32以上のシフトは未定義である。従って、32のシフトは未定義である。
0892デフォルトの名無しさん
NGNG細かい事だが、矛盾の使い方が間違ってる
この場合はただの誤りである。
0893デフォルトの名無しさん
NGNG>>884 は、「左オペランドの型のビット数を超えるシフトは未定義」の発言に
よって32のシフトによる振る舞いの定義の存在を肯定している。しかしながら、
「32以上のシフトはできない」の発言によって32のシフトによる振る舞いの
定義の存在は否定されている。これは一貫性を欠く発言であると考えた。
「矛盾」とは、「物事の道理が一貫していないこと」である。よってこの場合、
私は矛盾という言葉が適当と考えた。
にも拘らず私の「矛盾」の用法が誤っているのであれば、恥ずかしながら、
なぜ間違っているのか、後学のためにご教示を賜りたい。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNGのメニューバー自体にIDを付けたいのですが、どうやったらできるのでしょうか?
0896デフォルトの名無しさん
NGNGMAINMENUを好きに書き換える。
VC6のIDEを使っているのなら、ツリービューから変更したいメニューを選択してF2
0897デフォルトの名無しさん
NGNGすでにMENUというmenuIDがついているように見えるが。
0898デフォルトの名無しさん
NGNGすまん、指摘のとおり、超えるは誤りで以上が正しい。
つか、そんな鬼の首をとったようにつっこまんでもいいじゃない。
0899デフォルトの名無しさん
NGNGまぁ、32がどうなるかってのが問題だったからねぇ。
プログラマはそのくらいは意識してなきゃダメでしょ。
0900こんな説明まで必要になるしさ。
NGNGわざわざ7行も費やする話か ?
> 左オペランドの型のビット数<del>を超える</del><ins>以上の</ins>シフトは未定義です。
> の間違いだろ ?
で、済む話だと思うが。
0902デフォルトの名無しさん
NGNG「!ほかのエディタで開く」になってしまって開くことができなくなったのですが、どうやったら解除できるのでしょうか?
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNGここはあくまで”C/C++室”なんで、ツールの使い方が判らないってのは守備範囲外。
そのツールのスレを探して聞いてくれ。この辺を見る>>2
0905デフォルトの名無しさん
NGNG指示通りコピペしたのですが、
myProg.hbrBackground =GetStockObject(WHITE_BRUSH);
ってとこで、 error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
ってでます。
0906デフォルトの名無しさん
NGNG(HBRUSH)GetStockObject(WHITE_BRUSH);
とキャストしてやればいい。
GetStockObject()はブラシ、ペンといったいろんな種類の
オブジェクトのハンドルを返す汎用関数だから、返り値も
HGDIOBJと汎用型になっている。
0907デフォルトの名無しさん
NGNG猫でもわかるのに・・・
君C/C++辞めたほうがいいよ
0908デフォルトの名無しさん
NGNG#include <stdio.h>
int main(int argc, char *argv[ ])
{
char *p[2];
printf("%p: &p\n",&p);
printf("%p: p\n",p);
printf("%p: &argv\n", &argv);
printf("%p: argv\n", argv);
return 0;
}
/*実行結果
0012FF78: &p
0012FF78: p
0012FF8C: &argv
00430E50: argv
*/
pがアドレス演算子をはずしても同じアドレスを表示したのは
pは配列の名前なのでその配列の先頭アドレスをさしているからですよね?
しかし、main関数で受け取った文字列へのポインタの配列argvはアドレス演算子をはずすと同じアドレスを表示しなくなりました。
格納されている領域をアドレスから推測するとどうやらargvはポインタの配列ではなく、文字列自体をさしているようです。
この違いはどこから来るのでしょうか?
0909デフォルトの名無しさん
NGNG0910908
NGNGレスありがとうございます
そういえばそうでした。思い出しました。
そこで追加質問です。
#include<stdio.h>
#include<stdlib.h>
int n;
int main(int argc, char *argv[ ])
{
int a;
char *p = (char *)malloc(8);
printf("%p: コード領域\n",main);
printf("%p: スタック領域\n", &a);
printf("%p: ヒープ領域\n", p);
printf("%p: データ領域\n",&n);
printf("%p: argv\n",argv);
return 0;
}
/*実行結果
00401005: コード領域
0012FF7C: スタック領域
00431DE0: ヒープ領域
004237A4: データ領域
00420F9C: 静的領域
00430E50: argv
*/
これからするとコマンドライン引数はどの領域でもないような気がしますが
どこの領域に確保されているのでしょうか?
0911908
NGNG気にしないでください
0912デフォルトの名無しさん
NGNGどこかに。
割と見る実装ではヒープに確保してるけど。
0913908
NGNGmalloc関数でとったメモリは16バイトです
#include<stdio.h>
#include<stdlib.h>
int n;
int main(int argc, char *argv[ ])
{
int a;
char *p = (char *)malloc(16);
printf("%p: コード領域\n",main);
printf("%p: スタック領域\n", &a);
printf("%p: ヒープ領域\n", p);
printf("%p: データ領域\n",&n);
printf("%p: argv\n",argv);
return 0;
}
/*実行結果
00401005: コード領域
0012FF7C: スタック領域
00431DE0: ヒープ領域
004237A4: データ領域
00430E50: argv
*/
>>912
レスありがとうございます
ヒープ領域ですか。
だとしたらmalloc関数で確保した場所と4000Byteも離れてるのはなぜでしょうか?
0914デフォルトの名無しさん
NGNG本を読みながら独学を始めました。
先に結論を。
winMEで使えるフリーのコンパイラをご存じありませんでしょうか?
GCCというのは本で知り、
会社で使っているXPでは、使っているのですが、
その会社を辞めようと思って、Cの勉強を始めたので、
なかなか会社ではやりにくくて…。
家のPCはMEで、そのPCを買い替えられないくらい薄給なもので…。
その本では、GCCを使う際、
「XPで動くことを想定しています」
となっていて、MEでのことを書いていないもので。
「MEで使えるかやってみればいいじゃん」
は、今(会社にいる)思いつきました…。
すみません。よろしくお願いいたします。
0915デフォルトの名無しさん
NGNGタダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/l50
つか、聞く前にやってみろよ、ホントに。
0916デフォルトの名無しさん
NGNGなんかけんか腰だな
0917相談
NGNGサンプルコードがハングルでよくわかりません
助けてください
ttp://www.serious-code.net/moin.cgi/FileTime
0918デフォルトの名無しさん
NGNGアプリケーション側の管理する領域ではない、とは思いつかないのか?
0919918
NGNG0920デフォルトの名無しさん
NGNGcase 0:
・・・
_exit(1);
case -1:
perror(NULL);
exit(1);
default:
waitpid(pid, &status, 0);
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
fprintf(stderr, "pwd failed\n");
exit(1);
}
break;
}
このプログラムを改造して子プロセスから親プロセスに0以外のstatusを
送りたいのですがどうすればいいですか?
exitのあたりをいくらいじくっても無理なのですが・・・
0921デフォルトの名無しさん
NGNG環境変数かなんかと一緒のアドレス空間だった気がするが
なにぶん MS-DOS3.3B 使ってた当時のことだし記憶違いだとアレだなぁ
いやつまり OS や CPU によって違っても当然じゃないの? という。
OS もコンパイラもコンパイルオプションも書かないでどういうつもり? という。
>>912 の「割と見る実装」の意味は分かってる? という。
仮に DOS でも Tiny, Small, Large で違うだろうし、という。
素人に毛が生えた程度の俺はそんな風に思う。
0922914
NGNGありがとうございます。
>つか、聞く前にやってみろよ、ホントに。
この言葉も含めて、本当にありがとうございます。
頑張って勉強・実践します。
0923デフォルトの名無しさん
NGNGキモい
0924デフォルトの名無しさん
NGNG5個整数入力して最小値と最大値求める
のって変数最低いくつでできますか?(配列までいってません)
0925デフォルトの名無しさん
NGNGint i, max, min;
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNGサンクスです
たすかりました
0928デフォルトの名無しさん
NGNGループにしなければよい。
0929デフォルトの名無しさん
NGNGヒープから確保する時って、頭の方から順番に取っていくもんでは*ない*んじゃなかったっけ?
空いてそうなところをえいって見当つけてとってくるんでしょ。
だとしたら、たかだか4kBくらい離れてても別におかしく無い気もする。
俺の言っていることがおかしいってことはあるかもしれんけどさ。
0930913
NGNGそういうことなんですね
納得しました
その辺はOSが管理しているのでC言語だけじゃわからないってことですよね
プログラムを作っている環境は
WindowsXP Home
MS-VC++6.0
です。
MS-VC++6.0を使っててコンパイラを聞かれたらなんて答えればいいのでしょうか?
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG「割れ物です」と答えとけ。
0934デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGむしろ失敗してることすら意識しないか。
0936デフォルトの名無しさん
NGNGどの本にも書いてありますが、モニター以外のデバイスにも
printfで出力出来るんですか?というか、モニター以外を標準出力に
出来るんですか?
0937936
NGNG解決しました
0938デフォルトの名無しさん
NGNGって書いてある。どっちが正しいの?
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGvoid main()
int main(int argc, char** argv)
int main(int argc, char* argv[])
全部いっしょ
返り血がintなのが正しいらしいが。。。
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGどっちも正しい。「正しさ」の度合いで判断するならint main(void)のが若干ベターかな。
0943デフォルトの名無しさん
NGNG>>940の最後の例でないのなら、どれでも好き好き。
ただし、戻り値voidは難癖つけられることが多いから気をつけよ
0944デフォルトの名無しさん
NGNGすまねぇ、これってどういう意味?
>940の最後の例でないのなら、どれでも好き好き。
0945デフォルトの名無しさん
NGNG>940のうち、上から2番目は戻り値を取らないので規約違反。
3番目と4番目は等価。1番目はコマンドラインを解析しないなら問題なし。
0946デフォルトの名無しさん
NGNGて書い酷い目にあう処理系なんてあんの?正直どうでもいい気がするんだが。
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG損害賠償請求できるわな)、規約なんだからまずいってのも確か。
というわけで main()ってのがシンプルで良いや。
※引数はお好きに
0949デフォルトの名無しさん
NGNG#あ〜、一応解説しておくと、voidでも実際にはたまたまなんかの値が終了ステータスと見做されるのね。
0950究極の初心者
NGNGLSI C-86試食版3.30cを使ってCの勉強をしようと思ったのですが、上手く動作しないんです・・・
環境はXP 手順は
・lisc-86のBINフォルダの中にあるLCCファイルの拡張子をTXTに変更して中身を変更。
(Xc:\LSIC86\BIN -Lc:\LSIC86\LIB -Ic:\LSIC86\INCLUDE)
もちろんLSIC86ディレクトリは作成してます。
・コンパネからシステムー詳細設定タグー環境変数ーシステム環境変数(S)ーPathに;c:\LSIC86\BINを追加
さらに同じシステム環境変数(S)に新規で変数TZ 値JST-9 を登録
そして簡単なソースを書いて実行しようとするんですが、ソースのあるディレクトリからlcc TEST.cを実行しても
「KKCFUNCが組み込まれました」
「マイクロソフトかな漢字変換 バージョン2.51」
と表示されるだけでEXEが作成されません・・・
まだ調べたりないと思うのですが、環境設定はどこも同じ説明でそれ以上の事が書いてなかったんです。
おそらくそんな初歩でひっかかる人が自分以外にいないんですね(鬱死)
板違いな質問でしたらすみません。
もっと精進して勉強しますんで、慈悲の手を差し伸べてください_| ̄|○
0951デフォルトの名無しさん
NGNG_lccファイルの拡張子をTXTに変更してはいけない。拡張子はいらない。
0952デフォルトの名無しさん
NGNG○ネタ師
0953デフォルトの名無しさん
NGNG0954950
NGNGレスありがとうございます。
でも中身を変更した後、ちゃんと拡張子は消したんです(汗)
>>952
ネタじゃないです^^;
ネタと思われるほど、こんな所で躓く人はいないんですね・・・(滝汗)
0955デフォルトの名無しさん
NGNG究極の初心者なら、せめて初心者になってから出直しておいで。
初心者って自称するだけでも心象良くないのに。
あと、LSIC86を使うのには理由があるの?
0956デフォルトの名無しさん
NGNGわかった。command.comを手動で実行しないと正常に動作しない。
0957950
NGNG>出直しておいで
すみません^^; 精進しますm(__)m
後LSIC86を使うのは、やさしいCの本を買った時にそれが紹介されていたからです。
>>956
command.com を手動で実行するにはどうしたらいいのでしょう?(汗)
0958デフォルトの名無しさん
NGNGLSIC86でないといけない理由はないようなので、
さっさと削除してbcc5.5.1をインストールしてください。
LSIC86は利用できるメモリ量とか制限けっこうあります。
command.comはコマンドラインか、ファイル名を指定して実行から
command
を実行すればよろし。
0959デフォルトの名無しさん
NGNG4. いよいよコンパイルの実行です。「lcc hello.c」と入力してEnterキーを押します。
すると,「lld @link.i」と表示されてプロンプトが表示されます。
XPでは,1回目にKKCFUNCが起動されて画面がクリアされることがあります。
2回目以降はすぐにコンパイルされます。Meではすぐにコンパイルされます。
http://www.cmagazine.jp/beginner/lsic/
0960950
NGNGはい、自宅へ帰ったらさっそくやってみます!
ありがとうございますm(__)mペコ
>>959
2回目以降はまったく表示されなくなっていたんです・・・(汗)
みなさん、ありがとうございましたm(__)mペコ
0961デフォルトの名無しさん
NGNGイ.1つのヘッダファイルに定数をまとめる
ロ.どこかのクラス内で定義する
ハ.名前空間内で定義する
3つほど思い浮かぶんですが、みんなさんはどうしてますか?
0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNGクラス内か名前空間内で(もちろん名前空間内のクラス内でも)、
且つ、ヘッダに宣言するのが普通。
整数、enumだったら定義もいっしょにしてしまう。
0964デフォルトの名無しさん
NGNGコンパイルオプションがわからないです・・・
何か足りないですか?
g++ thread.cpp -L/usr/local/lib -L/usr/local/lib/libboost_thread-gcc-mt-1_31.so -lboost_thread
-lpthread
0965デフォルトの名無しさん
NGNGWin32API、DirectX、SDL以外で何か無いでしょうか。教えてください。
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG0968965
NGNGありがとうございます。調べてみます。
一応質問した理由は、
Win32APIは仕事でも使われ、勉強サイトも豊富だが、
ウィンがちがちに気を配らなければばならない、
DirectXも仕事に使われているみたいだが、
細かくバージョンアップされたりいまいちパッとしない?
SDLはどの機種にも使えるが、仕事で余り使われてないみたいだし、
ダウンロードの仕方がわからないし、勉強サイトも余り無い、と
これだっというのが無くいいのがあったらなと思い質問しました。
0969デフォルトの名無しさん
NGNG0970965
NGNGUNIXで組む為のもの?みたいなので、
次パソコンを買うならUNIXと思っていたので、その時に勉強します。
>OpenGL
BCCで組んでいるサイトを見つけたので、勉強してみたいと思います。
みなさま、ありがとうございました。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG2345だったら2桁目の4だけ取り出したいっす
どうすればいいっぺ?
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGsprintf(buf, "%d", n);
ans = (buf + strlen(buf) - col) + '0';
0975デフォルトの名無しさん
NGNGだった。
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNGもちろんわかって書いている。わかりやすく書いただけだ。
0980デフォルトの名無しさん
NGNGダミーを置いたり?の順序がわからん。
どこをどう直せばいい?
class B;
class A { public:
B *b;
int n;
void f() { printf("%d\n", b->n); }
};
class B { public:
A *a;
int n;
void f() { printf("%d\n", a->n); }
};
なお、この例では、Aのf()のprintfでb->nを求めるところで、
クラスBの形が未定義なので、エラーが出る。
0981972
NGNGためになったよ
0982デフォルトの名無しさん
NGNGA::f() を class B {} の定義の後で定義すればいいだけだと思うが...。
0983デフォルトの名無しさん
NGNGエラーメッセージは、
Error: 外部シンボル'_srand48'が未解決(C:\BORLAND\BCC55\SOURCE\DELTA1.OBJが参照)
Error: 外部シンボル'_drand48'が未解決(C:\BORLAND\BCC55\SOURCE\DELTA1.OBJが参照)
と出ます。
どなたか助言お願いします。
以下プログラム
0984デフォルトの名無しさん
NGNG0985983
NGNGので関係あると思われるところだけ。
#include<time.h>
#include(stdlib.h>
は書いてあってどうもsrand48とdrand48でエラーが出るみたいです。
コンパイルはbcc32 ファイル名.cでやりました。
0986デフォルトの名無しさん
NGNG>#include(stdlib.h>
↑これは大丈夫か?
0987983
NGNG今までLinuxでやっていたので用語がよく分かりません・・・
ありがとうございます、調べてみます。
>>986
あせって(になってました。プログラムではちゃんと<になっています。
0988デフォルトの名無しさん
NGNG反射的にレス返してしまったがbcc32にrand48は存在するの?
Unix系のCコンパイラならサポートしてることが多いようだけど。
0989デフォルトの名無しさん
NGNG>>963
ありがとうございます。
0990デフォルトの名無しさん
NGNG1のウプろだにプログラム丸ごとあげれ
そっちのほうが早い
0991デフォルトの名無しさん
NGNG質問・回答も控えてください。
次スレを立てた方は誘導をおながいします
漏れは立てれません
0993デフォルトの名無しさん
NGNG【初心者歓迎】C/C++室 Ver.7【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1086373839/l50
0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNGBCC、というよりC++の標準ライブラリにrand48はない。
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。