スレを勃てるまでもないC/C++の質問はここで 9at TECH
スレを勃てるまでもないC/C++の質問はここで 9 - 暇つぶし2ch1:デフォルトの名無しさん
09/04/18 11:46:21
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 2
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 3
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 4
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 5
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 6
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 7
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 8
スレリンク(tech板)

2:デフォルトの名無しさん
09/04/18 12:03:41
   お     つ      だ     よ
  ∧,,∧    ∧,,∧    ∧,,▲   ∧,,∧
  (,,・∀・)   ミ,,・∀・ミ   (;;・∀・)   ミ,,・∀・ミ
~(_u,uノ @ミ_u,,uミ @(;;;;uuノ ~ミ_u,,uミ

3:デフォルトの名無しさん
09/04/18 12:47:01
   ま     つ      た     け
  ∧,,∧    ∧,,∧    ∧,,▲   ∧,,∧
  (,,・∀・)   ミ,,・∀・ミ   (;;・∀・)   ミ,,・∀・ミ
~(_u,uノ @ミ_u,,uミ @(;;;;uuノ ~ミ_u,,uミ

4:デフォルトの名無しさん
09/04/18 13:25:02
   ペ     二      ス     
  ∧,,∧    ∧,,∧    ∧,,▲   ∧,,∧
  (,,・∀・)   ミ,,・∀・ミ   (;;・∀・)   ミ,,・∀・ミ
~(_u,uノ @ミ_u,,uミ @(;;;;uuノ ~ミ_u,,uミ

5:デフォルトの名無しさん
09/04/18 13:43:56
   こ     ん      ま     お     
  ∧,,∧    ∧,,∧    ∧,,▲   ∧,,∧
  (,,・∀・)   ミ,,・∀・ミ   (;;・∀・)   ミ,,・∀・ミ
~(_u,uノ @ミ_u,,uミ @(;;;;uuノ ~ミ_u,,uミ

6:デフォルトの名無しさん
09/04/18 15:32:08
あやせはるかちゃんのおまんこは臭いかな?


7:デフォルトの名無しさん
09/04/18 15:37:07
>>1乙!

8:デフォルトの名無しさん
09/04/18 15:50:41
勢いでスレたててしまったが…。
ちょっぴり反省してみるorz

どこでもよいかもだけど
前スレの>>998
ソースの最後(どうでもよい)に
rewind(stdin);
getchar();
書くと入力待ちで止まるよ…

てかどうやってコンパイルしたのかな
IDEかな…

9:デフォルトの名無しさん
09/04/18 16:01:03
rewind(stdin);を実行した結果は標準Cでは定義されていない

10:デフォルトの名無しさん
09/04/18 16:04:37
Windows環境ならconio.hの
getch()が一番使いやすいと思うんだけど。


11:デフォルトの名無しさん
09/04/18 17:27:15
scanfより
fgetsとsscanfを使う方がいいと思うよ

12:デフォルトの名無しさん
09/04/18 23:12:14
int main(void)
{
int a=0;
while(1){
scanf("%d",&a);
if(a==1||2)
continue;
printf("(tAt)ノ\n");
}
return 0;
}

1または2以外の数を入力したら下の顔文字が出力される。
と思ったらそうはなりません。
何処が間違ってるのでしょうか?
||ってこういう風には使えないのでしょうか?

13:デフォルトの名無しさん
09/04/18 23:14:32
if(a==1||a==2)

14:デフォルトの名無しさん
09/04/18 23:19:21
先ほど、C#スレに誤爆してしまいました。ですが気を改めて…
先日、C言語の勉強を始めた者です。まだまだ参考書の始めの方なのですが、エラーが起きてよくわからないことになってしまいました。
いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。
それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか?
とりあえず理想としては、エンターを押してからもう一度押す迄
変数X + 1の答えを変数Xに代入し続けるようなプログラムが作りたいのです。

一応、ソースを書いておきます。

#include <stdio.h>

int main(void)
{
int PS;
float PS2;
float PS3;

printf("まずは整数を入力してください。");
scanf("%d",PS);

printf("次は、小数を入力してください。");
scanf("%f",PS2);

printf("最後にもう一度、小数を入力してください。");
scanf("%f",PS3);


int end;

printf("では、なにか数字を入力してエンターを押すと、結果が表示されます。");
scanf("%d",end);


15:デフォルトの名無しさん
09/04/18 23:19:29
>>13
でけたー
ありがとー(o^_^o)

16:デフォルトの名無しさん
09/04/18 23:20:47
printf("最初の整数は %d ですよね?",PS);
;
printf("そして次は少数一回目は %f ですよね?",PS2);
;
printf("そして最後は、 %f となっておりますよね?",PS3);
;

int red;
printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。");
scanf("%d",red);

printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red);


return 0;
}

最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?
初歩の初歩の私ですが、どうかご教授をお願いします。

17:デフォルトの名無しさん
09/04/18 23:23:42
スパゲッティが食べたくなった

18:デフォルトの名無しさん
09/04/18 23:31:32
どっから突っ込んでいいやら・・・

まず人のソースを見て真似るところから始めれ
そんなソース書く奴今まで見たことないぞ

19:デフォルトの名無しさん
09/04/18 23:47:57
>>16
最後の閉じないってのは単純にコマンドライン上でそのプログラムを実行すればいいんじゃね

20:デフォルトの名無しさん
09/04/18 23:54:17
サンプルソース

#include <stdio.h>

int main()
{
double d;

printf("浮動小数点数を入力してください。");
scanf("%lf%*c", &d);
printf("入力した値=%f\n", d);

printf("Hit any key\n");
scanf("%*c");

return 0;
}

21:デフォルトの名無しさん
09/04/19 00:26:34
>>14
※1.return 0; の前に入力を待つには、char cc; scanf("%c%*c", &cc);
※2.C++でなくてCのはずなのに、実行文の途中で変数を宣言している。
※3.scanfで変数に値を入れるのは、scanf("%d", &変数名);
※4.デバッグ&コンパイルして実行してみると改行が無い。
 printf(".....\n", ....);

22:デフォルトの名無しさん
09/04/19 00:40:50
複数のPCが一つの共有メモリを参照しながら動作するような
システムがあるとします。
(共有メモリはどれか一つのPC上に存在する)

この場合ネットワーク越しにアクセス可能な共有メモリが
欲しくなってしまったのですが、ググってもズバリなページを
見つけることが出来ませんでした。
どなたかヒントになるような知識をお持ちの方、
お教え願えないでしょうか?

23:デフォルトの名無しさん
09/04/19 00:47:12


24:デフォルトの名無しさん
09/04/19 00:59:58
>>22
本当に共有メモリをネットワーク透過で使いたい場合、敢て挙げるなら分散共有メモリとか。
そうじゃなけりゃ分散オブジェクトとかでググれば?

25:デフォルトの名無しさん
09/04/19 01:47:36
スレ違いだったらごめんなさい。
今C言語のポインタを勉強しているのですが、

p : pの指すアドレスを参照
p+1 : pの指すアドレスを+1
p++, p=p+1 : pにpの指すアドレス+1を代入
*(p++), *p++ : pの指すアドレスの内容を参照後にpの指すアドレスを+1
*(++p), *++p : pの指すアドレスを+1した後にpの指すアドレスの内容を参照
*p : pの指すアドレスの内容を参照
*p+1, (*p)+1 : pの指すアドレスの内容に+1
*(p+1) : pの指すアドレスを+1した内容を参照
(*p)++ : pの指すアドレスの内容を参照後にpの指すアドレスの内容を+1
++(*p) : pの指すアドレスの内容を+1した後にpの指すアドレスの内容を参照
&p : ポインタ変数p自体のアドレス

このような解釈でよいのでしょうか?
自分で色々と試したのですが、認識の確認のため投稿させて頂きました。
誤りや他の記述方法があれば教えてください。
よろしくお願いします。


26:デフォルトの名無しさん
09/04/19 01:59:18
質問です。
3~4か月かけて、なおかつ3人ぐらいの人数で役割分担して作れるプログラミングってなんでしょうか?
ちなみに、Cプログラムで、習い始めて半年くらい。
Cについて一通り習いました。
考えたんですが、オセロとかは難しすぎますかね?

27:デフォルトの名無しさん
09/04/19 01:59:38
「アドレス」は+1ずつ変化するとは限らんよ。
pが charへのポインタなら +1だけど、shortへのポインタなら +2される。

一般的に書くと、sizeof(ポインタが指す先の型)だけ変化する。

28:25
09/04/19 02:04:35
>>27
理解はしていましたが文章の書き方がまずかったです(^^;)
ご指摘ありがとうございます。
他にはいかがでしょうか…?

29:デフォルトの名無しさん
09/04/19 02:26:19
>>25
間違ってるところはない。

30:デフォルトの名無しさん
09/04/19 02:26:49
>>26
俺もオセロ作ったけどCPUなしなら1か月もかからなかった

31:デフォルトの名無しさん
09/04/19 02:27:08
>>28
コンパイラあるんなら自分でそれぐらい確認出来るだろ
エアコンパイラ状態?

32:デフォルトの名無しさん
09/04/19 06:02:56
プログラム内で使う std::exception 派生の例外用のクラスを作って、throw(…) なんかも
きっちり書いてみたんですけど、でも例えば関数内で new に失敗して std::bad_alloc が
発生するようなケースを考えていると、結局は全て throw(std::exception) と書かなきゃ
いけないような気がします。throw の宣言はどう書くのが一般的 (慣例的になるか?) なんでしょうか。

33:デフォルトの名無しさん
09/04/19 06:21:34
ANSI ではポインタをバイト単位のリニアな数値だなんて規定はしていなかったと思うが。
だから a と b が NULL 以外の同じメモリブロックを差していても a==b が true になる
保証はないし、当然ポインタ同士の減算結果も保証してない。具体的には DOS のような
16bit マシン上のラージメモリモデルなんかは ++ が sizeof(型) 増える保証なんてない。

34:デフォルトの名無しさん
09/04/19 06:26:06
同じ集成体上のオブジェクトを差しているポインタ同士の減算は定義されていて、
要素数にしていくつ離れているかを返すことになっている。

35:デフォルトの名無しさん
09/04/19 06:36:00
集成体って配列の事? 構造体も含む?
まぁ ANSI で正確にはどう規定されているかとかまでは知らんけど。

36:デフォルトの名無しさん
09/04/19 06:42:21
構造体の中身は要素同士が連続してる保証がないから、構造体メンバのポインタの減算はできないはず。

37:デフォルトの名無しさん
09/04/19 06:53:00
far ポインタナツカシス

38:14,16
09/04/19 10:48:17
>>20-21
丁寧にありがとうございます。書いてないけど知りたかった改行の方法まで書かれてて、本当に助かります。
ところで、「%*c」というのはどういう意味なのでしょうか?

39:デフォルトの名無しさん
09/04/19 10:49:01
ポインタの概念はわかるんですが、じゃあ何に使うの?って感じです。

40:デフォルトの名無しさん
09/04/19 10:53:30
>>39
ポインタの使用例:

#include <stdio.h>
void f(int *p) { *p = 3; }

int main(void)
{
int i;
i = 100;
printf("%d\n", i);
f(&i);
printf("%d\n", i);
return 0;
}

41:デフォルトの名無しさん
09/04/19 10:57:04
>>38
URLリンク(ja.wikipedia.org)

42:デフォルトの名無しさん
09/04/19 11:34:03


43:デフォルトの名無しさん
09/04/19 11:34:45
>>40
ありがとうございます。

44:デフォルトの名無しさん
09/04/19 11:41:37
すまんが質問させてくれ

今とあるクラス(Aと過程)を更に別のクラス(Bと過程)で使おうとしてるんだが
Bクラスの中では、Aクラスを可変で使おうと思ってる

そこでAクラス内部にリスト処理を追加しようか、Bクラス内部で追加しようかで悩んでる

具体的には
Aクラスを↓のように追加するか
class AClass
{
private:
AClass *next,*prev;
};

Bクラスで
class BClass
{
private:
typedef struct _tag_hogehoge{
AClass *pA;
struct _tag_hogehoge *next, *prev;
} hogehoge;
};


果たしてどちらがいいだろうか?
オブジェクト指向ならAクラスに追加だけど
高速性を重視にしてるから、Bクラスの方が早いんだよね

みなさんならどうしますか?

45:デフォルトの名無しさん
09/04/19 11:43:52
>>44
std::list使う。

46:デフォルトの名無しさん
09/04/19 11:47:13
オブジェクト指向なら、Aが前後のインスタンスを意識するのは不自然じゃね?

47:デフォルトの名無しさん
09/04/19 11:54:49
>>45-46
レス有難うございます

>>45
std::listですが、これはランダムアクセスが遅い為に考慮しませんでした
ランダムアクセスでも高速で取得出来る様な独自のリスト処理を
AクラスかBクラスのどちらかに追加しようと思っています

>>46
うーん、そうでしょうか?
オブジェクト指向だからこそ、Aクラス自信のインスタンスは
Aクラスで処理するものだと考えております

48:デフォルトの名無しさん
09/04/19 12:07:31
原則としてAは自分自身のことだけ知っているべきで、自分がどう管理されるかは
管理するオブジェクトが知っていればいいんじゃないかな?
自分自身に next,prevがひっついてるとリスト構造を強要されるけど、
無ければ配列やハッシュマップなど他の管理方法をとることもできる。
あくまで原則論で、高速化などのために崩すこともあるけど。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch