トップページ⇒tech
1001コメント351KB

【初心者歓迎】C/C++室 Ver.44【環境依存OK】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/11/03(土) 00:20:13
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.43【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1190860744/l50
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0951デフォルトの名無しさん2007/12/06(木) 13:57:19
>>948
ここで質問する==調べものをする
だからなw
0952デフォルトの名無しさん2007/12/06(木) 13:58:29
>>949
どこで詰まってるのかよくわからんが、代数的に解かなくても

>m 番の石を最初に取り除く.直前に除いた石から時計回りに石をたどって k 個目を取り除く作業を,残り 1個になるまで繰り返す

この手順通りのことを実際にやるようなプログラムを作ればいいんでない?
0953デフォルトの名無しさん2007/12/06(木) 14:29:05
0xFFFLの最後のLが意味わからんとです
0954デフォルトの名無しさん2007/12/06(木) 14:31:34
>>953
long
0955デフォルトの名無しさん2007/12/06(木) 14:31:38
Lを付けるとlong型
0L とか 4095L とか
0956デフォルトの名無しさん2007/12/06(木) 14:34:04
>>949
継子立てでいけると思うけど、どうダメだった?
0957デフォルトの名無しさん2007/12/06(木) 21:50:36
巨大配列の男ですが、ご指摘してくれたように、領域確保が要素数に対して少なかったという理由でした。
課題もなんとか終わりました。質問に対して答えてくれた方々、本当にどうもありがとうございました。
0958デフォルトの名無しさん2007/12/06(木) 23:35:17
どこで聞けばいいのかわからないのでとりあえずここで。

配列のサイズってどこに格納されているんでしょうか?
gcc -S でソースを眺めてみたところ特にサイズらしきデータが見当たらず、
sizeofした結果は即値で見つけやすかったんですが。

関係あるかどうかinfo scopeでは配列はサイズは表示されるのですが、
型と要素数では表示されないんですね。

スレ違いなら誘導よろ。
0959デフォルトの名無しさん2007/12/06(木) 23:49:39
>>958
配列のサイズって格納されてるの? 俺はできるだけ
vector とか使って size わかるようにして使うようにしてるけど。
0960デフォルトの名無しさん2007/12/06(木) 23:50:37
>>958
配列サイズメモリには残っていない
コンパイル中にだけ残っている
サイズ知りたければvector
0961デフォルトの名無しさん2007/12/06(木) 23:51:10
配列サイズは、メモリには残っていない
0962デフォルトの名無しさん2007/12/06(木) 23:59:07
>>958の人気にshit

ただし、newで作った配列は、どこかにサイズ情報を持ってる。返されるアドレスの直前とか。
そうでないと、delete[]で正しく開放できないからね。
0963デフォルトの名無しさん2007/12/07(金) 00:06:26
レスどうも。

スタック上の固定長配列はオフセットに化けてメモリ上には展開されないって感じでしょうか。

>>962
そういえば、delete[]はサイズ意識しますもんね。
今度newした配列見てみることにします。
0964デフォルトの名無しさん2007/12/07(金) 00:58:34
new[]でも要素数を知る方法はプログラマが用意しない限りない。
0965デフォルトの名無しさん2007/12/07(金) 08:50:47
>>933
すみません、ご指摘ありがとうございました。
09662822007/12/07(金) 20:55:28
テキストファイルに他のプログラム用のコードを書くプログラムなのですが、
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std ;
int main(){
stringstream ss;
FILE *fp ;
for ( int t = 0 ; t < 100 ; t++ ){
ss << "data" << t ;
cout << ss.str() <<endl;
if ((fp = fopen(ss.str().c_str(), "r" )) == NULL )
return 0 ;
ss.str("");}}
上記の部分で、ファイルはresult0〜result99まで存在しているにもかかわらず
result46でプログラムが終了します。
ifの判定ミス?だとは思うのですが、どうしてそうなるのかまったくわかりません。
コンパイラはborland C++です
0967デフォルトの名無しさん2007/12/07(金) 21:05:44
答えはfcloseが無いから。
0968デフォルトの名無しさん2007/12/07(金) 21:11:57
すいません初心者で基本的なことかもしれませんが、
知っている方がおられれば教えてください

10進数で11とかだと16進数でbになると思うのですが
4桁で000bと出力するにはどうすればよろしいでしょうか?
よろしくお願いします。
0969デフォルトの名無しさん2007/12/07(金) 21:13:37
うまくいきました。ありがとうございます。

ageたり、282とか間違ってるし答えも単純だし、終わってるな俺 orz
0970デフォルトの名無しさん2007/12/07(金) 21:14:54
printf("%04x", 11);
0971デフォルトの名無しさん2007/12/07(金) 21:20:01
>>970

すいません、ありがとうございます。
04の0が抜けてました。
ほんとうにありがとうございます。
0972デフォルトの名無しさん2007/12/07(金) 22:50:12
非仮想インターフェースの使い方がいまいち解りません
多重継承時に処理のし忘れを防止するというのはわかるが
それだけのためにラッパーを作るのはどうかなという気がしないわけでもないのですが…
0973デフォルトの名無しさん2007/12/07(金) 23:04:14
使い方なんてわからなくてもいいんじゃない?
意味や意図がわかってれば

public な仮想関数は2つの役目を担っているので
public な非仮想関数と private な仮想関数に分けましょう
ってことを意識すれば public な仮想関数は気持ちわるい

そうやって1つのエンティティに1つの役目を負わすことを意識して
シンプルで扱いやすい設計ができた経験があれば
0974デフォルトの名無しさん2007/12/08(土) 02:25:51
>>972
気持ち悪いと思うならやめた方がいいと思う。
そもそもある設計手法が効果的に働くためには一定の条件が必要で、
>>972のプログラムではNVI(Non Virtual Interface)が効果的に働かない部類のものかもしれない。
将来的に不具合が出てきたら変えればいい。
パターンは大事だけど、経験も大事。
0975デフォルトの名無しさん2007/12/08(土) 07:26:29
すみません
デルファイのようにGUIでプログラムできるC++はありますか ボーランドC++以外のやつ有りますか?
0976デフォルトの名無しさん2007/12/08(土) 08:05:46
・VC(CLI + .net)
・WideStudio
0977デフォルトの名無しさん2007/12/08(土) 08:18:40
>>976
サンクス
0978デフォルトの名無しさん2007/12/08(土) 08:28:10
ドットネットと、ボーランド以外ではWideStudioしかないってことで良いかな?
なんか初めの二つは、SP2とドットネットのインストールが必須な上に作業中の動作が重いんだ
古いパソコンでもDelphi6のように動くC++が使いたいとおもった
0979デフォルトの名無しさん2007/12/08(土) 08:33:03
あと、もっとも簡単にC++でネィティブwindowsアプリを開発するにはどうしたらいいかな? ATLやWTLが簡単なの?
なんかこれでも難しいんだ・・・
0980デフォルトの名無しさん2007/12/08(土) 09:06:44
MFC
0981デフォルトの名無しさん2007/12/08(土) 09:07:28
wxWidgets
0982デフォルトの名無しさん2007/12/08(土) 10:04:45
一番簡単なのは、MFCですか? wxWidgetsですか? WTLですか? ネイティブで簡単なのが良いです
0983デフォルトの名無しさん2007/12/08(土) 10:07:57
>>982
釣りか?
一番なんてものは主観だ
全て使ってみて自分で選べ
0984デフォルトの名無しさん2007/12/08(土) 10:55:08
詳しくないが結構 MFC 嫌う人多いね。
Win32API の方が良いといって使ってたりする。
0985デフォルトの名無しさん2007/12/08(土) 11:14:23
>>978
C++Builder6
0986デフォルトの名無しさん2007/12/08(土) 11:26:15
だれかwindows APIのみを使って、windowsアプリを開発できるC++の開発環境を開発してもらえないだろうか?
0987デフォルトの名無しさん2007/12/08(土) 11:39:08
Windows APIつかえばいいじゃん
0988デフォルトの名無しさん2007/12/08(土) 11:41:42
標準入力からnを入力して、

A[n][n]の配列を宣言するにはどうしたらいいですか?
0989デフォルトの名無しさん2007/12/08(土) 11:45:19
int n;
scanf("%d",&n);
int A[n][n];
0990デフォルトの名無しさん2007/12/08(土) 11:46:20
>>989
それじゃできないです
0991デフォルトの名無しさん2007/12/08(土) 11:47:56
int **A;
A=new int*[N];
for(n=0;n<N;n++)A[n]=new int[N];
0992デフォルトの名無しさん2007/12/08(土) 11:51:49
vector< vector<int> > A(10);
for(int n=0;n<10;n++)A[n].resize(10);
09939892007/12/08(土) 11:52:25
>>990
できる。
09949892007/12/08(土) 11:53:33
$ cat a.c
#include <stdio.h>

int main() {
int n;
scanf("%d", &n);
int A[n][n];
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
A[i][j] = i * 10 + j;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
printf("A[%d][%d]=%d\n", i, j, A[i][j]);
return 0;
}
$ cc -std=c99 a.c
$ ./a
3
A[0][0]=0
A[0][1]=1
A[0][2]=2
A[1][0]=10
A[1][1]=11
A[1][2]=12
A[2][0]=20
A[2][1]=21
A[2][2]=22
0995デフォルトの名無しさん2007/12/08(土) 11:54:32
C99とかだろ?
0996デフォルトの名無しさん2007/12/08(土) 12:07:32
>>992
> vector< vector<int> > A(10);
> for(int n=0;n<10;n++)A[n].resize(10);

10 ってなんだ?

cin>>n;
vector<vector<int> > A(n,vector<int>(n));

かな。
0997デフォルトの名無しさん2007/12/08(土) 12:08:28
>>993
定数値が必要っていわれます
0998デフォルトの名無しさん2007/12/08(土) 12:10:12
C99じゃないんだろ。
0999デフォルトの名無しさん2007/12/08(土) 12:10:22
>>997
自分の環境も書かずに質問するからそうなる。
1000デフォルトの名無しさん2007/12/08(土) 12:25:09
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。