[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/29 13:41 / Filesize : 252 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

52 名前:デフォルトの名無しさん [2008/01/17(木) 11:49:01 ]
>>42-43
ありがとうございます。
そうすると、unary_function()を引数にもらって、それを内部で使う関数というのは
かけないのですか?
void *のポインタをもらって、内部で適当にキャストして、unary_function()として
使えたりしないのかな。
とりあえずやってみます。


53 名前:デフォルトの名無しさん [2008/01/17(木) 12:13:01 ]
a=1/350,1/320,1/360,1/368,1/397,1/400
b=1/7.90,1/8.12,1/8.23,1/8.56,1/7.97,1/8.68
と仮定する。
for ($i=0; $i<=5; $i++) {
$p1 = (1/$a[$i])**$a * (1-1/$a[$i])**($play-$a);
$p2 = (1/$b[$i])**$b * (1-1/$b[$i])**($play-$b);
$p3 = $p1 * $p2;

$t_ap += $p1; push(@ap,$p1);
$t_bp += $p2; push(@bp,$p2);
$t_abp += $p3; push(@abp, $p3);
}

上記の構文で計算すると分母に差があるのでオーバーフローを起こす・・・と言われました。
**($play-$a);←この部分の計算に問題があるようなのですが、プログラムに疎いので良く判りません><
問題のある部分をどのように記述するべきなのかご指導お願い致します。m(_ _)m



54 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:18:48 ]
ここは、C/C++のスレなんだが

55 名前:デフォルトの名無しさん [2008/01/17(木) 12:20:36 ]
>>54
すいませんm(_ _)m
どこで聞けば良いのでしょう?

56 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:21:39 ]
自分の使ってる言語のスレを探せばいいだろうが
pc11.2ch.net/tech/subback.html

57 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:22:31 ]
>>52
unary_functionへの参照をもらえばいいんじゃないかね

58 名前:デフォルトの名無しさん [2008/01/17(木) 12:24:01 ]
>>56
それすら判りません><

59 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:26:19 ]
>>58
Perlについての質問箱 34箱目
pc11.2ch.net/test/read.cgi/tech/1199977642/

60 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:26:46 ]
コマンド名か、コンパイル時の画面に書いてないか。



61 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:29:49 ]
unary_functionの関数呼び出し演算子って
仮想関数になってんの?

62 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:53:20 ]
unary_functionはテンプレート引数をargument_typeとresult_typeにtypedefしてるだけにすぎん

63 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:54:49 ]
だよねやっぱ
じゃあunary_function型で引数を取ること自体が意味無い、だよね

64 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:02:36 ]
以下のソースプログラムをコンパイルして実行したのですが

M:\>sort3.exe
入力ファイル名: 
と表示されて、そこからどうすればいいかわかりません。

ファイル入出力とソートの宿題なのですが、
いかんせん超がつくほどの初心者なので…。

どなたかよろしかったらお願いします。
使っているソフトはVisual C++ 2005 Express Edition です。





65 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:03:04 ]
上のソースプログラムです。
/* sort3.c */
#include <stdio.h>
struct kamoku { char mei[20];
char kana[10];
int ei;
int koku;
int su;
int sha;
int ri;
}
#define SIZE 30
main(){
struct kamoku seiseki[SIZE], min;
int i,j,m,n;
FILE *input, *output;
char infname[16], outfname[16];

printf("入力ファイル名: ");
scanf("%s",infname);
printf("出力ファイル名: ");
scanf("%s",outfname);

if((input=fopen(infname,"r")) == NULL ){
printf("ファイルがありません\n");
exit(1);
}
if((output=fopen(infname,"r")) == NULL ){
printf("ファイルが作成できません\n");
exit(1);
}


66 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:06:19 ]
>>64
入力ファイル名を入力する。

・・・ってかプログラム以前にパソコン教室に通うべきだな。

67 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:12:05 ]
>>66
どのようなファイルを入力すべきかがわかりません。
初心者ですみません。

68 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:15:42 ]
>>67
鼬害。キーボードの使い方やファイルとは何かと言ったことは
プログラミング以前の知識です。

69 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:18:13 ]
>>67
ちゃんと授業にはでようね

70 名前:デフォルトの名無しさん [2008/01/17(木) 13:24:44 ]
>>57
やってみましたが、ダメなようです。

vector<int> line2vec2(string line, char delim, const unary_function<string,int> &func) {
int begin, end;
vector<string> v;
begin = end = 0;
while (line[end]) {
begin = end;
while (line[end] != delim && line[end]) {
end++;
}
v.push_back(line.substr(begin, end-begin));
end++;
}
vector<int> v2(v.size());
transform(v.begin(), v.end(), v2.begin(), func());
return v2;
}

>>61
仮想関数になっているかどうかはよくわかりませんでしたが、
stlのソースを見ていると、pointer_to_unary_functionというクラスが
ありました。今度はこれで試してみる。




71 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:40:25 ]
なんか無駄に複雑な事になってるな

72 名前:デフォルトの名無しさん [2008/01/17(木) 13:41:27 ]
>>70のつづき
もうなんだかわけがわからなくなってきた。
unary_functionはArgとResのtypedefなんですか?
STLのコンパイルエラーメッセージはやくにたたん。

73 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:53:51 ]
普通std::unary_functionは継承して使わないと役に立たないと思うんだが。

74 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:14:06 ]
>>72
そもそもunary_functionを引数にしようとした理由は?
普通継承したファンクタ作るよね

75 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:17:44 ]
std::unary_functionやstd::binary_functionを継承する理由は
std::bind2ndなどのアダプタがargument_typeとresult_typeを
必要とするから。

それ以上の意味はない。別にstd::unary_functionを継承しなくても
自分でargument_typeとresult_typeをtypedefしてもいい。

76 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:33:29 ]
こんな感じか?
template <typename T>
vector<int> line2vec2(string line, char delim, T func) {
transform(v.begin(), v.end(), v2.begin(), func());
}

line2vec2( , , std::ptr_fun(関数ポインタ));
line2vec2( , , 関数オブジェクト());

77 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:35:18 ]
間違えた
>transform(v.begin(), v.end(), v2.begin(), func());
transform(v.begin(), v.end(), v2.begin(), func);こうだな

78 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:04:35 ]
>>76-77
>>42-43

79 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:06:07 ]
>>72
今回のエラーメッセージは割と理解できるものだし、
そもそも何が駄目なのか指摘されてるのに
まるで見当違いの方法を試しているのはお前自身だ

80 名前:76 mailto:sage [2008/01/17(木) 15:10:05 ]
>>78
>>43はstd::ptr_funが使えない。



81 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:45:44 ]
>>80
おう、こりゃ失礼

82 名前:コンパイルできた [2008/01/17(木) 15:48:16 ]
皆さんのおかげ様で、とうとうできました。
ソースは以下です。

template <class T, typename T2>
vector<T> line2vec2(string line, char delim, T2 func) {
int begin, end;
vector<string> v;
begin = end = 0;
while (line[end]) {
begin = end;
while (line[end] != delim && line[end]) {
end++;
}
v.push_back(line.substr(begin, end-begin));
end++;
}
vector<T> v2(v.size());
transform(v.begin(), v.end(), v2.begin(), func);
return v2;
}
この関数をこんな感じで使う。
string s = "1 2 3 4 5 - 6 7 8 9";
vector<int> v = line2vec2<int>(s, ' ', string2int());


83 名前:コンパイルできた [2008/01/17(木) 15:48:54 ]
<82の続きです>
ちなみにstring2int()は以下のように定義しました。
class string2int : public unary_function<string,int> {
public:
unary_function<string,int>::result_type operator() (unary_function<string,int>::argument_type str) {
if (str == "-")return 0;
else return static_cast<int>(atoi(str.c_str()));
}
};

いやー、すげえ感謝感謝。今回答えてくれた方々には昼飯一回おごってもいいくらいス。


84 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:57:07 ]
昼飯一回程度の感謝

85 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:04:00 ]
>>83
もうちょっと本買って読んだ方がいいな

86 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:04:23 ]
名無しの書き込みから個人を特定して昼飯をおごる程の感謝
えらく大変だな


87 名前:76 mailto:sage [2008/01/17(木) 17:44:29 ]
>>83
昼飯はいいから俺がニート脱出できるように神様にお願いしといてください。

88 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:00:30 ]
#include <iostream>
#include <cstdio>

char ch[10];

int main()
{
while ((cin.getlie(char, 10)) != EOF) {

}
}


これをコンパイルしようとするとwhileの行でエラーが出るのですが、
何がいけないのでしょうか??

89 名前:88 mailto:sage [2008/01/17(木) 20:02:08 ]
すいませんwhileの行のcharはchの間違いです。

90 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:03:38 ]
>>88
余分なものが付いているk 「ar」 a



91 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:04:32 ]
getlie

92 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:04:36 ]
getlie ではなくて getline な。
分かってるとは思うけど

93 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:04:38 ]
>>88
std:: n が足りない

94 名前:88 mailto:sage [2008/01/17(木) 20:12:05 ]
回答くださった方ありがとうございます。
すいません色々抜けていました。。orz
正しくはこれです。

#include <iostream>
#include <cstdio>
using namespace std;

char ch[10];

int main()
{
while ((cin.getline(ch, 8)) != EOF) {

cout << "test";
}
}


これでもコンパイルできないのです。
whileの行でエラー出ます。



95 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:14:35 ]
>>94
!= EOFこれが不要。
質問するときはエラーの内容も書いてくれ。

96 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:14:54 ]
>>94

#include <iostream>

char ch[10];

int main()
{
 while (std::cin.getline(ch, 8)) {
  std::cout << "test";
 }
}

97 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:35:00 ]
#include <iostream>

int main()
{
  char ch[10];
  while (std::cin.getline(ch, sizeof ch)) {
    std::cout << "test";
  }
}


98 名前:デフォルトの名無しさん [2008/01/17(木) 21:21:43 ]
Fedora6 gcc
でファイルの更新を検知するプログラムを作りたいのですが、
更新までブロックする関数を教えてください。

if (ファイルの更新までブロック)
{
//更新された
read();
...
}
みたいなカンジです。

ちなみにtailのソースを見てみたのですが、
1秒毎にファイルが更新されたかチェックして処理をしているようです。

何秒毎にチェックするのではなく、更新までブロックできる関数がわかればいいです。

よろしくお願いします。

99 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:29:34 ]
なんでそんなものが存在するという前提で物事を進めようとするの?

100 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:38:03 ]
てゆーかチェックせずに、更新されると発見してほしいのかよwwwwwwwww



101 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:42:18 ]
Windows だとディレクトリの更新を検知してシグナル送ってくれる
FindFirstChangeNotification/FindNextChangeNotification って API があるから
他の OS でもそういう API があるんじゃないかと思う気持ちも分からんでも無い。

102 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:53:22 ]
>>98
Linuxなら可能。
dnotify inotify といったキーワードで調べてみて。


103 名前:デフォルトの名無しさん [2008/01/17(木) 22:30:53 ]
プログラムって教科で分けると数学ということですか?

104 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:35:11 ]
>>103
いや、国語だろ

105 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:38:31 ]
普通に、技術家庭科。
実際、技術家庭科の時間にVBプログラミングやらされてたし。

106 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:39:31 ]
情報だろ

107 名前:デフォルトの名無しさん [2008/01/17(木) 22:45:09 ]
統一された見解が無いということですか?
哲学っぽいですね。

108 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:47:06 ]
分野でいうと情報処理だろうな。
つか、いちいちageんなって。

109 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:51:45 ]
>>99
Winだと
tp://www.google.co.jp/search?hl=ja&q=ReadDirectoryChangesW&lr=
みたいな感じで、存在するんだよ。だから、98もそこから、Linuxにも存在すると期待してるんじゃないかな……
ちなみに、俺は知らん。

110 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:01:49 ]
高専だと、情報基礎以外に、制御とか計算機科学、電子、通信、ソフ技、ハード技、プロ技
至る所でプログラミング漬けだったけど。時代遅れのw



111 名前:デフォルトの名無しさん [2008/01/17(木) 23:02:50 ]
>>102
具体的にありがとうございます。
手詰まりだったので、大変助かりました。
ありがとうございました。

>>100
何が言いたいのか分かりません。

112 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:15:41 ]
>>110
そういえば親戚に情報基礎の教科書見せてもらったら15年前と大差なくてワロタ

113 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:17:49 ]
15年前って言うと、数学の教科書の後ろの方に載ってる、
実際には授業で何にも使われない BASIC のことか?

114 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:20:48 ]
基礎は不滅です。

115 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:23:16 ]
流動的なものは情報Aなんかに任せとけば良いよ。

116 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:30:52 ]
>>113
入力・出力・制御・演算・記憶
FFの応用回路・BASIC・CASL
のあたり。

117 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:46:44 ]
ああ、高専の教科書か。
それは・・・知らんから何とも言えん。

118 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:51:09 ]
情報関係の教科書書いてる教授がwinの基本操作とかCDの焼き方きいてくるからね〜(実話

119 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:52:34 ]
VC++にtypeof()みたいのはないですか?

120 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:56:19 ]
BOOST_TYPEOF



121 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:56:28 ]
標準C++的にはtypeid演算子

あとMFCがなんか持っていた気がする。
C++/CLIなら当然.NET Frameworkのリフレクションが色々使える。

122 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:12:51 ]
#define foreach(t, o, i) for(t::iterator (i)=(o).begin();(i)!=(o).end();++(i))
な感じのマクロの場合、それを使うと方を渡さなくて良くなりますか?

123 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:15:49 ]
そんなマクロを作るな。
制御文をマクロ化すると
自分以外に読みづらいので
悪い作法だと言われている。

124 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:24:10 ]
Cの文法で基本的な事かもしれないのですが、Linux のカーネルソースを読もうとして
挫折してしまったんですが、例えば
struct hw_pci mr300_pci __initdata = {
.nr_controllers = 1,
.preinit = mr300_pci_preinit,
.swizzle = pci_std_swizzle,
.setup = ixp4xx_setup,
.scan = ixp4xx_scan_bus,
.map_irq = mr300_map_irq,
};
のような struct 宣言が書いてありましたが、
.(dot)var = 値 のような記法って、そのメンバーの初期化という意味になるのでしょうか?
手元のCの文法書に見つからなかったのですが、この記述の説明文献ってありますかね?


125 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:25:09 ]
C99 から導入された文法。
そのメンバの初期化という意味でおk。

126 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:26:17 ]
C99 はここに簡単にまとめられてる。
seclan.dll.jp/c99d/

127 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:31:36 ]
>>125-126 ありがとうございました。逝ってみます。

128 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:34:13 ]
>>123
便利って書いてあるよ。
www.jah.ne.jp/~naoyuki/Writings/STL.html

129 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:41:39 ]
>>122
BOOST_FOREACH

130 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:54:48 ]
>>129
むり



131 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 01:05:40 ]
122はコンテナの型、BOOST_FOREACHは要素の型を渡す必要がある点では、どっちもどっち。

132 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 01:12:38 ]
長いのよ

133 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 01:41:49 ]
適当にマクロで短い名前を付ければいいだろ。

134 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:06:16 ]
VC++2005、WinXPです。

チェックボックスつきのツリーコントロールを作りたいと考えています。
チェックボックスでは三つのチェック状態をあらわしたいと思っておりまして、
ちょうど、VCをカスタムインストールする時に出てくるチェック付きツリーコントロールのような物を考えております。

これを実現する簡単なAPIないし、クラスはないでしょうか?

135 名前:デフォルトの名無しさん [2008/01/18(金) 04:20:09 ]
xcode環境でc++を開発している人はいますか?
emacsよりもイイですか?


136 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 04:45:13 ]
>>135
そもそもIDEとエディタを単純比較するのが間違ってる気がするよ!
気持ちは分かるけど・・・・・・

137 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 05:43:59 ]
newでメモリを確保してdeleteをせずプログラムを終了した場合ってそのまま
ずっとメモリ確保されたままになるの?

138 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 05:45:44 ]
cout
って何の略なんですか?

139 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 05:46:08 ]
大抵はOSが何とかしてくれる

140 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 05:46:38 ]
>>138
console out



141 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:06:10 ]
>>139
ありがとう
再起動するまでずっと無駄に領域とられたままかと思ってたけどOSがどうにかしてるのね

142 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:08:07 ]
>>138
console output

143 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:08:37 ]
極めて古い OS だと分からんけどね。

144 名前:デフォルトの名無しさん [2008/01/18(金) 11:36:39 ]
>>136
emacs が好きなんですが、
class-name.<Tab>とか押すと、method-nameが選択できたり、
method一覧がかんたんに見れたり,そういう環境が羨ましい。

145 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:49:43 ]
VB6、.NET言語のインテリセンスに比べればどうということはない。

146 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:51:24 ]
インテリセンスは正直凄いと思う。

147 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:54:04 ]
VCのは御馬鹿

148 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:20:50 ]
eclipseとかもVC#のインテリセンス真似してくれればいいのにな

149 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:26:53 ]
糞lipseは重くて嫌いだ。

150 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:57:49 ]
最近のVSはC#だけインテリセンスがよく効く
C++はおざなりってか



151 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:35:44 ]
C++は複雑すぎるからな

152 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:59:29 ]
てゆーか昔から






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef