C++勉強しようと思うんだけど・・・

このエントリーをはてなブックマークに追加
1初心者
C++勉強しようと思うんですが、どこのOSが一番
お勧めなのでしょうか?
初心者の自分ですが、皆様のお知恵をお借りしたいと
思いますので、よろしくお願い致します。<(_ _)>
むしろ MacOS X で Objective-C を薦める
一見さんはお断り
うにくすに決まってんだろうが
でも1は挫折すること確実。
頼むからJavaで収まっていてくれ
5初心者:02/03/17 04:52
>>2さん
マックですか・・・自分のはWINなので・・・
6デフォルトの名無しさん:02/03/17 04:55
>>5さん
UNIXですか?
75=初心者:02/03/17 04:58
間違えた・・・
>>4さん
UNIXですか?
Linuxでいいんじゃない?処理系ただだし。
無難なスペックのマシン(新しすぎず、古すぎず。)
に雑誌の付録のディストリ入れてhello.cppでもコンパイルすれ。
>>5
>どこのOSが一番お勧めなのでしょうか?
と言ったじゃないか。
まあいい。とりあえずこの Wiki を嫁
http://paming.s7.xrea.com/ykwk166_kai/yukiwiki.cgi?mycmd=read&mypage=%5B%5B%96%C0%82%A6%82%E9%8F%89%90S%8E%D2%82%C9%93K%90%D8%82%C8%8C%BE%8C%EA%82%F0%8F%D0%89%EE%82%B5%82%E6%82%A4%5D%5D

参照資料はこのスレから探せ
お勉強ページ 勝手にリンク 第2版
http://pc.2ch.net/test/read.cgi/tech/967778156/
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/

言語に関する質問はここだ
タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/
C++ 相談室 part5
http://pc.2ch.net/test/read.cgi/tech/1014217496/
VisualC++相談室 6
http://pc.2ch.net/test/read.cgi/tech/1011615035/
C Builder相談室 Part3
http://pc.2ch.net/test/read.cgi/tech/1016065855/
でだ、かなりの確率で挫折するだろうことを考えれば、
金を投資するのは勿体無いだろうから
Borland C++ Compiler を使うことをお勧めする。
http://www.borland.co.jp/cppbuilder/freecompiler/

チュートリアルとしてはやる気なく猫を薦めるか。
http://www.kumei.ne.jp/c_lang/
11初心者:02/03/17 05:04
書き込み有難うございます。
ちなみに相場はいくらくらいなのでしょうか?
12デフォルトの名無しさん:02/03/17 05:07
相場?
それこそピンカラ兄弟
でも、ある意味相場は「ただ、無料」といった所でしょうか
13初心者:02/03/17 05:08
ちなみにC++を覚えたいという目的は、PC(プログラマブルコントローラー)
とリンクさせて制御系のシステム構築が出来るようになるのが
目的なのですが・・・
14初心者:02/03/17 05:09
??
物によっては無料なんですか??
gnu compiler collection(?) = free
borland c++ = free
LSI-C Sishoku =free
16デフォルトの名無しさん:02/03/17 05:12
>>15さん
それはDLで無料ということですか?
look at license
>>13
組み込み系のスレ
●●●くみこの組み込み相談室●●●
http://pc.2ch.net/test/read.cgi/tech/988084737/

>>15
LSI-C は C++ 使えるっけ?
1 の目的に C++ が必要かどうかはともかく。
19デフォルトの名無しさん:02/03/17 05:16
>>初心者さん
俺にはその目的を聞いても
わからないのでせめてターゲットOS名だけでも教えてください
ちなみに>>15さんのはDLもできるし
雑誌に載ってるのもある。全部無料です
20初心者:02/03/17 05:23
規約の文章の中に「本ソフトウェアをインストール,コピー,
またはその他の方法で使用することは,
ライセンス契約のすべての規定に従うことに同意したことになります。
このライセンス契約の規定に同意しない場合,
本ソフトウェアを使用せずに購入元へ速やかに返送して,
返金を受けてください。」
と書いてあるのですが、本当に無償なのですよね??
21デフォルトの名無しさん:02/03/17 05:24
いきなりかい?!
で、なにインストールしようとしてますか?
ネタに 1 票
23デフォルトの名無しさん:02/03/17 05:25
>>21さん
とりあえず「ボーランド」です。
どのコンパイラのライセンスよ・・・
とにかく無償なんだから無償。
合法で落とせるものは落としてしまえ。
25初心者:02/03/17 05:26
2621:02/03/17 05:27
じゃあ、いいんじゃない?
C++の道は険しいががんばってくれ

(プログラム経験あればインストールまで聞くことないと思うんだが・・・)
27デフォルトの名無しさん:02/03/17 05:27
C++やる前にCを覚えた方が良いですか?
28デフォルトの名無しさん:02/03/17 05:29
やっぱり・・・
まあ、いきなりC++からやってもいいけど
その調子だと「ファイル名に拡張子も表示する」
のチェックボックスもOFFになってると思われ
29デフォルトの名無しさん:02/03/17 05:30
まったくプログラミング初めてならC++ちょくで
経験あるならCから。

という意見を言ってみる。
3030!:02/03/17 05:32
    ∧ ∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   <  納豆食って寝る!
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
31デフォルトの名無しさん:02/03/17 05:35
皆様、書き込み有難うございました。
根気強く取り組みます!!
また、相談に乗ってもらえたらうれしいです。
32デフォルトの名無しさん:02/03/17 05:35
     ______ 
    |         |
    |  (`Д´ ) イヤ!!
   /⌒⌒⌒⌒⌒/ |
 /       /  /
 |  ̄ ̄ ̄ ̄ ̄|  /
 |______|/
33初心者:02/03/17 05:36
Σ(^∇^;)えええええ〜
34デフォルトの名無しさん:02/03/17 05:37
1のカワイイ♥素顔が>>33で垣間見えた
今日のオカズは33だ〜わーい
35初心者 :02/03/17 05:38
で、コマンドプロンプトってどこにあるんですか?
3627:02/03/17 05:39
プログラムってどういうもの?どういうふうに動いてるの?なにができるの?
ってのを知りたくてjavaから入ってるんですが、CやC++のほうが良いでしょうか?
3734:02/03/17 05:39
(゚д゚)ポカーン
ネタだよね・・・・
38初心者(本物):02/03/17 05:40
>>35さん
偽初心者は辞めてください。<(_ _)>
>>36assemblerをやりましょう。
話はそれからです。
40初心者:02/03/17 05:43
アセンブラー・・・
言葉だけなら覚えてるんですが・・
4127:02/03/17 05:44
アセンブラって一番難しそうに思うんですが?
42デフォルトの名無しさん:02/03/17 05:45
     ______ 
    |         |
    |  (`Д´ ) ソンナコトハナイ!!
   /⌒⌒⌒⌒⌒/ |
 /       /  /
 |  ̄ ̄ ̄ ̄ ̄|  /
 |______|/
このスレの二の舞になりそうな予感

プログラミング
http://pc.2ch.net/test/read.cgi/tech/1014370940/
44デフォルトの名無しさん:02/03/17 05:53
        ♪
     ♪___♪_
    | ヽ( ゚д゚)ノ   |
    |   (へ )    |
   /⌒⌒⌒ >⌒/ .|
 /       /  /
 |  ̄ ̄ ̄ ̄ ̄|  /
 |______|/
45デフォルトの名無しさん:02/03/17 05:53
     ______ 
    |         |
    |  (`Д´ ) ソンナコトハナイ!!
   /⌒⌒⌒⌒⌒/ |
 /       /  /
 |  ̄ ̄ ̄ ̄ ̄|  /
 |______|/
46初心者:02/03/17 06:24
DLしたのですが・・・
47カヲル:02/03/17 06:27
できたかい、シンヂ君
48初心者:02/03/17 06:30
この無償ってのは、バージョンアップのDLじゃないんですか??
49初心者:02/03/17 06:34
これって製品版買わないと意味がないんじゃないですか???
50デフォルトの名無しさん:02/03/17 06:38
WINなんだろ?
悪い事言わないから.NET FrameWork落としなよ。
今ならC#も付いてくるよ?
51カヲル:02/03/17 06:39
GUIでコンパイルしたきゃ製品版買わなければならないだろうね。
でも僕たちにはDOSという素晴らしき(shell>dos)ものがあるだろう?
学習にはコマンドラインでコンパイル!で十分だよ。
>>48-49
ここはメモ帳や日記帳じゃないのだから
要領を得ない独り言はやめてくれ。

http://www.borland.co.jp/cppbuilder/freecompiler/
にある Borland C++ Compiler 5.5 は無償の製品だ。

この辺でも読んでくれ。
Borland C++ Compiler 5.5 FAQ
http://www.neco.nu/gohodoji/bccfaq.html
Borland C++ Compiler 5.5をインストールして「ちょっと」使ってみる
http://homepage1.nifty.com/tyuuki/old/cc/bcc_install.html
明日には飽きてるに1000ぺリカ
54初心者:02/03/17 08:56
>>53さん
電験の勉強もしてるので毎日やれるとまではいかないと思います。
頑張りたまえ。
C++ができればJAVAやC#なんかもできるようになるから。
但し、オブジェクト指向でやらなきゃ意味ないよ?
>54
いそがしくても、30分でも1時間でもいいから
毎日やったほうがいいよ。
57初心者:02/03/17 10:17
すみません。
早速新たな質問なのですが、C++で
極端な話「○」「△」「■」とかの絵は書けるのでしょうか?
58デフォルトの名無しさん:02/03/17 10:23
DOSだよな??窓じゃなくて。
出来ない事はないが・・・何の為に?
59デフォルトの名無しさん:02/03/17 10:23
追試代わりのレポート?
60デフォルトの名無しさん:02/03/17 10:52
>>58さん
窓はWIN上じゃないと出来ないんですよね?
DOSでもいいのですが・・・
絵の中に表示窓とかを作ってみたいなと思ったので。
>>1
とにかくコイツすごいよ
この調子で、1000までいったときには
>>1は俺たちのレベルを超えてるだろうね
そして、「2chだけでC++を学ぶ方法」なんていう本を
出すんだろうな
62デフォルトの名無しさん:02/03/17 11:00
・・・・出来る、と言っておこう。
ただし、DOSでやると面倒くさいぞ?
まずhello worldからやってみ。
printfとcoutそれぞれで。
63デフォルトの名無しさん:02/03/17 11:10
hello world??
こんな感じのやつですか?

#include <stdio.h>

void main(void) /* ansi c の仕様 */
{
int a,i;
printf("一回目の回数を入力して下さい-->");
scanf("%d",&a);
if (a>=0)
printf("一回目は %d 回繰り返します \n",a);
else
printf("入力ミスです。もう一回「test」から立ち上げて下さい。\n");
for (i=1;i<=a;i++)
printf("あ\n");
for (i=1;i<=a;i++)
printf("い\n");
for (i=1;i<=a;i++)
printf("う!!\n");




}
64初心者:02/03/17 11:12
>>63>>1です
要は、文字表示から理解しろと?いうことですか?
>>61
そうだな、一人ぐらいこのスレで育ててもいいな
ネタスレになってるのかと思ってのぞいてみたらそうでもないんだな。
親切な人がいたもんだ。
できてるやん。
その調子で頑張れ〜〜。
関数、構造体、ポインタが出来れば問題なしだな。
68デフォルトの名無しさん:02/03/17 11:25
かっこいいGUIでやりたいんですとか我儘言われても面倒だから、
コンソールでシコシコやれよ糞ってことだと思います。
void main(void)
になつかしさを感じつつ
盛れもscheme勉強したいんだけどスレ立てるからみなさん教えてくだされ。
71初心者:02/03/17 11:32
■の絵の書き方ってかなり面倒くさいんですか?
(゚Д゚)ハァ?
#include <stdio.h>

int main()
{
printf("■");
}
エスケープシーケンスを使えば出来る。
面倒くさい、と言うよりは余り意味がないだけ。
(C++でやる意味が無いともいえる)
75デフォルトの名無しさん:02/03/17 12:47
>>74さん
エスケープシーケンス??
エスケープシーケンスで線の引けるコンソールは、昔たしかにあった、が、>>74はそれを言っているんでは?
ないだろうな、まさか…
確実に無い。
だから面倒くさいのだよ。
そして意味が無い。
その機能が無くなったって事は、必要でなくなったと言う事だ。
78初心者:02/03/17 13:55
てことは、C++でコンソール画面とかを作る場合はどうなるのですか?
いまいち何がしたいか分からんが・・・
エスケープシーケンスならココみりゃわかる。
ttp://www.kumei.ne.jp/c_lang/intro/no_27.htm
80初心者:02/03/17 14:26
監視画面とかを後々作れるようになりたいのですが・・・
後々のことより
基本を覚えろ
・・・DOSで監視画面?
CUIで監視画面?GUIじゃなくて?
WINに行きなさい。理由は、楽だから。

>81
禿道!!

>>1
テキストグラフィックの描画は、
curses や newt といったライブラリを使えば比較的楽にできる。
UNIX だけど。
85デフォルトの名無しさん:02/03/17 14:56
みなさん、色々なご意見有難うございます。
基本あるのみですよね。
>>84さん
curses や newtとは??<(_ _)> 「質問ばかりですみません・・・」
お前等全員死刑。
仲良く殺し合って生き残った奴は自殺して下さい。
87:02/03/17 15:15
                _l_
            ・   .|  |     ノ ̄7
                ‐┴┴‐     _ノ                C
            ・   --‐;=‐              わ    +
    i'´ ̄`ヽ         i´     ヽ ,ノ    ま    か   +
    ) ク  )    ・    `‐      ノ     た    ら    も
    (  ク (       -/一           立    ね   
    ) ク  )       '" ̄ヽ    ̄,フ      て   え   
    (  : (       ‐--'´    ノ\.    ち   の   
    )  :  )         ┼|-、            ゃ   に
    !、__ (         ! '´   │  ,      っ
         ̄        ,.‐ -─ 、.   |_,.ノ      た
              ,.‐'´   -‐'´  ヽ、        :
           ,.‐-'   十 __    i.       :
          |/|| l.     |   ´    l、     :
              l l'∧._  ! `‐-     i、
    i'´ ̄`ヽ     l iラ i:)         i、
    ) ク (      ム_,イl          i、
    (  ク  >     ヘ. |_,,. ‐i     i、.ヽ、i:、
    ) ク (     ,. ‐''"   _| |i |i. | i. i i l、i_
    (  :  )   /_,,. ‐''" ̄ l. | i | l | .l l | |  `‐.、
    )  : (   /       .l !. || l. ! .l.l |.!
    !、__,ノ /            il  !  l| l! |!
>>85
こんな感じだ。
http://www-6.ibm.com/jp/developerworks/linux/010126/j_l-python6.html
まあ Windows だったら普通に GUI プログラム作ったほうがいい。
89初心者:02/03/17 15:36
>>88さん
ありがとうございます。<(_ _)>

しばらく大人しくしてます。
90デフォルト名有さん :02/03/17 22:39
何気に面白いスレハケーン!
この調子で1000までやってくれクルミ
>1
へばったかね?
92初心者:02/03/18 21:28
>>91
悪戦苦闘しながらやってます。
つーかさ、そんなにGUIしたいならDel6personalの方がいいんとちがうの?
>>93
このスレにもっと即した言語としてC++Builderを挙げてみる。
95初心者:02/03/18 21:59
あのー・・・
GUIってなんですか?
>>95
君のカキコを読んで空気中なのに溺れた・・・。
(゚д゚)ポカーン
98初心者:02/03/18 22:06
・・・・・
すみません・・・
本当に初心者なので。
グラフィカルユーザインタフェース
100get
只今からこのスレは


     「>>1を1000までに中級者に育てるスレ」


となりました。
101初心者:02/03/18 22:12
みなさま、これからも宜しくお願い致します。<(_ _)>
グラフィカルユーザインタフェースていうのは、
半分完成されたOSみたいなものですか??FIXみたいな
ものに近いとか??
WindowsアプリはGUIだ。
1がいまやってんのはコンソール。
>>1はGUI以外のアプリケーションを使ったことが無いと見た。
いいか、スタートメニューから「コマンドプロンプト」か「DOSプロンプト」を
起動しろ。でそこに「ping pc.2ch.net」と打ち込み[Enter]を押す。
そうすると、なにやらつらつらと文字が出てくるだろ?

それが「GUIではない」アプリケーションなんだよ。
>>103
GUIではないと言うかCUI
Graphical User Interface(GUI)
直感操作できるような(どんなアフォでもわかるような)
人間とコンピュータとの接点、裏では土方がとても苦労している。

Character User Interface(CUI)
文字を基本として操作するタイプ。
慣れた人だと特定の操作はこっちのほうが早い、と言う。
なんつうかこういうアプリのほうが作るの簡単(場合にもよるけど)
>>105
CUI(と言うかDOSとUNIX)の標準入出力はとても強力だね。
>>106
ここはしったかスレではありません
>>106 DOSの標準入出力は貧弱ですが、何か?
>>108
リダイレクト(入力、出力、追記)、パイプ。

ここまではDOSもUNIXも共通。
UNIXの標準入出力ってもっと強力?・・・だな、デバイスとかも制御出来るし。スマソ。
>>109
プロセス間通信の有無が重要。
111デフォルトの名無しさん:02/03/19 10:29
>>109
> デバイスとかも制御出来るし。
意味不明。
そもそも DOS に“プロセス”などという概念は無い。
みんな親切だねぇ。
ここで、こんなに親切なのは珍しいな。
感謝しろよ<<1。
echo "1" > /dev/mydevice
みたいな(上は概念ね。)
>>113
ないわきゃねーだろ
117初心者:02/03/19 19:11
皆様、こんばんは。<(_ _)> 
この先どうなるのか?という不安を抱えながら取り組んでいます。
そこでちょっと勝手なわがままなのですが・・・
何か簡単な宿題を出していただけませんでしょうか?
場合によっては、宿題を頂いてからお返事できるまで異様に
時間がかかるかも分かりません。(悩みに悩んで組めないかもしれません)
その時はお許し下さい・・・。
>>117
なるべく速い速度で100個のランダムな数字を小さい順に表示しなさい。
(STL禁止。)
119初心者:02/03/19 19:18
>>118さん
なるべく早い速度??ですか?
>>119
速度のことはまだ気にしなくていいよ。まずは、
「100個のランダムな数字を小さい順に表示しなさい」
の部分を作って。
無難なところで・・・
キーボードから"0"以外の整数を何個か打ち込んでいく。(何個でもいい)
で、気が済んだところで"0"を打ち込む。
そうすると、今まで打ち込んだ数字を逆順に出力して終了するプログラム。

それが完成したら、こんどは打ち込んだ順に出力するのも作る。

それも出来たら、打ち込んだ数字を大きい順(または小さい順)に並べ替えて
出力するものをつくる。
122初心者:02/03/19 19:25
>>120さん、>>121さん
やってみます。少し期間を下さい・・・


while(dat != 0)
{
dat = 0;

for(i = 0;i < 99;i++)
{

if(data[i] > data[i + 1)
{
temp = data[i];
data[i] = data[i + 1];
data[i + 1] = temp;
dat++;
}

}

}

これより速く。C++関係ないな・・・。
124121:02/03/19 19:29
やっぱり最初は「何個でも」という制限を付けずにやってみな。
たとえば100個以内とかね。

それで「並べ替えて…」まで出来たら、次に個数制限をなくした物を
作るといいかもしれない。
それを作れれば、>>120のエッセンスも含まれるから、いいかなーー
>>123
しまった。do whileの方が良かったかも・・・。

とにかく、バブルソート(だよね?)にうち勝つソートプログラムを。w
126初心者:02/03/19 19:49
>>120さん
最初はこれでもいいですか?

#include <stdio.h>

void main(void)
{
int a;
a=0;
while (a<100) {
a=a+1;
printf("%d \n",a);
}
}
>>126
ごめん。
int data[100]と言う配列にランダムに数字が入ってると考えて、それを並び替えて小さな数から表示。
128初心者:02/03/19 20:51
ランダムに・・・
う〜む・・・
129デフォルトの名無しさん:02/03/19 20:54
つぅかいきなりソートはむずいっしょ。
それより>>124やれば?あと計算に慣れる、ということで1000以下の素数を出力、
とかもいいかも?
130120:02/03/19 20:56
>>126
もともとは>>127の意味で>>120と書いてたんだけど、>>126
見る限り、「ランダム」も「配列」も扱うには早すぎるみたい。

なんか参考書を持ってて、それを見ながら考えたんだろうけど…。
その本を見て、「インクリメント演算子」っていう項目を索引で
調べて、理解して。
もひとつ、「ループ」か「繰り返し」か「for」って項目を、
同じく索引で調べて理解。

両方理解したら、>>126のプログラムを書き直して提出ね。
えっと、C素人ってことで良いのね。

じゃあ、九九の表をコンソールに書きましょう

  1 2 3 4 5 6 7 8 9
1  1 2 3 4 5 6 7 8 9
2  2 4 6 81012141618








なかんじで
132デフォルトの名無しさん:02/03/19 21:12
@九九の表をコンソールに書きなさい。
A何個か(但し100個以下)0以外の整数を打ち込み、0を入力したら、今までの
 入力値を逆順に出力しなさい。
BこんどはAを入力順にしなさい。ついでに平均も求めよう。
C1000以下の素数を全て表示するプログラムを作りなさい。
 出来たら結果をテキストファイル"prime.txt"に保存するように改良する。
D100個の配列に乱数を格納し、それをバブルソートで整列して出力する。
 できたらクイックソートに挑戦。
E線形リストを用いて、Aの「100個以下」の制限を無くしなさい。

ま、ここまでをこのスレが1000逝くまでに達成すること。丸付き数字すまん。
>>132
>100個の配列に乱数を格納し、それをバブルソートで整列して出力する。
 できたらクイックソートに挑戦。

あら、問題の意図バレバレね。まぁ、あたりまえか(^^;
134初心者:02/03/19 21:19
がんばってやってみます。
残り865
136デフォルトの名無しさん:02/03/19 21:56
137デフォルト& ◆tizwA9L. :02/03/19 22:19
じゃ1000レスまでに中級車にさせてやったら俺とえっちキボヌ
>>132ずいぶん簡単だなーもう150くらいでできそう

>>138
はいはい、覚えたての知識自慢したい方は別のスレ行ってね。
140デフォルトの名無しさん:02/03/19 23:21
http://www.geocities.co.jp/SiliconValley/5634/index.html
ここを読むべし。ためになるかも、いろんな意味で。
>>132
基本的な方針はいいけど…5のクイックソートと、6の線形リストは
自作しろっていうの?
Cプログラマを育成しているんならその教育は不可避だろうけど、
>>1の初心者はC++をやりたいって言ってんだから、それは不要だと
思うけど。
とっととstd::sortとstd::vectorの使い方を覚えさせた方がいいよ。
>>141
何でも構造と簡単な実装を知ってる方がいいという配慮。
じゃないとSTLのありがたみなんてわからないっしょ。

話を聞く限りではC++と言うかC初心者みたいだからね。
143141:02/03/20 10:05
>>142
その「構造と簡単な実装」ってのは、「配列」と「バブルソート」で
達成されるんじゃない?
配列で「範囲外アクセス」、バブルソートで「大量データソート」を
経験させれば、十分にSTLのありがたみはわかると思われ。

Accelerated C++序文:
自動車を運転するのに、自動車エンジニアになる必要はない。

C++プログラマを目指すんなら、「実装の詳細を理解しようとする」
よりも「すでにある便利なものを使いこなす」癖をつけさせるほうが
いいと思う。
>>143
まぁ、それも手。生産性抜群だ。
そして低レベルな部分を作ることが出来るプログラマが減る。
誰か一人は、そういうライブラリの原理がわかってて、
ソートだったらソートごとの特質もわかってて、
どういうときにどれを選べばいいかわかってなきゃいかんのだけどね、
全員が全員運転手だと、やっぱり、だめなのよ。

タクシー会社にも、必ず整備できる人がいるの。
いなければ、整備する会社に業務委託してるの。

業務委託すると金がかかるし、いつでも整備万全って訳にはいかないの。

あなたのいるプロジェクトをね、いつでも整備万全のまま動かしたいなら、
自分が整備士になるか、部下を整備士にするか、どっちかしかないの。

Accelerated C++の序文はね、これから運転手になろうって人に向ける言葉
だからね、あなたや、あなたの周りの人がそれを鵜呑みにして、
そのまま運転手のままじゃ、ダメなの。
>>145
チーフ(SE?)と新人プログラマさんみたいな?
>>141
アルゴリズムのオーダー、という概念を知らないのは困ると思う。
漏れとしてはベタなフーリエ変換とFFTの実装も自力でやって実感してもらい
たいところ。なんでもライブラリ任せなのは感心しない。
148デフォルトの名無しさん:02/03/20 13:16
初級者向けのお約束的な課題として、>>132のFとして
ttp://www5c.biglobe.ne.jp/~MOGI/algorithm/sample8_62_1.gif
を描画する、という課題を付け加えたい。
>>147
そこまでしなくてもソート2,3種類やれば十分じゃん。
150147:02/03/20 13:23
>>149
ま、「漏れとして」だからね・・・
だから>>1への課題としては、バブルソートとクイックソートをやってもらえば
良いんじゃないの?逆にこれすらやらないのは問題でしょ。
151141:02/03/20 14:31
>>1はすでに、>>57>>60>>80で、明確な目標を口にしてるんよ。
まあ、この文を読んでも俺には何をやりたいのかは理解
できんかったが、それはおいといて。すくなくとも、>>1
なかには「これをやりたいからC++を勉強している」ってのが
あるわけだ。
だから、>>145でいう「運転手」方向で育てていけば
いいんじゃないの?
もちろん、>>1が「整備士」相当部分を学びたくなったら、
それはそのとき教えればいい話で。

>>144
>>1は低レベル部分を作ることを望んではいないから、
とりあえず生産性を優先でいいじゃん。
あと、「減る」わけじゃないだろ。「現時点では増えない」だけだ。

>>147
さすがに、アルゴリズムのオーダーの概念は教えてないと
まずいだろうね。>>141では書いてなかった。すまん。
けど、FFTの実装は>>1には関係ないやろ〜。


そういうわけで、

1・バブルソートの実装を自作して経験する。
2・オーダーの概念を教えてもらって、理解する。
3・sortを使って、オーダーのことを実感する。
4・sortの使い方を覚える。
5・>>1の興味次第で、クイックソートの実装を理解(&自作)する。

って感じの流れでいきゃいいんじゃないかと思ったわけよ。どうよ?

長文すまん。sage。
152デフォルトの名無しさん:02/03/20 14:39
もちろん常に自分が一から書くことはない。でもスキルを身につける段階で
一度はプリミティブなコードを書くことはためになるというか必須だと思う。
なんでもそうだけど覚えることが大事なんじゃなくて考え方を身につけるのが
大事であっていざというときその資料を当たれればよい。

本当に大事なことは結果的に覚えてしまうはず。バブルソートとクイックソートを
書いてみてアルゴリズムによって速度が全く変わってしまうというようなことや
線形リスト、ツリー構造の素朴な実相をわかっていないといきなりvectorとか使いこなせないように思う。
153デフォルトの名無しさん:02/03/20 14:41
>>1 じゃなくて、最近C/C++をはじめたWin + Perl房ですが
皆さんにご指導いただきたいので参加しても可?

とりあえず、>>132の 1)
#include <iostream.h>

int main( void )
{

cout << "/ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n";
cout << "________________________________________________\n";

for ( int i = 1; i < 10; i++ ) {
cout << i << " |";
for ( int j = 1; j < 10; j++ ) {
cout.width( 3 );
cout << i * j << " |";
}
cout << "\n________________________________________________\n";
}

return( 0 );
}
154153:02/03/20 14:42
>>132 の 2)
#include <iostream.h>

int main( void )
{
int nolist[100];
int no, x;
no = 1;
x = 0;
while ( no && x < 100 ) {
cout << "数字を入力(0で表示)> ";
cin >> no;
nolist[x] = no;
x++;
}

for ( x--; x >= 0; x-- ) {
if ( nolist[x] ) {
cout << x + 1 << "回目の入力 = ";
cout << nolist[x] << "\n";
}
}

return( 0 );
}
155153:02/03/20 14:47
あぁ、なんか荒らしてるかのようですね。
ごめんなさい。
あと>>132 の 3) も書きました。

それと、自作小物の60行弱のソースも
皆さんにご指導いただきたいのですが、
どこぞにUpしたらみていただけますか?
>>155
コンパイルして動いたなら正解。
>>154

for ( x--; x >= 0; x-- )

が少々トリッキー。もう一つ変数置いて、

for ( y = x - 1; y >= 0; y-- )

とかの方がいいかも。

まぁ、赤ペン先生によって意見は分かれるでしょうがw。
あんまたいした差はないんだけどね、
C++だったら、単項演算子はなるべく前置の方を使った方がいいかも。

intとかなら別にどっちでも同じなんだけどね、
イテレータとか、そのうちいろんなオブジェクトをいじることになるんだけど、
ただ単に加算するだけ、減算するだけなら、前置の++,--を使う癖をつけとくと
よいよ。

いや、ほんとにたいした差はないんだけどね。
ついでにたいしたことないんだけどね、
coutにつっこむ "\n"は、 endl っていうやつを使うといいよ。

たいしたことないんだけどね。
そういや "\n" と endl の違いって何?
160デフォルトの名無しさん:02/03/20 15:19
>>154
1個目のループは後判定にした方がエレガントじゃないかな?
あと個数制限とかの100などは定数にして別に宣言するクセを早いうちに
付けることを強〜くお勧めします。
>>156の言う通り、2個目のループはトリッキーで嫌だなぁ・・・
面倒でも判りやすく見やすいソースを書くクセをつけた方がいいよ
>>159
"\n"は改行記号なんだけど、最終的に文字列としてストリームに出力されるときの形態。
でもほんとは"\r\n"が正しい改行かもしれないし"\n\r"が正しいかもしれないし"\n"だけでいいの
かもしれない。

endlは、内部ではどう持ってるかわかんないけどストリームを扱うオブジェクトが
改行だと認識してくれるありがたい符号。
>>154
変数noの使い方がよくないね。
この変数は、

1.入力された数字を受け取る
2.入力された数字が正しいかどうかを判定する

という二つの目的で使われているよ。
ひとつの変数の目的は、ひとつに絞ることが大事。
そうしないと、あとで苦労するよ。
というか、もうその「苦労」がすでに出てるね。

>if ( nolist[x] ) {

ちゃんと変数の目的を分担していれば、こんなif文はいらないよ。


>>159
Cっぽいか、C++っぽいか、という程度じゃないかな?
163153:02/03/20 15:46
>>156-162 ありがとうございます!
やっぱり誰かにみてもらうことって大事ですね。
まわりに聞ける人がいないので大変有り難いです。

ご指導を参考に >>132 の 3) を書き直してみましたが、どうでしょうか?

#include <iostream.h>
#define MAX 100

int main( void )
{
int nolist[ MAX ];
int x = 0;
do {
cout << "数字を入力(0で表示)> ";
cin >> nolist[ x ];
++x;
} while ( nolist[ x - 1 ] && x < MAX );

--x;
double total = 0;
for ( int i = 0; i < x; ++i ) {
cout << i + 1 << "回目の入力 = ";
cout << nolist[ i ] << endl;
total += nolist[ i ];
}

cout << x << "回の平均値 = " << total / x << endl;
return( 0 );
}
164初心者:02/03/20 16:10
うわーー!!
スレが伸びてる!!
このままではあっという間に1000に到達か・・・(汗
その時はPart2を立てさせてください。<(_ _)>

で、@九九の表をコンソールに書きなさい。 を
今作りましたので判定の程を宜しくお願い致します。

#include <stdio.h>

void main(void)/*  九九の演算 */
{
int i,j;
printf("< 九九の演算 > \n");
printf(" 1 2 3 4 5 6 7 8 9 \n\n");
for (i=1;i<=9;i++){
printf("%d",i);
for (j=1;j<=9;j++){
printf(" %2d ",i*j);
}
printf("\n");
}
}
165162:02/03/20 16:13
>>163
うー、ちがうよ。俺が>>162で言ったのは、入力された数字が
正しいかどうかを判定するための変数を増やせ、ということなんだよ。
変数を減らしちゃいけない。>>163のやり方は、変数nolistに、

1.入力された数字をいったん受け取る
2.入力された数字が正しいかどうかを判定する
3.入力された数字を格納しておく

という三つの仕事をさせてるから、前より余計に悪くなってるよ。
endl は改行と同時にバッファのフラッシュをする。
改行せずにフラッシュだけをしたければ flush を使う。
>>164
合格。

でも、%3dにしないと桁揃わなく無いか?

まぁ、俺の例題も

101214

って書いてたもんな。忠実でよろしいw。
168初心者:02/03/20 16:20
有難うございます。
では、次の問題にチャレンジ致します。
((((ノ゜▽゜)ノ がんばるぞ〜!
169デフォルトの名無しさん:02/03/20 16:22
1さんはWindowsをお使いですか?もしそうなら
Cygwinを使ってWindows環境下に擬似UNIX環境を構築すると良いのでは?
gnuツール群が使えるし良いですよ(UNIX/コマンド等の勉強にもなる)
純粋にC++を勉強するならGUIは不要というかCUIのほうがシンプルで良いと思います
何か実用的な小物を作りながら勉強するというならば
Borland C++ Builderも良いでしょう
尚、VC++でのC++学習はお奨めできません

Cygwinは
オールラウンドプログラミングVol.3 C/C++300の技(技術評論社 \1,980税別)
のCD-ROMに収録されています(もちろんCygwinサイトから最新版をDLできます)

他のC++参考書にもCygwinが収録されたCD-ROMが付いているものを見かけました
その本は他の本と比べoopについて詳しく解説されていました(購入予定)

C++(better Cではなくoop言語としてのC++)の本は難しいので
とっかかりの良書として
「これならわかるC++ 挫折しないプログラミング入門」(小林健一郎 著 ブルーバックス \1,900税別)
を薦めたいと思います
170初心者:02/03/20 16:23
あと、>>121さんの問題の回答は
もう少し待って下さい。<(_ _)>
>>169

ふと思ったんですがborland C++ Compilerってご存じですか?
172初心者:02/03/20 16:26
>>169さん
有難うございます。
>>170
いやぁ>>132だけでいいんじゃない?というか132はそれまで出た課題を総合して
るから132をやればいいだろ。
>>148は面白いからやってみて欲しいね。でもBCCでグラフィックは辛いかな?
もし辛かったらFだけDelphi使ってみるといいかも。一つの言語にこだわり過ぎるのも良くないし。

>>169
cygwinはどうかなぁ・・・どうしてもWindows上でGNU環境を使う必要があれば別だけど、
>>1は必要無さそうだが。それよりも中級くらいになったらLinuxを使った方がいいと思われる。
174デフォルトの名無しさん:02/03/20 16:33
>>169
同じ著者の訳書で「Accelerated C++」がお勧め
高度な本に見える表紙だが実はめちゃくちゃ分かりやすい入門書
しかも、後半部分ではかなり、便利なテクニックをさらりと
説明してくれる。
175153:02/03/20 16:34
>>165
あちゃー、間違ったベクトルに進んでいましたか。
ついつい変数と行数が少ないほど良い気がしちゃうんですよ…反省。

x が入力された回数だから使い回せるな、とか考えて、さらに書き込んだあと
++x; を消して noline[ x - 1 ] を noline[ x++ ] にすれば良かったとかも思ってました。
176169:02/03/20 16:35
>>171
えぇ、知っていますヨ
過去レスを読んでBCCについては、すでに提案されていたもので・・・。
1さんが既にBCCを使われているなら、それでいいと思います。
興味からお尋ねするのですが、BCCのメリットとは何ですか?
>>175
俺も工房の時そう言うコード書いてたw(今もたまに)。
昔ならともかく今はメモリなんて腐るほどあるんだからあまり神経質になることはないと思う。
コンパイラがある程度最適化してくれるし。

凝った言葉で作文を書くと後で読んで意味がわからなくなる。そんな感じ。
誰が見てもわかりやすい作文がなんだかんだ言ってよしとされる。
>>176
BCCのいいところ・・・無料である・クセが少ない・無難である
>>177
BCCは最適化しない。
しかしケチって醜いソース書いて、実行時間が0.1秒早くなる代わりに
デバッグに1時間かけるよりも、見やすいソース書いて、実行時間が
0.1秒遅くなって、10分でデバッグが終わる方が良かろう。
>>176
コマンドプロンプトで動作します。
C++を使いたいだけならcygwinと言う大げさな環境を導入するまでも無いかなと考えたからです。
恐らくフリーと言うことを強調されているのかなと思いこちらもフリーで対抗したと。
>>178
そうなの〜。勉強になった。あくまでおためし、学習用って位置づけか。
181初心者:02/03/20 16:44
>>169さん
ちなみに自分はWINです。
182178:02/03/20 16:49
>>180
「この開発環境は初心者勉強用だから…」
と初心者に言ってプログラミングを勉強させると、かなりの確立で
やる気を無くすと思うのだが。。

いや、漏れは実はDelphi使いなんだが、Cのライブラリを使いたい時など、
上手い具合にBCCを使ってる。結してBCCは子供だましではないよ。
>>182
まぁ、今はCPU資源も豊富だからね。最適化なんかしなくても(略

Delphiは素晴らしい。
>>182
ライブラリをDLLでラップする感じ?良いこと聞いた♪
素晴らしい?
186169:02/03/20 16:53
1さんはC++(またはC)の初心者ですか?
それともプログラミング初心者ですか?
PC経験はどれくらいですか?
WIN環境意外にも興味はありますか?
将来はどっち方面へ(プログラミング全般を極めるとかSEになりたいとか)
答えられる(答えてもいいなと思う)範囲で教えて下さいナ
187169:02/03/20 16:55
WIN環境以外にも興味はありますか? <修正スマソ
>>186
過去ログ読めばわかるらしいぞ。

コード見る限りCとプログラムのリテラシーはあるみたいよ。
189初心者:02/03/20 17:01
169さん
他にどのような環境があるのか分からない状態(知識不足)
なので、なんとも答えられません・・・
190169:02/03/20 17:03
>>188
スマソ、ろくに読んでいなかった(w
今、読んで大体わかったヨ
それでも、もう一度彼から、まとまった形で情報が欲しいな
皆がより的確なアドバイスができるようにネ
191169:02/03/20 17:07
>>189
ゴメン、環境についてはWindowsで良いでしょうね(とりあえず、他は視野に入れる必要ナシ)
↓の目的からすれば(Win系が一番充実しているでしょう)

>ちなみにC++を覚えたいという目的は、PC(プログラマブルコントローラー)
>とリンクさせて制御系のシステム構築が出来るようになるのが
>目的なのですが・・・
>>191
最終的にはPCをラップするクラス書いたりとか?
>>154
好みの問題であるんだけど、
将来、他の言語も勉強するつもりがあるなら、

> while ( no && x < 100 ) {

while ( no != 0 && x < 100 ) {

と書いた方がよいかも。

>>156
おれの場合、

for ( y = 0; y < x; y++ ) {
  // nolist[x - y - 1]というように参照

と書いてる。多少難しくなるが。
194169:02/03/20 17:11
>>191
捕捉
PC(プログラマブルコントローラー)とセットの開発環境やIFの類が充実している
>>178
オプションをつければ最適化するようです(-O1:サイズ,-O2:メモリ)
あと、BCCの良いところは……メッセージが日本語。
(cygwinはいろいろあって便利だけど、gccの為だけに入れるのはどうかと。
unixのツール「群」が要らない人にとっては単なる無用の長物だと思います)
>>163,>>165の問題は、(doの辺りだけ書き換え)
int temp;
  do {
    cin >> temp;
    if (temp == 0)
      break;
    nolist[x] = temp;
    ++x;
  } while (x < MAX);
こんな感じで良いんでしょうか?
196162:02/03/20 18:07
>>195
おめでとう! 正解だ!

今のところは扱ってるのがintだから実感はないだろうけど、あとあと
クラスオブジェクトを使うようになったらわかるよ。
そのコードが、C++として正しく、安全で、かつ最も効率のいい
ものなんだって。
>>132 1ではないですが、Dをやってみました。
いかがなもんでしょう。

#include <stdio.h>
#include <stdlib.h>

#define MAX 100

int main(void)
{
int a[ MAX ];
int i, j, tmp;

for (i = 0; i < MAX; i++) {
a[ i ] = rand();
}

printf("ソート前\n");
for (i = 0; i < MAX; i++) {
printf("%d\t", a[ i ]);
}
printf("\n");

for (i = MAX -1; i >= 1; i--) {
for (j = 0; j <= i - 1; j++) {
if (a[ j ] > a[ j + 1 ]) {
tmp = a[ j ];
a[ j ] = a[ j + 1 ];
a[ j + 1 ] = tmp;
}
}
}

printf("ソート後\n");
for (i = 0; i < MAX; i++) {
printf("%d\t", a[ i ]);
}
printf("\n");

return 0;
}
いや、なんつーか、その、
まだまだvectorやistream_iteratorとか、
もっと、その、なんだ、C++っぽくかつスマートな書き方があるだろ、
おい。

>>196
変数tempも

> 1.入力された数字を受け取る
> 2.入力された数字が正しいかどうかを判定する

の目的で使われている気がするが違うの?
イマイチ差違がわからん。
200153:02/03/20 18:20
>>196
>>195 は僕じゃないんですが、そっか、break使えばいいんですね。

>>132 の (4を 書きましたが、これも問題多そうで…
採点お願いします。

#include <iostream.h>
#define MAX 1001

int main( void )
{
  int all[ MAX ] = { 1, 1 };
  int half = MAX / 2;

  for ( int x = 2; x < half; ++x ) {
    if ( !all[ x ] ) {
      for ( int y = 2; x * y < MAX; ++y ) {
        all[ x * y ] = 1;
      }
    }
  }

  for ( int j = 0; j < MAX; ++j ) {
    if ( !all[ j ] ) {
      cout.width( 4 );
      cout << j;
    }
  }

  return( 0 );
}
201デフォルトの名無しさん:02/03/20 18:26
<iostream.h>ツカウナ。<iostream>ダロ。
202デフォルトの名無しさん:02/03/20 18:32
なんでC言語って挫折しやすいの?

俺VBもDelphiも普通に出来るんだけどCは何故か挫折しちゃった。
何が原因なの?
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>

using namespace std;

int main( void )
{
 vector<int> v;
 istream_iterator<int> isit(cin);

 copy(isit, istream_iterator<int>(), back_inserter(v));
 size_t sz = v.size();
 for (size_t i = 0; i < sz; ++i)
 {
  cout << i + 1 << "回目の入力 = " << v[i] << endl;
 }
 double avg = accumulate(v.begin(), v.end(), 0) / (double)sz;
 cout << sz << "回の平均値 = " << avg << endl;

 return 0;
}
>>198>>201
まぁそういう主旨のスレではありませんので、大目に見てやってくださいな。
>>200
ナントカの振るい作戦ですね、でも配列は0で初期化しましょう。
>>202
なんでだろうね、漏れもターボパスカルから入ったよ。
>>203
はいはい、すごいですねぇ。
>>200
#define MAX 1001
なんか1001ってのがイレギュラーで気持ち悪いな、
>>202>>204
Cの*優れた*教科書はどれも、計算機科学の基礎知識と、FORTRANやPASCALなどの
高級言語の知識がすでにあるものとして書かれているからです。
計算機科学の素人がいきなり手をつけようとしてCを選ぶのは、たぶん、間違いなのです。
>>203
「Cスタイルのキャストを使うなよ」というツッコミを釣りたかったわけか?
ソースコード書いてアーでもない、コーでもない
とやって、楽しいのだろうか?
本質的な追求は為されないのだろうか<このスレの本質ってナニ
209162:02/03/20 18:47
>>199
ごめん、ほかの部分に浮かれてて、そこを忘れたよ(笑)。
210204:02/03/20 18:51
>>206なるほど、禿銅です。
そう考えると、"Delphiの良著"もCの轍を踏んでますな。
"Pascalの良著"+Delphi付属の"dcc32.exe"(コンソールコンパイラ)で基礎を
叩き込んで、Delphi→BCB or VC と進むのが現代の王道かもしれない。
いやここは男らしくVB.NETかHTML手書きから。
>>208
208はプログラミング初心者の頃、ソース書いてあーでもない、こーでもない、と
やらなかったのだろうか?
つーか208はプログラム書けないんだろ。

>>210
PASCALの良著の見分け方・・・10年以上前に初版が出版されていて、現在でも
改訂されながら版が重ねられていること。

>>211は男を極めてるので、漏れなく放置致します。
>208はプログラミング初心者の頃、ソース書いてあーでもない、こーでもない、と
>やらなかったのだろうか?

これが楽しいと思わなければプログラムを趣味に出来ないだろ。
214208:02/03/20 19:06
>>212
そりゃやったさぁ、今だってやるよ
ところで1はこの「betterなソースコードを書こうゼ」コーナーには
参加しているわけ?

1の問いが完結し、その発展形として
「betterなソースコードを書こうゼ」合戦があるのならば良いと思うヨ
215デフォルトの名無しさん:02/03/20 19:09
>>100辺りからスレ方針が変わった模様。
216208:02/03/20 19:10
ふーん、ゴメン、邪魔したね bye
217208:02/03/20 19:14
最後に一言、C++だったら何でclassの話をしないのかな?不思議
>>217
>>1-100読んで彼の今のレベルを認識すればよい。
捨てぜりふ、カコイイ!
すでにiostreamを使ってるからいいんでない?
使い方が先でしょ。何にしても。
220デフォルトの名無しさん:02/03/20 19:21
>>132の課題E辺りで、

但し、線形リスト全体をクラスメソッド"push"と"pop"を持ったクラスとして
実装し、線形リスト自体は外部から隠蔽すること

という但し書きを加えれば良いと思います。

しかし異色の名スレになりつつあるな・・・
>>220
そだね。第一回の締めくくりと第二回の導入が入っていい感じかも。
>>218
1はCではなくC++を学びたいと言っている
ということはoop言語に魅力(必要性)を感じたということではないか
ならば始めからclassについて言及されるべきでは

>>219
classの考え方や実装方法を先に知ってもいいのでは
printfじゃ何でダメなのという話になる
日本人はだね、型からはいるのが一番わかりやすいの。

ピヤノやお琴もそう。
とりあえず、言われたとおりの音をだね、
言われたとおりに、体が覚えるまで、鳴らすの。

徐々に、リズムを買えたり、音階を広げていったり、
和音にしたり、リズムをつけたり、アレンジしたり、
ソロの練習をしたりスンの。

でね、cinとcoutと配列と数字のやりとりはね、
ピアノで言うところのカノンなの。
お琴で言うところのさくらさくらなの。

ちょっと変った教室ではもっとしゃれた曲から教えてくれるけどね、
とりあえず、型からはいるのが、一番なの。

そのうちね、作曲のやり方もやるのよ。もちろん。
224初心者:02/03/20 19:30
皆さん、こんばんは!!
なんか、あっという間に1000までいきそうな
雰囲気にかなり焦ってます・・・
頂いた課題も(((?o?);などと悩みながら、色々
試しながらやってます。
なんか悩んでる間に1000までいきそうな感じですね〜。 (_´Д`)
>>222
ふと思ったけどC++ってなんでcoutなんですか?
いきなり掟破りな文法なんですが。
標準出力以外にC++で明確に定義された見てわかる形式のアウトプットの方法がないから。
>>226
ごめん。理解が困難。

じゃあprintf()はなぜダメ?可変長引数?
>>225
coutというオブジェクトに文字列を流し込んでいるのよ(<iostream>)
ヤパーリCとC++の考え方の違いを教えないとダメでしょ
229デフォルトの名無しさん:02/03/20 19:48
課題がどうとか言ってないで(ついでにネットなんてうろついてないで)
・C++の文法
・C++の標準ライブラリの使い方(STL、クラスライブラリ含む)
・OS、作りたいアプリ固有のライブラリ・フレームワークを覚える
(WindowsならMFC, VCL, DirectXなど)
を端からゴリゴリ覚えていけ。

んで暇があったら
・アルゴリズムとデータ構造
・OOP全般
やれ。

突っ込み覚悟で補足しとくと後半の二つはアプリ作成には必須ではないよ。
上と平行して覚えてくのはかまわないけど下からやると飽きて挫折する。
そういえばこのスレ、オブジェクトという言葉すらロクに出てこなかったネ
>>230
煽るだけならよそで。
始めからいたような顔はやめてください♪
232デフォルトの名無しさん:02/03/20 19:52
なんでさ、初心者相手に先走ろうとするの?
OOPなんて構造化プログラミング知らない人間に教えても混乱するだけじゃない?
構造化プログラミングも十分理解してない人間にcoutだprintfだって言ったって
わからんよ。
それよりOOPのことは>>220のようにEで始めて触れても遅くないと思う。

CとC++って勉強する上でシームレスに繋がってないのが大きな欠陥だよなぁ。
その点、PascalからObjectPascalを設計した人はエライと思うよ。
>>231
だってCじゃなくてC++をやりたいんでしょ?
煽りではないよ、目を向けて欲しいだけです
iostreamがなぜ生まれたのかから話すと長い。

なんでCは
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
ではじまるのか?
と同じだな。
話すと長い。

printfには型安全がない。
基本型の理解やポインタの理解、スタックの理解、書式の理解、標準出力の理解が必要だし、
誤った入力や書式指定を許してしまう。

coutの方が、理解に必要なハードルが少ない。

cout << なにか;

を覚えれば、画面(標準出力)になにかが表示される、と覚えれば済む。
oop楽しいじゃん
>>234

例?

char a = 'U';

printf("%d %d",a);

確かに幾度と無く危険な目に遭わされたw。
237デフォルトの名無しさん:02/03/20 19:57
>>234
「<<」ってなんだ、ビットシフトじゃねーの?って聞かれたらまた面倒なんですけど。
cout.operator<<(なにか);
とでも書かせとくか?
>>237
頑張れば、

cout += "hello" += "world" += endl;

とか

cout != "hello" != "world" += endl;
ビットシフト演算子の説明をするときには
「<<は元々整数に対して使う演算子で、そいつのビットを、右や左にn個シフトしたいときに使うんだよ。
で、シフトって言うのはね...」

と説明すればよくて、混乱しそうになったら
「だけど、整数じゃないオブジェクトに << を使うときはね、 xx を流し込むって意味で
使うんだよ。最初に使った cin とか cout の << がそれだよ」
でわかるんじゃないかねえ。

中級になったら、「ostream系のオブジェクトの operator <<は...」って教えればいいだけ。

printf教えるときに、スタックの状態や、可変長引数の片繰上げや細かい書式、
va_argやva_listの説明なんかしないだろ。

そんなもんだよ。

練習用の曲はね、大抵ね、後から振り返ってみるといろいろ示唆すべきものが含まれているもんなの。
あるていどわかるようになってから、「ああ、あれはああいう意味があったんだ」ってわかればいい訳なの。

英語習うときもね、How do you do?みたいにね、よくあるイディオムから始めりゃあいいの。
240デフォルトの名無しさん:02/03/20 20:12
あーもうそろそろまとめるぞ、この話。
基本は>>132>>220の線で行く。クラス云々はEまでお預け。
但しC++らしく入出力はcin、coutを使うべし。
>>240
賛成++;
あーあ、1はスレを乗っ取られてしまったね
かわいそうに
>>1
気にせず問題が出来たら持っておいで。みんなでわいわい添削します。w
generative programmingマンセー!!!
Alexandrescuマンセー!!!
245153:02/03/20 22:14
>>132 の (4 - 2 です。よろしくお願いします。
単純に ofstream output( "prime.txt" ); でOKなんですかね。

#include <iostream>
#include <fstream>
#define MAX 1000

using namespace std;

int main( void )
{
 int all[ MAX + 1 ] = { 0 };
 int half = MAX / 2;
 
 all[0] = 1;
 all[1] = 1;

 for ( int x = 2; x < half; ++x ) {
   if ( !all[ x ] ) {
     for ( int y = 2; x * y <= MAX; ++y ) {
       all[ x * y ] = 1;
     }
   }
 }
 ofstream output;
 output.open( "prime.txt", ios::out );
 for ( int j = 0; j <= MAX; ++j ) {
   if ( !all[ j ] ) {
     cout.width( 4 );
     cout << j;
     output << j << endl;
   }
 }
 output.close();
 return( 0 );
}
>if ( !all[ x ] ) {

今こういうの流行ってるの?

確かに0以外は偽だけどさ・・・使い方間違ってる気がする。
247153:02/03/20 22:21
>>246
このスレで使っているのは全部僕の書き込みかと。
止めた方が良いですか。
>>247
いろいろなポリシーの人がいるから何とも言えないけど、個人的には非推奨。
249デフォルトの名無しさん:02/03/20 22:26
>>247
明示的に「0なら」とやりたいなら、if(all[x] == 0)の方が見やすいしわかりやすい。
if ( !all[ x ] ) の方が確かにソースも数バイト短いし、実行ファイルも数命令短く
なるかもしれないけど、それによって得られるメリットよりも、見難いソースの
デメリットの方が多そう・・・。
あと int all[ MAX + 1 ] = { 0 }; じゃ all[0] 以外は初期化できてないんじゃない?
ちゃんとfor文で回そう!
>>249
ごめん。

>実行ファイルも数命令短くなるかもしれないけど

どっちも結局CMPじゃないの?
251デフォルトの名無しさん:02/03/20 22:34
>>250
if ( !all[ x ] ) だとJZE?を使ってくるかもしれない。
すまん漏れ汗ンブラあまり知らんです。
>>249
そういう風に指定したとき、足りない要素は0として初期化される
ことが保証されてなかったっけ?
いや、もちろんコーディングスタイルとしてはやっちゃマズいだろうけどさ。
>>249-251
少なくとも、VCではどっちも同じ。
cmp 変数,0
jne
ってコードだった。
254249:02/03/20 22:43
>>252
そうだったの?知らなかったスマソ。
でもやっぱり初期化したほうが精神的に落ち着くな・・・
念のため言っとくと、ある程度の規模のプログラムになると、実行時間の
9割は、ソースの1割で浪費される、と言われてる(8割2割って言う人もいる)。
ナントカの法則って名前ついてたかも知れないけど忘れた。
つまりソースの大部分は改良してもプログラムの高速化にほとんど貢献しない。
だからあまり細かい実装法( if(!all[x]) とか )にこだわっても、見にくくなる
ばかりでほとんど早くならない。
それよりは多少効率は悪くても、見やすい、美しいソースを書いて、完成してから
ボトルネックとなる1割の部分(再帰呼び出しされる関数や多重ループの一番内側)
だけに小細工をした方がなにかと良い。

ま、そういうことを頭の片隅に置いておくといいと思うよ。
それにソートプログラムを組めばわかるけど、高速化の真髄はアルゴリズムの改良
にあるってことも重要。
初心者のうちは「美しいソース」を書くようにした方がなにかといいです。
>>255
普通に9:1の法則でなかったっけ?

確か実行される頻度が高いホットスポットと呼ばれる部分がソース中に1割ある。
後の9割はたいして実行されない。

ホットスポットを最適化することがプログラムの高速化に繋がるって話だった気が。
>>249
配列の初期化(と言うより、値の準備)はループを回すべきだ、と。

bool型の変数を評価するときはどうするべきでしょう?
「if (hoge)」「if (hoge == true)」
今は前者を使っていますけど……。
(その割には「if (p == NULL)」と書いてたり)
== true はよくないイディオムだ。
259257:02/03/20 23:39
思い出してみると「if (! hoge)」じゃなくて「if (hoge == false)」と書いていたような気が。
trueの時も「==」を使いますか。
==は、「等しい」比較の意味以外で使うべきではないだろう。

真偽値はそのまま使おうぜ。
261257:02/03/21 01:13
>>258,>>260
はい。boolはそのまま入れることにします。
ありがとうございました。
262デフォルトの名無しさん:02/03/21 12:24
agetokuka
>256
プログラミングでは80:20の法則で
プログラミング(コンピュータ)以外では
9:1の法則って良く聞くような。
「SFの9割は糞である」みたいに。
社会では全体の20%が残りの80%を養ってる、ってのもあるね。
さて、そろそろclassの話でもするかね?
>>265 まだです。課題Eまで逝ってません。
早くclassに行こうよ、期待
なんだ、今日は休講かよ・・・
>>268
受講者がいないんじゃしょうがないよね。
しょうがないから、赤ペン先生たちで
例外について語り合っとく?
例外安全の理解が完了するまで例外投げるの禁止。
上級編までお預け。
( ´,_ゝ`)プッ 先生きどりかよ
シロウト相手に優越感に浸ってんじゃねえゾ、ゴルァ
273153:02/03/21 23:21
こんばんは、よろしくお願いします。

>>132 の 5) バブルソート。
色気を出して関数にしてみました。

#include <iostream>
#include <time.h>
#define QTY 100

using namespace std;

void output( int array[], int qty, char mess[] )
{
 cout << mess << endl;
 for ( int i = 0; i < qty; ++i ) {
   cout << array[ i ] << endl;
 }
}

void bsort( int array[], int qty )
{
 int temp, i, n;
 for ( i = qty -1; i > 0; --i ) {
   for ( n = qty - 1; n > 0; --n ) {
     if ( array[ n ] < array[ n - 1 ] ) {
       swap( array[ n - 1 ], array[ n ] );
     }
   }
 }
}

int main( void )
{
 int list[ QTY ];
 srand( (unsigned)time( NULL ) );
 for ( int i = 0; i < QTY; ++i ) {
   list[ i ] = rand();
 }
 output( list, QTY, "ソート前" );
 bsort( list, QTY );
 output( list, QTY, "ソート後" );
 return( 0 );
}
>>273
個人的に配列の引数はポインタで受け取ってほしい。特にchar型は。
275153:02/03/21 23:24
>>132 の 5) クイックソート、のつもりですが…
添削お願いします。

#include <iostream>
#include <time.h>
#define QTY 100

using namespace std;

void output( int array[], int qty, char mess[] )
{
  cout << mess << endl;
  for ( int i = 0; i < qty; ++i ) {
    cout << array[ i ] << endl;
  }
}

void qsort( int array[], int first, int last )
{
  int basis, small, big;

  basis = array[ ( first + last ) / 2 ];
  small = first;
  big = last;

  while ( small <= big ) {
    for ( ; array[ small ] < basis; ++small ) ;
    for ( ; array[ big ] > basis; --big ) ;
    if ( small <= big ) {
      swap( array[ small ], array[ big ] );
      ++small;
      --big;
    }
  }
  if ( small < last ) {
    qsort( array, first, small );
  }
  if ( big > first ) {
    qsort( array, big, last );
  }
}

int main( void )
{
  int list[ QTY ];
  srand( (unsigned)time( NULL ) );
  for ( int i = 0; i < QTY; ++i ) {
    list[ i ] = rand();
  }
  output( list, QTY, "ソート前" );
  qsort( list, 0, QTY );
  output( list, QTY, "ソート後" );
  return( 0 );
}
>>273
バブルソートってこうだっけ?
いや、基本路線は合ってるし、ソートもできるんだけど。
277276:02/03/22 01:05
>>275
こっちも潜在的なバグが潜んでいる気が。
あとQTYって何の略?
気になる
QTY=quantity
280153:02/03/22 10:09
せっかく休みに入ったのに天気悪くて鬱〜

皆さん、>>1さんじゃないのに添削していただいて有り難うございます。
どうも僕は、下手に短く書こうとして読み難くする悪癖アリですね。
気をつけます。

>>276
バブルソートを書き直してみました。どうでしょう?
>>273のだと、ソート済み部位も比較したりと無駄なループをしてますか。
使っていないtempとかありますし…駄目だ<自分

>>277でご指摘の >>174 クイックソートの方はよくわかりません。
クイックソート自体よくわかっていないのかも。

void bsort( int *array, int qty )
{
  int i, done;
  bool flg = true;
  --qty;
  done = 0;
  while ( flg ) {
    flg = false;
    for ( i = qty; i > done; --i ) {
      if ( array[ i ] < array[ i - 1 ] ) {
        swap( array[ i - 1 ], array[ i ] );
        flg = true;
      }
    }
    ++done;
  }
}
281276:02/03/22 12:53
>>280
バブルソートはアルゴリズム的にはOK。
あと、前に変数に2つ以上の意味を持たせるなと
言われなかったかい?

クイックソートの方は
int list[QTY + 1];
list[QTY] = 0;
と修正すれば表面に出てくる。
あと、実際に実行してみたんだけど、ソートされているときもあれば
されてないときもあるみたい。こっちの原因はまだ調べてないけど。
>>274 で言われていることについては個人的には反対。

>>279 ありがと。
282初心者:02/03/22 15:40
皆さん、こんにちは。
最近、電験の勉強に集中している為にc++の勉強が
はかどっていません。
Eまで行くのにかなりの期間がいると思いますので
温かく見守って頂けませんでしょうか。<(_ _)> 
一日30分はc++をやるようにしてるのですが、
パソコンを立ち上げても参考書とにらめっこして
30分過ぎてしまうという状態なので・・・
クイックソートとバブルソートが完成したら、是非やってみて欲しいことが
あるんだが、定数QTYをある程度大きくして、何回か実行して実行時間を
比べてごらん。
たとえばQTY=10000,QTY=20000,QTY=40000とかで。
まぁこのくらいでも一瞬で終了するかも知れないから、適当にプログラム全体を
何回かループさせて、1回当たりの実行時間を計測してごらん。
で、バブルソートとクイックソートでは、それぞれQTYを倍にすると、実行時間が
何倍くらいになるか調べてみるとクイックソートの有り難さがわかるよ〜。
あと時間計測するときは画面へ描画はさせないこと。つまりoutput関数を呼び出さない。
画面描画させちゃうと、ほとんどのCPUパワーを描画に使いかねない。
>>282
パソコン起動せずに参考書読んでな。
それで良いよ。
読破したら、初めてパソコンの電源入れなさい。
285デフォルトの名無しさん:02/03/22 16:12
優秀なC++使いは、だれもがそういう読むだけの時間を持っていたもんだよ。
今でも読むし、これからも読み続けるんだろうけど。
ageてたすまん。
ageteoku
288153:02/03/23 21:33
こんばんは。>>275のクイックソート修正しました。
mainでの呼び出しが最高に間違っていました(鬱

void qsort( int *array, int first, int last )
{
 int basis, small, big;
 small = first;
 big = last;
 basis = array[ ( first + last ) / 2 ];

 while ( 1 ) {
  for ( ; array[ small ] < basis; ++small ) ;
  for ( ; array[ big ] > basis; --big ) ;
  if ( small >= big ) break;
  swap( array[ small ], array[ big ] );
  ++small;
  --big;
 }
 if ( small - 1 > first ) qsort( array, first, small - 1 );
 if ( big + 1 < last ) qsort( array, big + 1, last );
}

でmainでの呼び出しを下のように修正。
qsort( list, 0, QTY - 1 );

以上でたぶんOKだと思うのですが、いかがでしょうか?

ただ、上のwhile文を下のように書くと上手くソートできないのですが
僕には違いがわかりません。どうぞどなたか理由を教えてください。

while ( small < big ) {
 for ( ; array[ small ] < basis; ++small ) ;
 for ( ; array[ big ] > basis; --big ) ;
 if ( small < big ) {
  swap( array[ small ], array[ big ] );
  ++small;
  --big;
 }
}
そう言う使い方するならwhileの方が良いかも。
290153:02/03/23 21:41
>>289
こういうことですか?
for ( ; array[ small ] < basis; ++small ) ;

while ( array[ small ] < basis ) ++small;
291153:02/03/23 21:49
それから、
>>274さん >配列の引数はポインタで受け取ってほしい。特にchar型は。
>>281(276)さん >>>274 で言われていることについては個人的には反対。

どちらでいけば良いのでしょうか?
>>291
Cは配列そのものを引数で渡すことができないので、すべて
ポインタ渡しだが、精神的に配列で取る人もいる。
自分の好みでいいのでは。
>>292
一瞬でスタックの空きが無くなるね。ちょっぴり再勉強。
294153:02/03/24 09:15
おはようございます。ここ数日ずっとここの問題やってる気がします。

>>132 6) の >>220版やってみました。長いので別のところにうp。
みていただけて更にアドバイスなんかもいただけるとうれしいです。
http://perlnewbold.hoops.jp/cbasket.cpp

先々日買ってきた「憂鬱なプログラマ〜」を片手にやってみましたが
クラスとか初めて書いたのでカナ-リ行き当たりばったりで、
書き方も間違いだらけだと思います。

deleteとかもよくわかんないし…
295初心者:02/03/24 11:42
ただ今電験二種の勉強で
理論・電力と一通りやり、あと少しで機械に突入します。
機械に入ると制御問題も出てくるので、よりいっそうc++の知識が
役に立つと思います。
296276:02/03/24 13:36
>>288
#define QTY 10
list[ i ] = rand() % 100;
というように大きな問題は小さくしてからデバッグした方がよいよ。
うまくソートされなかったときの値を使って、
両方のプログラムの動きを追ってみるといいかと。
紙に書くなり、デバッガを使うなり、coutで途中の状態を表示するなりして。
頭の中だけでやろうとしても無理。

そこまでやっても、違いがわからなかったのなら、説明するよ。
297276:02/03/24 13:55
>>291
void foo(int array[]) として、
関数内でarray++と書いてもはコンパイルエラーにはならない。
実際にはarrayは配列ではなくポインタ型の変数が正しい。
そのため、正確に表記しましょうというのが前者の考え方。

後者は、引数でアドレスが渡される場合、
配列の先頭アドレスである場合と変数のアドレスである場合とが
あるので、その違いを表記しましょうという考え方。
変数名やコメントで配列であることを表記したりもできるので、
それほどメリットはないです。

一概にはどちらの書き方がよいとはいえないので
>>292 でいわれているように好みでいいかと。
2通りの考え方があることを知って欲しかっただけです。
>>294
コードは見てねえけど、がんばれー。
読んで、試して、なんか変だと思ったら、また本を読む。
そのうち、何が巧くないやり方で、なにが巧いやり方なのかわかる
ようになるよ。

仕事と関係ないところで、ガシガシためしてね、
腕を磨きなさいよ。`
299153:02/03/24 23:38
>>296
>>288の違い、わかった気がします。
交換される回数とその後のカウントばかりに気をとられていて、
その前のループによるカウント回数の違いに気づいていませんでした。

上手くいかない方は、最初の呼び出し時の交換後にsmallとbigが同値になると
再帰される範囲に同値の要素が含まれない為、上手くソートできない場合がある。

上手くいく方は、交換後にsmallとbigが同値でもbreak前のループを通るので
同値の要素が再帰される範囲に含まれ、OK。

これであってますか?
300276:02/03/25 01:07
>>299
あってます。
arrayが 3, 4, 2, 5, 6 の場合を考えると楽です。> 他の方

>>294 については、出題者の意図とあっていないと思う。
たぶん、順次表示はいらなく、クラスには表示機能を持たせないと
考えていると思う。
301153:02/03/26 21:44
>>300
こんな感じでしょうか?
getDataとgetTimeを追加してcon_outをなくしました。
http://perlnewbold.hoops.jp/cbasket2.cpp

実は線形リストというのがよく分からず、
検索をかけてそれっぽいものを参考にしたのですが
とりあえず方向としては間違ってなかったんですね。

一応>>132の6)までいったので、>>148に挑戦したいと思っています。
形になったらageっちゃたりしますので、よろしくお願いします。
302276:02/03/27 01:07
>>301
方向は間違っていないです。
別の意味で方向は逆にした方がいいかもしないけど… ま、いいか。

>>220 より
> 但し、線形リスト全体をクラスメソッド"push"と"pop"を持ったクラスとして
わかっているかもしれないけど、暗に「スタック(stack)」と呼ばれるデータ構造を
実現するクラスを作るように言っています。
「スタック」と「逆順」には深い関係があります。
関連するキーワードは「待ち行列」「キュー(queue)」「FIFO」「LIFO」など

あと「メソッド」じゃなく「クラスメソッド」って書いてあるね。
オレも読み落としてたよ。
303276:02/03/27 11:50
>>別の意味で方向は逆にした方がいいかもしないけど… ま、いいか。
やっぱりこれなしにしてくれ。
304153:02/03/27 22:31
>>302-303 276さん。いつもどうもです。
スタック!全然気がついていませんでした。
popで最後の要素を返せば良かったんですね。
http://perlnewbold.hoops.jp/cbasket3.cpp

そういえばpopは最終要素の「取り出し」ですもんね。
305153:02/03/28 09:51
おはようございます。
>>148 - 7)できましたヨ!どでしょ?
http://perlnewbold.hoops.jp/koch.cpp
http://perlnewbold.hoops.jp/koch.zip(実行ファイル / 17KB)

ウィンドウ作るのだけでメチャメチャ手間かかりました。
あと、曲線の終端がなかなか合ってくれないんです。
適当にいじってたら合った感じなのでソレでヨシとしてます。

ウィンドウできたら、凄いことやった気になれて楽しかったです(^-^
306153:02/03/28 09:57
>>305
まぁウィンドウ作ったといっても、ほとんどコピペなんですが…
307276:02/03/28 19:44
>>304
Tboxがクラスの外に出ては線形リストが外部から隠蔽されたことにはならない。
普通 popの戻りの型はpushの引数と同じ型にする。

while ( pointer->next != NULL ) {
  pointer = pointer->next;
}

これはなくてもいいように思うけど。まずいの?

>>305
これに関しては図はみたことあるけど、あまり知らない。
Windowsのプログラミングも少ししか知らないので、
他の方がみてくれた方がいいかも。
だからといってみない訳ではないですけど。
308153:02/03/29 10:26
>>307
>Tboxがクラスの外に出ては線形リストが外部から隠蔽されたことにはならない。
Σ(゚д゚lll)ガーン

>普通 popの戻りの型はpushの引数と同じ型にする。
入れたものと同じ形で取り出すワケですね。

ってことは、intでtimeとdataの両方は返せないから、
入力回は素直にmain側で管理、ですか。

while ( pointer->next != NULL ) { 〜 は要らないですかね。
getDataとか付けてた時のままにしてました。
309276:02/03/29 20:00
>>308
>> 普通 popの戻りの型はpushの引数と同じ型にする。
STLのstackをみてみたら、

・VC++6.0
value_type& top()
const value_type& top() const
void push(const value_type& _X)
void pop()

・g++(egcs-2.91.66)
reference top()
const_reference top() const
void push(const value_type& x)
void pop()

となっていた。今回作成したpopは
STLのstackのtopとpopを組み合わせたものにあたる。
C++とはずれるけどJavaのAPIは、

Object peek() // top相当
Object pop()
Object push(Object item)

となっていた。
普通というわけではありませんでした。スミマセン。
310276:02/03/29 22:35
>>308
> while ( pointer->next != NULL ) { 〜 は要らないですかね。
> getDataとか付けてた時のままにしてました。

push()で pointer = newbox; としているから、
pointerは「最後にpushされたデータを保持するTboxを指す」といえる。
Tboxのpreは「1つ前にpushされたデータを保持するTBoxを指す」、
Tboxのnextは「1つ後にpushされたデータを保持するTBoxを指す」といえるので、
pointer->next != NULLという条件式は
「最後にpushされたデータの1つ後にpushされたデータを保持するTboxはあるか?」
という意味になる。
「最後の1つ後」は変なので、バグか?要らないのか?など考える。

という感じで、意味や役割をはっきりさせると流れを追わなくても、
おかしい場所がわかることがある。
今回はpointer->nextは必ずNULLにしているので、要らないことがわかる。
意味が変だけど、必要で正しいのなら、どういう処理をしているかを
コメントで入れてあげれば次に読むときに楽になる。

あとこの方法は、名前と意味があっていなかったり、
複数の意味を持っていたりするとやりにくくなる。
311デフォルトの名無しさん:02/04/01 13:21
(´-`).。oO(age)
312わからん:02/04/01 17:20
c++について教えてください。

int *i = new int;
RECT *rc = new RECT;
って事はやっていいのですか?
313デフォルトの名無しさん:02/04/01 17:47
>>312
・・・つーか、なんでダメなわけ?
>>312
OKですが、何か?
315276:02/04/01 23:06
>>305
形がいびつになる(ならない?)のは、
double→intへ変換されるときに切り捨て代入されるから。
横線では X だけなのに、斜め線では X と Y 両方。
そのため、段段短く…。
3161より初心者:02/04/02 23:26
>>131
書いてみました
いnt main (void)
{
int a;
int b;

for(b=1;b<=9;b++)
{
if(b<2)
{
cout << " " ;
}
else
{
cout << b <<" ";
}


for(a=1;a<=9;a++)
{
cout << a*b <<" " ;

if(a*b/10<1)
{
cout << " ";
}

}
cout << '\n';
}
return 0;
}

>>316
コンパイルエラーに
318デフォルトの名無しさん:02/04/03 00:15
>>316
"いnt main" とはこれいかに。
九九の段だけなら2重ループだけで(省略)
320デフォルトの名無しさん:02/04/03 10:49
結構前の話に対してだけど…
C++を目指してる初心者に教えるなら
いきなりcoutで教えるなぁ。
CとC++でかぶってる部分はC++で教えればいいと思う。
(mallocは教えない。newを教える。)
<<がビットシフトじゃないの?なんて初心者はまず聞かない
(って言うか知らない)し。
ソートとかコンテナの構造も、
stlすぐ使ってもらうから自分でコード
書かせたりしないな。ただ、概念だけは後でどっかで
勉強してもらう。
まずは動いて面白いと思ってもらいたいな、と。
新鮮味にかけるレスですまん。
321デフォルトの名無しさん:02/04/03 11:50
>>320
STLのアルゴリズムをバンバン使って、基本概念を覚えないと、他言語に移った
時に障害になる。だから、まずSTLを使って、次にそれをSTLを使わないで書いた
らどうなるか学習していけばいいと思う。

俺自身はSTLは熟練のプログラマが、何度も同じようなソースを書かずに済ませ
る品書きのようなものだと考えている。

それから、cin、coutから入るのは賛成。printf、scanfがオブジェクト指向をサポー
トしてないから。

スレ違いになるが、この前仕事でJavaを触る機会があったのだが、あまりのレス
ポンスの悪さに閉口した。CPUの性能を1/5まで低下させてしまう。クロスコンパ
イラならぬクロスインタープリタだなと実感した。
322デフォルトの名無しさん:02/04/03 12:52
それでもC++は滅びに方向へ
そしてJAVAが栄えていく
323320:02/04/03 13:26
>>321
レスありがとう。基本概念を覚えないって言ってるんじゃないんだ。
はじめから基本概念のプログラムをやるより、
とりあえずSTL使って、すっきりしたホイッて動くもの見たほうが
今から覚える初心者がやりやすいんじゃないかと思って。
頭ごたごた使うのに慣れてない子も多いみたいだし。
運転手になるか、整備士になるかってあるけど、まずは簡単な
運転を学んでもらって、調子に乗っていただく(笑)

かなり大雑把な言い方すると、
「コンテナっていう奴にいろんなオブジェクトをまとめられるんだよ」
から入って、後で
「vectorは配列で、ランダムアクセスが速いよ。配列って言うのは…」
「listは双方向リストで、挿入が楽チン。双方向リストって言うのは…」
(俺が覚えた順序とは逆(^_^;STL知らなかったからね)
みたいに、大雑把から詳細へ行くほうがやりやすいんじゃないかと。

他言語をそんなに知らないんだけど(PerlとJavaを触ったくらいで。)
JavaだとそんなにSTLと違和感無く使えそうな感じがしたよ。
(詳細を見ないで、特徴からコンテナを選ぶ感じかな?)
Perlは以前の記憶なんで結構あいまい。
コンテナはハッシュでほとんどすませていた覚えも…。
# Perlのオブジェクト指向…面倒だよ…。

>俺自身はSTLは熟練のプログラマが、何度も同じようなソースを書かずに済ませ
>る品書きのようなものだと考えている。
俺は逆かも。例え詳細をきっちりプログラムできない人でも、
これを利用して、熟練プログラマの恩恵をこうむれるものだと思ってる。

Javaは速度問題が解決されたらすごく延びるのかもね<よく知らんけど…
あと、テンプレート早くくっつけるべし。
324320:02/04/03 13:30
>>321
>だから、まずSTLを使って、次にそれをSTLを使わないで書いた
>らどうなるか学習していけばいいと思う。
あ、おんなじ考えだった。激しく同意。
323は早とちりして余計な事書いた。すまん。
325153:02/04/03 19:49
非ネット環境な祖母様の家に行ってました。

>>309-310, >>315 276さん
色々とご指摘有り難うございます。
pushとpopしか付けないなら、言われているとおり不要でした。
あと、練習問題でもコメントは入れる癖をつけておくべき、ってことですね。

>>315 でご指摘の方は、DrawKochでキャストしておかないと斜めになったので
切り捨てがアヤシイかなとは思っていたんですが、回避策が思い浮かばず
一応形にはなったからヨシとシトコか、と。
326153:02/04/03 19:59
あと、こちらの問題とは関係ないんですが、
コンマ区切りの文字列を分割するには、どうすればいいのでしょうか?
とりあえず自分で調べた範囲ではこんなに長くなりました。
Perlでの @array = split( /,/, $line ) みたいな単純な方法ありますか?

void main( void )
{
 string str, temp;
 int left, right;
 str = "hoge,moge,hage,giko,mona,fusa,zpnu";
 cout << str << endl;

 left = str.find_first_not_of( "," );
 while ( left != string::npos ) {
  right = str.find_first_of( ",", left );
  if ( right == string::npos ) {
   right = str.length();
  }
  temp = str.substr( left, right - left );
  cout << temp << endl;
  left = str.find_first_not_of( ",", right );
 }
}
327デフォルトの名無しさん:02/04/03 20:27
stringstreamを使うともっとスマートになるはず。
328デフォルトの名無しさん:02/04/03 21:09
>>326
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;

int main()
{
string str = "hoge,moge,hage,giko,mona,fusa,zpnu";
istringstream is(str);
char buf[128];
cout << str << endl;

while (is.getline(buf, 128, ','))
cout << buf << endl;
}
329デフォルトの名無しさん:02/04/03 21:09
>>328
スマソ。#include <iomanip>は不要デス。
int main()
{
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= 9; j++){
cout.width(3);
cout << i * j;
}
cout << endl;
}
return (0);
}
widthはループの前でいいんでないの?
332153:02/04/03 23:20
>>328 レス&具体例ありがとうございます。
ついでというとなんですが、意地でcharを使わないには、こんな風にするしかないですか?

string str = "hoge,moge,hage,giko,mona,fusa,zonu";
istringstream is( str );
string buf = str;
//もしくはbufを用意せずstrを使い回す
while ( is.getline( (char*)buf.c_str(), str.size(), ',') )
cout << buf << endl;
333デフォルトの名無しさん:02/04/03 23:41
string buf;
getline(is, buf, ',');
が可能。

(char*)buf.c_str()
はするべきではない。
334153:02/04/03 23:55
>>333
そうか、istringstream isはcinから読み込む時と同じように扱えるんですね
(ストリームだから?)
おかげさまでスッキリ収まりました。

>(char*)buf.c_str()
>はするべきではない。
これは、編集不可にしてあるものを弄るな。という理由ですか?
c_strは一時領域へのポインタを返す可能性があるから。
いやそんなの見たことねえけど、stringの実体にropeとか使ってる
処理系だとそのポインタを使って書き込みしても、オブジェクトが
更新されない可能性あるし。

いろんな意味があって、constになっている。
よく知らずにキャストはするなバカ詞ね。
そうだーね、c_str()される前は\0つけない処理系大石、
CopyOnWriteとか使われてたらうまくいけば他のcstringの
c_str()の内容も変わる程度だが...
歴史的経緯もあるが、しっかりしたconstの意味を
把握しないとだめだーね。
おいそこのキャストしてるやつ。
「オレは今大変な間違いを犯してるんじゃないか」と唱えろ。

三回唱えて自身がなくなったらキャストやめるかクビ吊れ。
338153:02/04/04 01:03
 ∧||∧  char *に変換できません。って言われるから、
(  ⌒ ヽ 出来るようにしたらいいのかと思ってました…
 ∪  ノ
  ∪∪
339デフォルトの名無しさん:02/04/04 01:37
>そうか、istringstream isはcinから読み込む時と同じように扱えるんですね
>(ストリームだから?)
ここまでで終わらず、同一の基底クラスから(このケースは厳密には違うが)
派生したクラスだという事をキーワードにして
ここでのgetlineの動作の仕組みを理解するべき。

>>(char*)buf.c_str()
>>はするべきではない。
>これは、編集不可にしてあるものを弄るな。という理由ですか?
STLにおいてconstのポインタで返されるもののconstを、キャストではずす
ことはまずありえない。そういう時は他の方法が無いか探すこと。

キャストはほとんど使う必要が無いものだ。
しかも、なんでも変換のCのキャストは危険。
C++のキャスト(static_cast等)を調べて身につけること。
340デフォルトの名無しさん:02/04/04 02:45
C++のウィンドウズプログラミング用のライブラリのMFCはキャストの嵐ですが何か?
341tamori:02/04/04 02:53
そんなこたーない(ノ■Д■)
342デフォルトの名無しさん:02/04/04 02:54
C++をやって結構長い(4,5年)けど
String, cout を一度もつかったことがない ショボーン (・q・)/
ウインドウズのAPIはユーザーデータが
DWORDだったりLPARAMだったり、void*以外も多いんで、
reinterpret_cast連発することになるから、意味無い
344デフォルトの名無しさん:02/04/04 07:19
すみません。コンストラクタのことで聞きたいんです。

継承したクラスを
コピーコンストラクタでクラスを初期化したときのことです。

継承元のクラス・・コピーコンストラクタを自分で作成。
継承したクラス・・・コピーコンストラクタを自分で作成。
この条件だと、
派生元のクラスのデフォルトコンストラクタ
派生したクラスのコピーコンストラクタ
が呼ばれます。

継承元のクラス・・コピーを自分で作成。
継承したクラス・・・作成しない。
この条件だと、
継承元のコピーコンストラクタ
継承したクラスのコンストラクタは、なにが呼ばれたか不明です。

自動生成されたコピーコンストラクタが呼ばれてると思うのですが
それで正しいのでしょうか?
前者は、派生クラスで親クラスのコピーコンストラクタを呼ばないとデフォルトが呼ばれる。
後者は、自動生成された派生クラスのコピーコンストラクタが、親クラスのコピーコンストラクタを呼んでいる。
>>342
別にいいんでない?

いつでも使おうと思えば使えるんだろ?
今必要でないだけで。
347デフォルトの名無しさん:02/04/04 11:28
>>344
継承元のコンストラクタは、継承先で明示的に呼び出さないと、デフォルトの
コンストラクタが使われる。
例えば継承元のプライベートメンバをコンストラクタで設定したい場合は次の
通り。

class A {
private:
int a;
public:
A(int i) : a(i) {}
};

class B : public A {
B(int i) : A(i) {}
};

int main()
{
}
348デフォルトの名無しさん:02/04/04 11:31
>>344
スマソ。コピーコンストラクタの話だったね。申し訳ない。
349デフォルトの名無しさん:02/04/05 23:19
#
#include<iostream>
#include<cstdlib>
#include<time>
using namespace std;

int main()
{
 srand((unsigned)time(NULL));
 if(rand()%2 == 1){
  cout << "age" << endl;
 }
 else {
  cout << "sage" << endl;
 }
 return 0;
}
351デフォルトの名無しさん:02/04/05 23:47
>>350
もう少しC++流にやるなら
 srand(static_cast<unsigned>(time(NULL)));
>>350
cout << ((rand()%2) ? "age" : "sage") << endl;
>>352
この後、機能拡張しようと思ってifブロックに入れました(ウソ)
>>351
srand((unsigned)time(NULL));

srand(static_cast<unsigned>(time(NULL)));
にはどういう違いが?



C++のキャストは構文チェックが厳しいので意図しないコードミスが減る。
C++のキャストは castで検索すればすぐに見つけられるがC形式のキャストは
そうはいかない。
#include<iostream>
#include<cstdlib>
#include<time.h>
using namespace std;

namespace MAX{
 const int MESSAGE = 2;
}
int main(void)
{
 string Message[MAX::MESSAGE] = {"age","sage"};

 srand(static_cast<unsigned>(time(NULL)));
 int Random = rand() % MAX::MESSAGE;

 cout << Message[Random] << endl;

 return 0;
}
352さんのソース(>>356)をいじって
ageは5%、sageは95%の確立で出力されるようにしてください

「お前がやれ」って?・・折れは・・・その・・・初心者なんで(゚д゚)
int Random = (static_cast<double>(rand()) / RAND_MAX < 0.05) ? 0 : 1;
cout << Message[Random] << endl;

数字直打ちだけど、とりあえずコレで足りるだろ。
359デフォルトの名無しさん:02/04/07 12:05
VisualC++でコンソールプログラムから始めている初心者なのですが、
リリースバージョンはどうやって作製するのでしょうか?
どういじりまわしても、デバグバージョンしか出てきません。
嫌われているのでしょうか?
御教示、おながいします。
>>359
VC++スレで聞けば?
361デフォルトの名無しさん:02/04/07 12:23
>>360
了解しました。有難う御座います。
>>359
プロジェクトのオプションも見ずに・・・。
以前にリリースする気???
なんでマニュアル読まないんだお前ら。
364デフォルトの名無しさん:02/04/07 14:32
2.3日前からCの勉強を始めたのですが配列でいっぱいいっぱいです。
これでは一番難しいと言われるポインタで死にますかね?
覚えたものとしてはprintf,変数,if,switch,for,while,関数作るな感じです
>これでは一番難しいと言われるポインタで死にますかね?

だから先人達はアセンブラをやれとあれほど(じゃなくて)

>>364
難しくありません死にません単純なことだからやる気と素質があれば1日でわかります。
>>365
マジレスありがとう。
かなり安心できたヨ
Σ(゚д゚)素質はないかも!
368365:02/04/07 15:33
スパンとオフセットとアドレスと逆参照がわかれば自然とわかる
あとはCの詳細をちょこっと読む、完璧。
なんつーか2,3日でそこまで行けば十分でしょ。
希望あるから頑張りな>>364
>>368
激しく感動
いや、ホントありがとう。
370デフォルトの名無しさん:02/04/07 16:11
>>364
ポインタは、徐々に理解できるというたぐいのものではなく、ある日突然理解
できると言った性質を持っているようです。
だから、わかる人にはツーツーにわかるが、わからない人にはさっぱりわか
らないという、宗教のようなものだという例えをした人もいます。
何せ、あまり深く悩まないで下さい。必ず理解できますから。
371デフォルトの名無しさん:02/04/08 07:14
>>364
ポインタは確かに理解するとすんなり分かるんですが,
コツを掴むのに苦労するかもしれません.
勿論,そんなこともなくすんなりいく人もいるみたいですが….

私の場合は,

C言語ポインタ完全制覇
前橋 和弥 (著)
技術評論社(2001/01/01) ISBN:4-7741-1142-2
http://www.amazon.co.jp/exec/obidos/ASIN/4774111422/uselesspgsnes-22

を読みましたね.
これでかなり頭の中がすっきりしましたよ.
本屋で立ち読みしてみてはいかがでしょうか?
 string Message[MAX::MESSAGE] = {"age","sage"};
こんな書き方できたんだ、初めて知ったよ
>>371
ぜひとも参考にさせていただきます
皆様色々ありがとうです
漏れ364の2日後ぐらいかな。
375デフォルトの名無しさん:02/04/10 14:22
1はそろそろ上達したか?
doudarou
ム板に見守られてる(らしい)>>1は幸せ物だな
>>377さんありがとうございました。
(゚д゚)
380デフォルトの名無しさん:02/04/11 02:20
(゚Д゚) ポカーン


ナニイッテヤガル・・・・・
381ああ:02/04/11 03:36
一週間あればだいたいわかるだろフツー
>>381みたいなことを言ってる奴に限って3ヶ月くらかかってるんだろ?

いいじゃないか、理解するのに時間をかける代わりに深く理解する奴もいるし、
すぐ理解する割には応用が利かない奴もいる。

初心者のみなさまは気にせずに、心ゆくまでジクーリと勉強してくださいね。
『C++が一週間でだいたいわかる』なんて、正気の発言とは思えないんだが。

>>381は、Cだけ熟知してて、C++の概要をほんの少し知って『C++はまあ、大体こんなもんだろ』と、
斜に構えて見てるだけか?
そういう状況なら、勘違い発言も平気で出来るだろうな。
かつてオレがそうだったヨ。
C++の規格書を読む

分厚くてたるい。結局Cとどう違うんだ?

CとC++の言語仕様的な違いを調べる

なんだ最近のCとかわんねー。クラスがあるだけか

例外はよくわからんけどエラーチェックは戻り値で十分だろ ....(A)

テンプレートってエラーばっかりで使い物にならん

クラスの仕様が分かった。簡単じゃん

継承・多態覚えた。(゚д゚)ウマー

C++覚えた。楽勝 ....(B) <= >>381 たぶんこの辺

デザパタ読んだ。すでにCでやってたってばよ。継承・多態が楽になっただけだよ

C++結構遅い(Cと比べて)

多態使いすぎでわけわからん。どうしよー。

テンプレート覚える。(゚д゚)ウマー

コンテナクラス作ってみる。(゚д゚)ウマー

例外使ってみる。メモリリークしてばっかりだめだこりゃ

Efficient C++読んでみる。STLよくわからん。

STL使ってみる。(゚д゚)ウマー

今まで作ってたコンテナ捨て捨て

Exceptional C++読んでみる。例外安全(゚д゚)ウマー

Modern C++読んでみる。上には上がいるがここまでやったらバカだ

プロジェクトで使い物になりそう

同僚が(A)ぐらいのレベルなんで差が有りすぎてだめじゃん
そう、そして俺は過去の>>383と同じ状態。
いや、俺はCも含めて3日だったが・・・
その代わりその3日間は丸々つぶしたけど。
>>386はただの春デムパですので皆様無視してください。
暖かくなると出てくるんですよね、困ったものですヽ(´ー`)ノヤレヤレ
当初、使用許諾契約書でつまずいていた
1さんは、どうなったんだよ!?
他の言語の下地があれば3日もかからないかと。
>>389はたぶん(A)のあたり。
他の仕事の経験が有れば、こち亀100冊読んで警官の仕事がマスターできる
っていってるくらいハレンチな言い分だ。
>>387,390,391
あたりは3日もかかって理解できなかった白雉ですか?
>>392が書いたコードは見たくない罠。
そんな罠。
395デフォルトの名無しさん:02/04/14 18:00
だれか>>384の続き書いてよ!
>>395

会社更正法申請、人員削減で失業

初心者の皆様、プログラムは趣味の域に留めておくべきだよ。
更正法申請できるだけマシ。ふつうは私的整理、ないし夜逃げ。
C++を勉強始めたんですけど、
>>132をやってみようと思うので、添削お願いしてもよろしいですか?
ちなみにプログラムはC++が始めての挑戦なのでお手柔らかにお願いしたいです…
今のところ1だけですが…
#include <iostream>
using namespace std;

void main (void){
int i = 1;
cout<<"九九の表示をします"<<endl;
cout<<" 1 2 3 4 5 6 7 8 9"<<endl;
cout<<"-------------------"<<endl;
while(i <= 9){
cout<< i <<"|";
for(int j = 1; j <= 9; ++j)
cout<< i * j <<" ";
cout<<endl;
++i;
}
cout<<"-------------------"<<endl;
return;
}
399デフォルトの名無しさん:02/04/14 23:32
>>398
まず int main(void)と書く癖を付けよう。
次に、最後のreturn; は取ろう。C++はノーエラーの時は0を返します。
次に、全部の行にendl;はその都度バッファをフラッシュするので、'\n'にしよう。
endlは最後に一つで十分。
>>399
ほー、endlってフラッシュするんだ。知らんかった。
環境毎の改行をendlで吸収しているだけかと思っていたが、
言われてみれば、なるほど「\n」というエスケープシーケンス
で既に吸収しているのか。勉強になるなー。
じっそういそんです。
じっそういそんです。
じっそういそんです。
じっそういそんです。
じっそういそんです。
じっそういそんです。
じっそういそんです。
じっそういそんです。
>>399
main関数はint型ですか。
チョト質問です。mainをint型にしてretrun;をとったらコンパイラに警告されたんですけど
無視してもいいんですか?
あと、最後のendlが反復の中にあるときは中は\nにして
外でendlを入れたほうがいいんでしょうか?

んで2もやってみました。
#include <iostream>
using namespace std;

int main (void){
int no[99];
int i = 0;
cout<<"出力するには0を入れてください。\n";
while(i < 100){
cout<< i + 1 <<"番目の数字を入力してください。=";
cin >> no[i];
if(no[i] == 0)
break;
++i;
}
cout<<"逆に出力します。\n";
while(i != 0){
cout<< i <<"番目の数字を出力します。="<< no[i-1] <<endl;
--i;
}

return 0;
}
403398:02/04/14 23:55
あ、なんか二番目の質問意味わからないこといってしまった…
スマソ…二番目の質問は無視してください…
警告は無視しない方がいい。
戻り型(int)が指定されてるのに、値を返さない return; があったので
警告がでたんだよ。

とりあえず return 0; しときなさい。
405398:02/04/15 00:13
3も。
2をちょっと変形しました。
#include <iostream>
using namespace std;

int main (void){
int no[99];
int i = 0;
cout<<"出力するには0を入れてください。\n";
while(i < 100){
cout<< i + 1 <<"番目の数字を入力してください。=";
cin >> no[i];
if(no[i] == 0)
break;
++i;
}
cout<<"入力順に出力します\n";

int j = 0;
while(i != 0){
cout<< j + 1 <<"番目の数字を出力します。="<< no[j] <<endl;
++j;
--i;
}
cout<<"平均=";
i = j;
int goukei = 0;
while(i >= 0){
goukei += no[i];
--i;
}
cout<< goukei / j <<endl;
return 0;
}
もっとスマートにできる方法はないのだろうか…
4は保存の仕方がわからないのでチョトあくかもしれないです…今日はネリュ
406398:02/04/15 00:14
>>404
はい。警告0でがんばりたいと思います。
for文を使わないのはなぜ?

もっと遙かにスマートだけどちんぷんかんぷんな書き方もあるけど、
とりあえずforでループしなさい。
408398:02/04/15 00:39
>>407
……実はforの使いどころがわからんのですよ…
whileとifはなんとなくわかるんですが
forって上の二つですみそうじゃないですか・・・
ループする回数が決まっていて、
一個ずつ処理する場合は普通、forを使う。

それ以外にも変則的な使い方もできるけど、
わざわざwhileでは書かないねえ。

forだと、ループ変数の初期値と、継続条件、カウンタの処理が
一行に書けるからすっきりするでしょ?

whileだと、
初期化
while(継続条件) {
;
;
;
カウンタの処理
}

になって分かれちゃって見づらいし、
カウンタの処理書き忘れたり、continueやったらカウンタそのままで
永久ループしちゃったりとか、悲しいことが多いでしょ?
410398:02/04/15 00:53
>>409
ってことは、処理する回数が決まってるもの(事前に決められているもの)はforをつかって、
真か虚かで判断するものはwhileをつかえってことですか?
それならなんとなくわかりますね。
411デフォルトの名無しさん:02/04/15 01:01
しかしC++ならばreturn 0; は最後にいらないはず。
コンパイラは何ですか?
ループカウンタを使うなら、for
そうじゃないならwhile
でも、あえて違うのを使うこともありってことだね。

do while も忘れないようにね。
forやwhileではすっきり書けないものが書けることあるから。
413デフォルトの名無しさん:02/04/15 01:01
あ、main()の場合だけですよ。
C++勉強しようと思うんだけど・・・
俺マカーなんだよねぇ…(TДT)
Macの開発ツールってなに?
415398:02/04/15 01:06
>>411
MS C++6.0のプロジェクトWin32 Console appでつくってます
"main":関数の戻り値の型が指定されてません。戻り値をvoid型とみなします。
っていわれます。<return 0;が無いと
>>421
はい。いろいろ使い分けてみます。
互換機を一台買うことを薦めるよ...
macの開発環境は貧弱だ。
>>415
void main(void)
{
  :
  :
}

ってやればいらないよ。
あ、(void)は適当に書き換えてね。
418398:02/04/15 01:10
う。
>>399でint main(void)ってやれっていわれたんですが…
void main(void)の時はたしかに言われませんでした。>return;なくても

どっちがいいんでしょうかね?
419デフォルトの名無しさん:02/04/15 01:10
>>415
あ、確かにVC++6.0はreturn 0; を除くとエラーになりますよね。
しかしそれは古いC++の規格です。ANSI-C++ではmain()に限り
値を返さないと暗黙のうちに0が返されます。
ちょっとずれるけど、main()に限らずほとんどの関数(メソッド)は
成功か失敗かを表す何らかの値を返すべきだと思うがどうよ?
俺は基本的にunsignedの型にして成功=0、失敗=エラーコード(>0)ってしてる。
privateのメンバ変数に値をセットするような単純なメソッドはvoidだけどね。
>>419
たしかVC++はあまり正確に準拠してないはず。
たとえば
for( int i = 0 ; i < 100 ; i++ )
  printf("hoge");
for( int i = 0 ; i < 100 ; i++ )
  printf("hage");
って書くとintが2重に定義されてるとエラーを吐く。
Macは貧弱なのか…
Win使う予定も金もないし、まぁいいや。
423デフォルトの名無しさん:02/04/15 01:19
>>420
それはケースバイケースじゃないかなあ。成功や失敗のステータスは
複数返さないといけない場合が多く、それに対して返り値は一つしか
持てないから、構造体にしてでも返さないといけなくなる。
そういう場合は例外を使ってエラー報告している。例外は重いので
ステータスを返すのに使ってはいけない。
値を返すことに意味のない環境やプログラムも多々あることだし、
べつにいいんでないの?
その場に応じてやるなら。

ただ、アプリケーションのmainの戻り値がOSに返されることを
理解せずに、いわれたままvoid mainとか main(){return; }するのが
ダメなのは同意。

ほとんどの関数で成功、失敗を返すかどうかは、また別次元の問題。
処理した結果のみを返すコーディングをする場合、エラーに対しては
例外を投げるのが正しい。
旧来のCから引き継いだコードを手直しするのがばからしいので、
そのまま戻り値でエラーチェックをする、というのも正しい。

他言語を睨んだライブラリやOS のAPIみたいに、例外が処理できない
環境が有る場合は、関数の戻り値で返すのがスマートだとも言える。

なんか君の意見は場違いなきがする。反省しる。
425398:02/04/15 01:22
>>421
ANISに準してると、どう変わるんですか?
int i を二回定義しても問題ない?
それとも i のスコープがfor内だけ?
>>421
for文の中で定義した変数の寿命に関する問題ですね。
最新版のVC++では直っているのか?
>>425
その通りです。for文内で定義した変数のスコープは、for文内に
限られます。
#ifdef _MSCVER
#define for if(0);else for
#endif
をアプリケーションの共通インクルードファイルの頭においとけ。
C++で軽々しく例外を使うなよ
exceptional c++ぐらいは読んでいて欲しいな。
だがべつに、神経質になるほどのものではない。
modern c++ designぐらいは読んでいて欲しいな。
標準c++って例外クラスがほとんど無いから、
一般化した例外クラス、クラス・アプリケーション固有例外クラスをわざわざ派生させなきゃならないから、
作業量が多すぎる
std::logic_errorから派生した例外クラスは作る必要はない。
logic_errorを投げるくらいなら、基本的にassertするべき
例外はsetjmp, longjmpの生まれ変わりであると信じている云々。
435デフォルトの名無しさん:02/04/15 01:53
C++でオブジェクトファイル形式に対して変更する必要が
あったとかなんかで読んだんだけどa.outなんかのどの辺りに
問題があったんでしょうか?
>>435
オブジェクトファイル形式?実行形式?
オブジェクトファイル形式なら、関数の多重定義に既存のリンカが
使えるような留意がなされていたと思うけど、激しく勘違いですた。
C++の例外は呼び出され側(例外送出側)主導だからなぁ。
呼び出し側では、無視してもかまわないと判断した例外もすべて補足してやらないといけない。
ちょっと面倒なんだよなぁ。
>>437
catch (...) とか言ってみるテスト。
>>438
それをすべての呼び出しに書かなきゃいけないのが面倒。
>>437
無視して構わない例外は送出すべきではない。
全部が全部例外にするのはバカだろ。

たとえば、UI出して、ユーザになんか選ばせて、
がーーーーっと計算して答えをさいごにちょビット出す場合、

計算に失敗したらもうだめなの確実だろ?

try {
 計算いってこいやゴルァ()
}
catch (...)
{
 MesageBox("もうだめぽ");
}

で、計算中はデータが全部正しく入ってくるものとみなして
よけいな戻り値チェックはしない。
で、エラーがあったら例外送出。

だろ。

計算の場合は簡単だが、そうでないアプリも、そうでないなりに、
エラー処理を例外で処理すれば簡単になる場面は多い。

はっきり言う、いちいち呼び出しごとに例外処理するのはバカだ。
すべての呼び出しに書かなきゃいけないなら、そりゃ設計が悪いのだ。
もちろん関係ない例外はいちいち再投入する。
これは省略できない。

しかし例外キャッチするところを最低限の数に押さえれば
面倒、というほど面倒な数には鳴らないはず。

例外の種類によっては成功するまで繰り返したりなんて処理をやると(以下略

ま、実際ちゃんとしたのを書きたかったらその程度の作業は苦にはならないけどね。
成功するまで繰り返すタイプはほんとの例外じゃないから、
戻り値で処理すべきなんでは...

まあ、どっちで書いても、わかってるやつが書けばそれほど
変にならないけどね。
445C++使い:02/04/15 03:15
Javaのfinallyだっけ?あれが少し欲しいような・・・
バカよけfinalはいらん。
というのがC++使いの統一見解です。
ほしい。
ポインタをtryブロック内で宣言できない。
auto_ptrをつかうのがC++の流儀デス
>>447
STLのコンテナかauto_ptr, shared_ptrを使いましょう。
つーか、shared_ptr出すなら、scoped_ptr/arrayの方が適切だと思う。
例外ってwarningレベルでは投げるべきではない?
>>402
>>405
バグがあるようだけど…
453398:02/04/16 06:48
>>452
え?どれですか?
教えてくれると幸せになります>漏れが
454452:02/04/16 17:48
>>453
no[0] 〜 no[98]
455398:02/04/16 19:48
>>454
あー、なるほど…
間違って覚えてました…
99って0-99じゃなくて0-98なんですか…
100で0-99なんですね。
アリガトウゴザイマス。
456デフォルトの名無しさん:02/04/19 20:45
お給料計算プログラムです。

#include <iostream>
using namespace std;

int main()
{
  const int jikyu =1200;
  int hour;

  cout << "How many hours have you worked?"<<endl;
  cin >> hour;
  cout <<"Your salsary is "<<hour*jikyu<<" yen."<<endl;
  return (0);
}
457デフォルトの名無しさん:02/04/19 20:48
>>399
漏れの買った
「An introduction to Programming with C++」
Diane Zak
という本では
int main()
になっているのだが、int main(void)と書かねばいけない理由でもあるんでしょうか?
voidはカラッポという意味だからどっちでもイイ
c++ではmain()はmain(void)と同義
cだとmain()は不定個数の引数を受け取るという意味。
main(void)だと受け取らないことを明示する書き方
Cの
int main()
は何でも受け取れるらしい
C++での()は完全にvoidらしい
>>460
つーか、Cでint main()やると、引数のチェックがされないだけで、何も受け取
れないだろ。C++のint main()は、完全にint main(void)と同じ意味。
void func(...)
と同義?
>>462
intを省略してmain()と書いたら、int main(...)と同義になる。void main(...)とは
ならない。
... を関数の仮引数に書くには最低1つ以上の決まった引数が必要。
465460:02/04/20 00:06
>>459>>461
こちらの方が正しいと思われ。
スマソ
sage
sage
468デフォルトの名無しさん:02/04/26 10:36
ん?
ん。
ん〜
ん?
ん。
ん!
474デフォルトの名無しさん:02/04/30 07:31
n?
475デフォルトの名無しさん:02/04/30 08:12
C++とC#とどちらか一つを選ぶとしたらあなたはどちらを選びますか。
私の手元には「VC++.NetStanderd」と「C#.NetStanderd」があります。
言語はどちらもサパーリ分かりません。作ってみたいソフトは簡単な
たとえばソリティアみたいなカードゲームと、インベーダーゲームです。
思わず衝動買いしてしまったのだけど・・・。
>>475
HSP
片方くれたら、どちらを選ぶべきか教えてあげる(はぁと
>>475
おれもHSPをお勧め。
>>475
悪いことは言わん。俺もHSPを勧める。
俺はカードゲームツクールとインベーダーゲームツクールが良いと思う。
ちなみにDOS上でするのがCUI(キャラクターユーザーインターフェイス)
え・・・お呼びでない?
こりゃ失礼。
Stand・e・rd…。パチもんですか。
>>481
DOSだってGUI出来ます。帰れ。
485デフォルトの名無しさん:02/05/02 15:51
オススメの書籍はありますか?
あるます。
あるますまい。
あるますれば。
あるますた。
490デフォルトの名無しさん:02/05/03 00:46
ストラウストラップ C++第三版!!(ASCII -1000p以上-)
買えよ!下手なドラッグよりキクぜ!!
キクます。
492デフォルトの名無しさん:02/05/03 01:04
キクキク
493デフォルトの名無しさん:02/05/03 01:10

>>490
それ入門書なの?
494490:02/05/03 01:16
違う、細かいところを補うの
495デフォルトの名無しさん:02/05/03 01:17
でしょ。あくまで参考書のようなきが・・・
496デフォルトの名無しさん:02/05/03 01:30
このすれ面白いな。
>>1がんばってください。
sage
498デフォルト:02/05/07 21:27
#include<stdio.h>

void main(void)

{
int a;
printf("整数値を入力")
scanf("%d",&a);
printf("a=%d\n",a);
}

上のプログラムを変更して
実数(小数)の値を扱えるようにするには
どうしたら良いのか教えて下さい。
初心者なのでさっぱり分かりません。
>>498
まず、"整数値を入力" と言うのを "実数値を入力" に直せ。
話は、それからだ。
500デフォルトの名無しさん:02/05/07 21:33
aはintを表す変数。これを小数点数を表すfにすればオケ。
501ちっ:02/05/07 21:34
>>500
×aはintを
○aは整数を

{
int a;
printf("実数値を入力(ただし、16bit固定少数とすること)")
scanf("%d",&a);
printf("a=%d.%d\n",a>>16, a & 0xffff);
}
>>500はばか
>>502は甜菜
>>502
おっさん、最近のintは32ビットや。
>>504
>>502はなぜかプログラムは32ビットのintとして書いてあるように思える。
>>501
その前に、「小数点数」ってなんだよ。お前のテストの点数のことか ?
>>506
うまい! やまだくん、うたまるさんにいちまい!
実数てなんだ?(T T)
>>508
中学校 (だっけ ?) からやり直せ。
教科書の最初の一、二ページ目に書いてあるだろうに...
実数の定義を言えるやつがこの板なんかにいるもんかい。
513511:02/05/08 01:17
俺が言いたかったのは、実数の定義だが、まあ、
>>512は役に立ちそうだ。さんきゅう。

ちなみに、俺のいなかでは、
自然数の定義:なし
整数の定義:自然数とマイナス付き自然数と0
有理数の定義:整数のペアの同値類
実数の定義:有理数列の同値類
>>513
自然数の定義:なし
整数の定義:自然数とマイナス付き自然数と0

自然数に定義の定義が不可能なら整数の定義も不可能では?
>>514
そんなあなたにプレゼント。
問:砂、小石、石、岩の4つを循環定義にならないよう定義すること。
#すれちがごめっ
石=右の頭が取れたもの
岩=石の上に山が乗ったもの
小石=石の左に小がついたもの
砂=石の右に少がついたもの
自然数の定義ってどんなの?
漏れは
for( i = 0; hoge; ++i );
を有限回ループして得られる値iの集合 程度の認識なんだけど。
↑最低1回は実行ね。
有理数:アレフ0の数集合のうち最大限のもの。
実数:アレフ1の数集合のうち最小限のもの。
といってみるテスト。
>>517
0って自然数だっけ?(マジシツモン)
521511:02/05/08 21:49
>>520 おれのいなかでは違う。
んじゃ、スレを本筋に戻すぞ。よっこいしょ。

アセンブリ言語の定義:なし
Cの定義:構造化アセンブリ言語
C++の定義:Cを美しく改良した最高の言語
Javaの定義:C++から危険因子を取り去った簡易言語
C#の定義:Javaのバッタもん
managed C++の定義:いい加減にせんと殺すぞ、こらぁ。
VB.NETの定義:お気の毒に。
Delphi.NETの定義:君たち、プライドって言葉知ってる?
J#の定義:すみません。もうどうにでもしてください。
522デフォルトの名無しさん:02/05/09 12:22
スレは戻らず終了するに至る。>>521
>>521
ほぼ同感。
>>520
だから最低1回実行ということだと思われ。
1回目の実行じゃ0しかでない
1回実行すればiは1になるぞ?
52730(1ヶ月ぶり):02/05/10 03:45
そういえば>>1はどこへ逝った?
もうやめたのか?まさか
>>520
>0って自然数だっけ?
代数的な構造を考慮に入れるなら、0も自然数。
負でない整数=自然数、ということ。
ただ、工学、専門的なコンピュータの世界ではどうなのか知らない。
529520:02/05/10 08:55
>>528
なるほど。厨房のときに習ったきりだったんで忘れてました。
>>529
高校生以下なら自然数は1からと決められていたはず。
上の話は大学以上。
531デフォルトの名無しさん:02/05/11 14:07
>>511のいってることがまったくわからん。定義がないってどういういみ?
±∞/∞
のとりうる値の集合+0・・・・違う?
>>532
ごめん>>513のこと
>>531
定義不能、ってことじゃないの? あるいは、ペアノの公理系を満足する
何物か。おれたちが素朴に心の中に持っている自然数も、そのひとつ。

>>513
重箱隅だが、たんなる有理数列じゃなく、コーシー列だね。
535511:02/05/11 21:14
>>534
おお、マジレスが。ちょっとびっくり。
>重箱隅だが、たんなる有理数列じゃなく、コーシー列だね。
そだね。すまん。

君は数学屋さんかい?なら、こんなとことおらんか?

>>531
ごめんな。俺もわかってないかもしれん。
「自然数の定義」って読んだことあるけど、
それがほんとに定義なのか俺にはよくわからんかった。
考えていくと>>515のようになる。(>>516にはワラタ。)

なら、自然数を無定義で受け入れた方が気が楽、ということ。
俺の先生は、いきなり、「自然数は定義しない」で授業はじめやがった。

(どうだい?>>534
sage
Accelerated C++買ってきた。今日からC++のお勉強。
sage
539デフォルトの名無しさん:02/05/14 11:44
アクセラC++はいい本だ。
でも、成績処理というサンプルコードが、世のPGの99%に過去の傷を思いださせる、という罠。
もっと明るいサンプルならよかったか?
540537:02/05/14 14:08
>>成績処理というサンプルコードが、世のPGの99%に過去の傷を思いださせる、という罠。

禿同(w

まだ1/3しか読んでないけど、C本より易しいっすな。
まぁ、後半むずくなってくるのかもしれんが。
アクセラC++とコバケンのこれならわかるC++読了。
とりあえず実際にソース読んでみたいんだけど、
お勧めありますか?
sage
543(゚∀゚):02/05/24 14:39
1さんの疑問は解決されたのかなー

おれもC++をはじめてみようかと思ってるんだけど
よくわからん。アドバイスお願いします

希望としてはWindows環境でお金をかけずに。
本は2,3冊なら買ってもいい

知ってる知識としては
VC++ :MS謹製、アイコンいっぱいで良さそうだけど金かかる
Borland C++ Compiler :タダで配ってるが、面倒くさそう
Borland C++ Builder:VC++みたいなもんか。金かかる

こんなとこです。よろしくお願いします
544(゚∀゚):02/05/24 14:45
あと、.net SDKでC#がタダで出来るようになるみたいだけど
これからやるならC++よりC#のがいいんかいな??

>>544
SDKにはC++も付いてくるけど。MC++だけかな?
DDKにも16bitのVCがついてくるよ!
547(゚∀゚):02/05/24 16:40
>545
MC++だけみたい。
よくわかんないけども

DDKとSDKの違いもようわからん
.NET SDKのC++は普通のネイティブも吐ける
DDKについてくるVCは1.52だけど、MEDDKだけらしい
549デフォルトの名無しさん:02/05/24 16:55
>>548
>.NET SDKのC++は普通のネイティブも吐ける
それって、STLとか使えないやつ?
使えるんなら、情報きぼ。
BCCとどっちがいいんだろ?
>>549
STL使えない奴って何だよ、言語自体は同じ物だよ。
標準でPlatformSDKとかSTL/iostreamがついてこないだけ
んなもんSTLPort入れりゃ何とでもなる
551(゚∀゚):02/05/24 17:15
つまり、.net SDKを使えばC#もC++もできるってことなん?
ちょっと面倒でもタダだし、それにすっかなー
552あほでごめん。:02/05/24 17:20
C++でリンク機構のシミュレーションを作ってるんですけど、
リンクのアニメーションをするときに、画像を消して次の画像を
描かせてまた消してってやると画面がちらつくし綺麗に動きません。
どうしたらいいですか?
>>551
C#何かはデスクトップに使うには90%の価値がRADにある。
いや、ちょっと多く見過ぎかもしれないけどね。
言語仕様は悪くないし、ライブラリも充実してるんだけど、
アプリケーションを作るなら今はフルスクラッチよりはRAD使った方が良い

>>552
ダブルバッファリングしる!
554 :02/05/24 17:35
>553
ふーむ、C#はアイコン付きで開発したほがいいのか
.net SDKでC#をいじるメリットはそんなにないのね
アイコンが付くと金取られるなぁ、それはカンベンだ

.net SDKでのC#があまりオイシクないのなら、C++やるのは
borland C++ compilerでやるのも大して変わんないのか?
555デフォルトの名無しさん:02/05/24 17:37
net.sdkただでできるってどこでDLできるの?
556あほでごめん。:02/05/24 17:39
>>553
ダブルバッファリングって何ですか?
例え話でもいいですからこういうもんだって
教えてください!
>>555
マイクロソフトに決まってるだろーが。
>>554
C#の言語仕様に萌えるならC#でやっても問題ないけど
#SharpDevelopというフリーの開発環境もある
そうでないなら、C#は.NETを通さないネイティブコードは吐けないし、
あんまりうまみがないと思うよ。

C++やるならbccの方が標準でライブラリもついてるし、
(弱いながら)最適化も搭載してるし、.NET SDKのC++よりは良いと思う。
>>556
検索すればごろごろ出てくるが・・・
直接画面に書かないで、メモリの中で画面を完成させてから
表示画面に一度に転送すること
>>556
たとえ話だけどさ
学校でさ、数学の問題なんかさ、当てられてから考えてたら時間かかっちゃうわけよ。
んで前の日に予習してノートに書いとくわけ、当てられたらそれをそのまま答えるだけ。
>>556
DirectXのflipのことじゃない。
563あほでごめん。:02/05/24 17:50
>>560
にゃるほど。ありがとうございます。
調べてみるわ。
>559
なるほど、どうもありがとう

まとめとくか
Windows環境でお金をかけずにC++をやってみたい

× VC++ :MS謹製、アイコンいっぱいで良さそうだけど金かかる
× Borland C++ Builder:VC++みたいなもんか。金かかる
× .net SDK:C#もできるが、C#のウマミ半減。C++だけならBCCのほうが良い
◎ Borland C++ Compiler :タダで配ってる。面倒くさそうだが我慢しる!
>>564
ちなみに、.NETのC#とC++は別物だから一緒くたにしないように
VectorでBCC用の開発環境(フリー)落とせば、面倒くさくはない。
>>566
デバッグがTDだからめんどくさい!
っていうか、watcom使いましょう。
ソースも公開されたし統合環境もソースデバッガもついてきます。
最適化もbccよりは遙かに効きます
C++の勉強にデバッガは要らない。
コンパイルができればいい。
勉強ならC++何か使わないでJava使えよ!
570(゚∀゚):02/05/24 19:01
>566
すげーいっぱいあるんだけども
http://www.vector.co.jp/vpack/filearea/win/prog/c/index.html

>567
watcomはBCCよかいいの?
>>570
標準で出来ることはbccの方が多いけど(WinSDK/STLついてる)
環境を整備すれば統合デバッガやSpy/リソースエディタなどがついてる分、良い環境になるよ。
コンパイラ自体の性能も高いからね。
標準準拠度はbccよりは低いかもしれない
572(゚∀゚):02/05/24 19:14
watcomからダウンロードできないな
win2000にも対応してんのかわかんないし

結局、vectorからbcc developerをいれることにしたよ

まとめとくか
Windows環境でお金をかけずにC++をやってみたい

× VC++ :MS謹製、アイコンいっぱいで良さそうだけど金かかる
× Borland C++ Builder:VC++みたいなもんか。金かかる
× .net SDK:C#もできるが、C#のウマミ半減。C#使わずC++だけならBCCのほうが良い
× watcom:オープンソースのC++。現在、ダウンロードできない。
◎ Borland C++ Compiler :タダで配ってる。vectorからbcc developerを落とせばBorland C++ Builderみたくなる
>>572
Digital Marsは駄目か?一番だと思うが。
あと、bcc developer使うとBCB見たいになるってのは、
あまりにBCBに失礼だぞ・・・。
574(゚∀゚):02/05/24 20:46
>573
Digital Marsってのもあるのか。しらんかった。

とりあえずBCC とBCC DeveloperでC++をはじめてみるよ
>10にある猫のページからやっていきます
>>573が何を基準にDigital Marsを一番といってるのかは分からんけど、
俺は、Digital MarsはC++標準への準拠度合いが低くてちょっとなー、と
思うんだが。
DMCの良いところはMFCが通ることくらいじゃないのか?
577549:02/05/24 22:13
なんか遅レスでもうどうでもいいやって感じだけど。
>>550
>STL使えない奴って何だよ、言語自体は同じ物だよ。
なんかSTLPortとか中途半端な知識だけある?
VC++6.0ではSTL使えんかったのよ。知ってる?
(またパーなレスあると嫌だから言っとくと、STLを使うと、
コンパイルできなかったり、できても不安定だったり、
つーことな。)

まあ、以後のレスを見るとbccでいいかって感じだな。
bccでこまったことはないから。
>>577
ハァ?あんたアフォですか?
Dinkumware/Rogue Wave/SGI STL(STLPort)
ばっちり使えるんですが?

メンバーテンプレートをキッチリサポートしてないとか、制限は勿論あるけど
それの代替え実装もきっちりあります。 STLが使えない ってワケじゃないんですが?
VC6.0を貶してみたいだけですか?

あんたが言ってるのは
VC++は標準C++に完全準拠してないからC++使えんかったのよ。しってる?
これと同レベル。
とりあえず、STLが使えない例と使うと不安定になる例をキボン
話はそれからだ。
580デフォルトの名無しさん:02/05/24 22:34
ageて見る
>>579
部外者だけど、Lokiのライブラリとかかな。
詳しくは「Generic〜」スレ参照。
>>581
部外者でも何でも良いけど、何でLokiがSTLなんだよ?
bccでもつかえねーし。
583(゚∀゚):02/05/24 23:20
ぬげー
いきなり難しい。
初めての山登りで南アルプスを縦走してるような難しさだ。

がんばるぞー!!
584578:02/05/24 23:20
あー、なんて言うか知ったか厨の煽りに乗ってしまったようだ。
まともな知識を持ってる奴が
>コンパイルできなかったり、できても不安定だったり、 つーことな。
>bccでこまったことはないから。
こんな発言出来ないよな。
タダで始めるC/C++プログラミング for Windows
http://www2.wbs.ne.jp/~dskoba/database/prog.htm
586549:02/05/25 09:28
>>578(ボケ男くん)
>あんたが言ってるのは
>VC++は標準C++に完全準拠してないからC++使えんかったのよ。しってる?
そう言ってんだけど、何か?
バグフィックスしないとgetlineも使えないんだよ。
使ったことないんじゃない?あ、日本語もダメな人?
(言っとくけど、bccが完全準拠とはいってないよ。)
>>586
バグフィックスすればいいじゃないか
STLPortを使えばgetlineも問題ないし、listのソートバグだって無いよ。

>そう言ってんだけど、何か?
いえ、別に何も。

んで、STLを使って"不安定になる"ソースを出してください。
おながいします。
588デフォルトの名無しさん:02/05/25 10:04
549以外の人に質問
世間一般では VC++6.0 はC++として使えないと言う認識なんですか?
また、VC++6.0 で STL が使えないと言うのは常識なんですか?

ココまではっきり(ボケ男くん)って言われるくらい自信たっぷりみたいで、
どうにも俺の方が自信なくなってきました
>586
なるほど、「使える・使えない」という表現に本人独自の基準による
ニュアンスを込めた上で、それを読み取れない人の方に問題があると
思い込んでいるから、君はそんなおかしな言動をとるわけか。

ところでその単語レベルの稚拙な煽り、場を和ませるギャグか何か?(苦笑
>世間一般では VC++6.0 はC++として使えないと言う認識なんですか?

「世間一般」と「C++として使う」の定義によるなあ・・・

テンプレートオナニー界では使えないという認識。
>テンプレートオナニー界では使えないという認識

うぃす、それは承知してます。
アプリケーションプログラム言語を選択する上で、
選択肢に C++ と言う候補があった場合には、
普通VC++6.0(もう.NETで7が出たけど)を選ぶというのは
失笑を買う行為なのでしょうか?
> アプリケーションプログラム言語

むしろそのアプリの性質によるんじゃないかなあ。
GUI主体ならGUIフレームワークの選択になるだろうし、
計算主体ならその計算のライブラリの選択になるだろう。
そうなるとある程度は言語や環境も限定されてしまうんじゃないかな。

その上で選べるというのはある意味幸せかもわからんよ。

正直な話、C++でなきゃダメっていう状況ってそんなにないと思うよ。
だから C++ を選択するということ自体が
「失笑を買う」可能性があると思う。
>>592
つか、その辺は話の流れでわかるっしょ。
>>593
分ってないから「失笑を買う」だとか「使えないという認識」
とかいう言葉がでてくるんでないの?
話の流れは592のような状況の選択じゃなくて、
このスレの話の流れ。

じゃ、訂正します。
C++で作ると決定されている場合に、VC++を選択するのは
一般的じゃないって言うことですか?
> C++で作ると決定されている

仮定として無理がある。 >>592 にあるとおり、環境や制約、目的、
使うべきライブラリによって「ほとんど」決まってしまう。

例えば、unixで実行する必要があるなら、VC++はその時点で外されるでしょ?
ん、このスレは「勉強するなら」という話じゃなくて?
>>596
もしかして、549ですか?
VCが出てくる段階ですでにwin32環境限定の話だし、
そもそもこの質問に至った経緯が
(vc++ != C++) == true;であるか否かってところなので、
そこまで極端に一般化して考えなくても良いじゃないか。

俺の周りで VC++ の話をするときは普通に C++ として扱っているので、
それがそもそもおかしいのか、それが自身がなかったからそれを聞きたいだけです。
>>598
>VCが出てくる段階ですでにwin32環境限定の話だし、
WindowsCEを無視するあなたがすてき。
WinCEはeVCだし、Win16はObsolete
>もしかして、549ですか?
違うけど・・・

>(vc++ != C++) == true;であるか否かってところなので、

まさにその話じゃないか。
その式を評価するには環境を決める必要があるのよ。
win32は環境の一つでしかないし、他にも環境変数は沢山あるぞ。藁。

環境を曖昧なままに評価するのは難しいし、
そういう場合は得てして回答者の思い込みに過ぎないと思う。
全くずぶの素人だけど、
>>601の言ってることは揚げ足取りにしか思えない。

本当に>>598の聞きたいことが話の流れと文脈からとれないようなら
プログラミングの勉強以前に日本語の勉強し直した方がいいよ。

まぁ、わかった上でやってんだろうけどさ。
周りの人から嫌われてるだろ、自分ら(w
>>602
見ず知らずの集団にいきなり飛び込み批判だけして去る。
あなたの正確に問題がないかと言えば私はyesと言う自信がない。
>>591
VC++と、VC++に付いてくるコンパイラを区別して話せ。
VC++≒Microsoft (R) 32-bit C/C++ Optimizing Compiler
そもそも標準に完全に適合したC++コンパイラなど存在しない。
Cでさえ・・・
608549:02/05/26 07:05
ひさしぶる。(w
俺は、仕事ではVC/MFC使ってて、実はVCは好きなんだよ。(C#は好かん。)
ただSTL使おうと思ったら、困った困った。
そういう経験してないのは、大したことしてないからだろ。

言っておくと、VC++.NETでは、(俺がぶつかった)問題はなくなった。
別にアンチVCではないんだよ。(特に、お前、お前だ。>>550

もともとの質問を読んでくれや。
聞きたかったことSDKに付属とやらのコンパイラ/ライブラリはMSのどの辺の
バージョンなんだろか、STLで問題ないバージョンなんか?という意味だわ。
これは、あくまで、「趣味」の質問なんだけどね。仕事ではどうせVCなんだから。

日曜の朝からくだらんレスをしてしまった。やれやれだ。
609549:02/05/26 07:08
あ、仕事では、当分VC6.0だよ、うちは。MFCしか使わんから。
>という意味だわ。
別に後出しジャンケンしにわざわざ来なくてもいい気がするんだけどね。
そんなに頭に来てたのか。
>>608
なー、VCでSTL使おうとして、何で困ったの? 俺はauto_ptrのresetがなくて
困ったなーって事ぐらいしか経験ないんだけど。
よければ549の具体的な体験談を聞かせてくれ。
>>610
君が有名なボケ夫君だな。
そんなことだkら、日本語はダメなの、とか聞かれるんだよ。
>>549
>それって、STLとか使えないやつ?
「使い物にならない奴?」 おまえ小学生からやり直せ
独自の日本語を突っつかれて逆ギレしてる>>549がいるスレはここですか?
615549:02/05/26 16:03
549って名乗ってないのは俺じゃないんだけど、何か?

>>610
「後出しじゃんけん」だあ?お前、何年生だよ?
こんなの相手にしてたなんて、ほんとガカーリだよ。

>>612
はげどう。

>>ソース希望の連中
俺もウソついてると思われるの嫌だから、問題点の列挙してやるよ。
http://tmp.2ch.net/test/read.cgi/mog2/1022396332/
見そ。
>>615
>549って名乗ってないのは俺じゃないんだけど、何か?
唐突になんだか意味不明な言葉。おそらく、日本語に訳すと「どうも
俺が自作自演をしているらしいと疑われているようだが、俺の書き込みは
ちゃんと全部549と名乗っている。逆にいえば、それ以外は俺ではない」
と解釈すればいいような気がする。はて、誰が自作自演を疑ったの?
どうも俺には549の言葉をちゃんとした日本語に訳しきれない。
誰か、正しい意味を教えて。

>http://tmp.2ch.net/test/read.cgi/mog2/1022396332/
行ってみたけど、よくある「ひっかかったな」系のやつ。
わざわざスレを立てたのか。とんでもない恥知らずだな。
まぁ、あたたかく放置してあげようよ。
618さらし揚げ:02/05/28 00:09
まあ、なまあたたかく、放尿してあげようよ。
糖が出てますよ。
620549:02/05/28 20:31
おう、>>616>>617、ひさしぶぶ。元気か?
見事にひっかかったようだな。
これに懲りて、もう人前でくだらん発言なんかすんなよ。(藁
621デフォルトの名無しさん:02/05/28 20:50
using namespace std;

↑これって、ヘッダには書くなよってのを見かけますけど、
実際皆さん書いてないんですか?
標準で指定されている識別子と同じモノを書くほうが悪い
と決め付けて、僕は思いっきりプリコンパイルヘッダに
書いちゃってますけど、やめたほうがいいですか?
>>621
せっかく分類してくれているのに、
わざわざそれを台無しにする必要無いじゃん。
namespace MyNameSpace {
using namespace std;
}
とかだったら許す。
624デフォルトの名無しさん:02/05/28 21:01
accelerated C++を読んでるんですけど、using宣言の多さに参りそう
なんですけど……。だって、どうせ自作した構造体やらクラスやらに、
vector(に限らず、標準と一致するもの)なんて識別子名を指定する
わけないじゃん、ってな風に思いません?
一致したら、コンパイラが教えてくれるんですし……。
usingしないで、std::vectorでいいじゃないか
626 :02/05/28 21:24
親クラスでstaticなメンバを宣言した場合、
複数ある子クラス全ての共有のメンバとなるのですか?

もしそうだとしたら、
子クラス別個のstaticなメンバを親クラスで宣言する方法は有りますか?
ない
なら子クラスで宣言しろよと(省略)
629デフォルトの名無しさん:02/05/28 22:02
VC++って宣言とかしなくてもWinAPI使えるんですか?
>>629
windows.hで一通り宣言されてる。
631デフォルトの名無しさん:02/05/28 22:11
>>630 なるほど。謎が解けました
StdAfx.hにも#include<windows.h>が入ってますね。
632デフォルトの名無しさん:02/05/29 00:36
vb.netの良書ってある?
>>626
子クラス別個のstaticなメンバが必要な理由がよくわからんが・・・・・・
>>633
宣言の手を抜きたいだけじゃないの?
あとは、間違った共通化
分析を間違ってる、って突き放すのはある意味思考停止だな。

だがそれが必要なケースに出会ったことがない。
template<class Sub>
class Super {};

class Sub : public Super<Sub> {};

とか
皆様、C++Primerを買うか買うまいかすごく迷ってる者ですが、
買うべきでしょうか?
拙者、C++第3版、EffectiveC++、More Effective C++、Exceptional C++
を持っており、必要に応じて参照しています。
C++Primerは書店に行くたび必ず手にとって見るのですが、なぜか毎回
「こんなのいらねーや」と書棚に戻してしまうのです。
どうか、買うための一押しのお言葉を下さい!
Effective STLかModernにしろ
>>638
レスありがとうございます。
拙者は、実はSTL関係は、C++標準ライブラリ、Effective STL、STLによる
コンポーネントデザイン、Generic Programmingを所持しております。
しかし、基本となるC++言語仕様の知識を今ひとつ強化したいと思いまして。
Modern C++もいずれ必要となると思いますが、Lokiが通るコンパイラを
持っていませんでして。
基礎力を強化したいのです。
Lokiなんか使ってる奴はほとんど居ないって
考え方を鍛えるのに良い教本だぞ
>>640
ご指導ありがとうございます。では、次回書店に行った時、Modern C++を
手に取って購入を検討してみます。結論は、C++Primerは不要という事ですね?
あっても損は無いと思うけど、
たぶんあんたには必要ないと思うよ。
勿論、上げた本をキッチリ消化している前提だけど。
> 基本となるC++言語仕様の知識を今ひとつ強化したいと思いまして
なら、あとは http://www.kuzbass.ru/docs/isocpp/ しかないだろ。
常時参照するなら、以下から正規の仕様書を購入してね。
http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
>>643
下の方の正式版の日本語訳ってないの?
英語たいへーん。
(英語読めなきゃPGやめろ、とか言わんでちょ。)
645デフォルトの名無しさん:02/05/30 15:51
ごめん、あげるわ。
>>644
お約束の、英語読めなきゃPGやめろ
サラっと目を通せばNP
NP…NP完全問題?
NP・・・ナイスパンチ?
ニンデンドウパワー?
No Penis、つまり女のこと?
ノックとパンチ。
653デフォルトの名無しさん:02/06/21 10:47
あげちゃう
654デフォルトの名無しさん:02/06/30 11:38
NP…ニンジャパンティラ
655デフォルトの名無しさん:02/07/22 00:43
C++ Primer 改訂3版は誤字、脱字多すぎて読みにくい。
プログラム例もイマイチと思うが。。
NP…ニナ・パープルトン

萌え〜
>>655
いきなりどうした?嫌なことでもあったか?
>>657
>嫌なことでもあったか?
件の書籍が読みにくい代物だったことが「嫌なこと」だろう。
659デフォルトの名無しさん:02/08/26 17:50
あげ!
660デフォルトの名無しさん:02/09/01 23:40
まんげ!
>>648
どうでもいいが、問題がクラス NP に含まれることと、問題が NP 完全であることは
イコールじゃないぞ。

 P != NP のときに、NP に含まれる最も難しい判定問題が NP 完全問題

集合の広さとして、こんな感じ。(P != NP かどうかは、良く分からん)

 NP ⊃ P
 NP ⊃ NP完全問題の集合
 P != NP なら P ∩ NP完全問題の集合 = φ
classの基礎は勉強したが、なかなか応用できない
からもう一度、見直して頑張るぞゴルァ!
663648:02/09/02 20:22
>>661
3ヶ月も経ってから、そんなとこにつっこみ入れんなよ!(笑)
NPって単語から、「NP完全問題」って単語がぴかーんと来たから言っただけ!
66430:02/09/13 00:50
ああ・・・
あれから半年も経ったんだな・・・
665デフォルトの名無しさん:02/09/13 08:12
絶望でつか?
666デフォルトの名無しさん:02/09/21 19:10
勉強すえれば?
>>666
日本語変だよ
C++でリストviewで選択したときサブアイテム込みで選択する方法知ってる人居ましたらご教授願います。
LVS_EX_FULLROWSELECT
670:02/10/01 23:12
 いきなりで申し訳ありませんが、勉強法について質問です。

 今から10年ほど前、大学,大学院のときにdos上のMS-Cで、
RS-232CやGPIB制御のプログラムを組んでいた者です。


 サッカーくじtotoの購入支援ソフトの自作を目的として、10年のブランクを越えて
c++の勉強を始めたのです(現在はBorland c++ 5.11 , 「C言語を初めてみよう」のミニ環境)。
toto のマークシートを自動印刷するには、画像を直接プリンタに送るような
制御が必要で、たしかcではASKIIコードとかしか送れなかったよなー、と思って、
c++を選んでみたのです。

 が、、、
 クラスやら、多態性やら、フレンド関数やら、勉強してもプリンタ制御ができる感じが
いっこうにしない。
 また、知識としてあっても、これらを使って、さくさくプログラミング♪、とまでは
相当時間がかかりそうですし、今日、書店にいっていろいろ立ち読みして見ると、
c++の習得が終わってから、windowsプログラミングを初めて、プリンタ制御に入る
格好になっている。その間には、なんや挫折者を多数発生させている障害がいろいろ。

 ・・・あまりにも、遠い。。。

 コマンドラインコンパイラで、任意の場所に任意の大きさで黒い四角を紙に描くいい方法は
無いのでしょうか?


 それとも、Latexとか入れて、cで *.tex を自動作成した方がいいのだろうか?
 あまり、それは、やりたくない。← 理由はないが...

 ちょっと、かっこ良く、やりたいなと、思っているのですが、
このまま突き進んで行くのが早いのか、もうちょっといい方法があるのか、
教えてください。
671:02/10/02 16:44
 いきなりで申し訳ありませんが、勉強法について質問です。
 今から10年ほど前、大学,大学院のときにdos上のMS-Cで、
 RS-232CやGPIB制御のプログラムを組んでいた者です。
 サッカーくじtotoの購入支援ソフトの自作を目的として、10年のブランクを越えてc++の勉強を始めたのです(現在はBorland c++ 5.11 , 「C言語を初めてみよう」のミニ環境)。
 toto のマークシートを自動印刷するには、画像を直接プリンタに送るような制御が必要で、たしかcではASKIIコードとかしか送れなかったよなー、と思って、 c++を選んでみたのです。
 が、、、
 クラスやら、多態性やら、フレンド関数やら、勉強してもプリンタ制御ができる感じがいっこうにしない。
 また、知識としてあっても、これらを使って、さくさくプログラミング♪、とまでは相当時間がかかりそう。
 昨日、書店にいっていろいろ立ち読みして見ると、c++の習得が終わってから、windowsプログラミングを初めて、プリンタ制御に入る格好になっている。その間には、なんや挫折者を多数発生させている障害がいろいろ。

 ・・・あまりにも、遠い。。。
 コマンドラインコンパイラで作るプログラムで、任意の場所に任意の大きさで黒い四角を紙に描くいい方法は無いのでしょうか?

 それとも、Latexとか入れて、cで *.tex を自動作成した方がいいのだろうか? あまり、それは、やりたくない。← 理由はないが...

 ちょっと、かっこ良く、やりたいなと、思っているのです。
 このまま突き進んで行くのが早いのか、もうちょっといい方法があるのか、教えてください。
>たしかcではASKIIコードとかしか送れなかったよなー、と思って、
> c++を選んでみたのです。

ここが大きな間違い。 猫を読んで、
C -> SDK
と進むのが正解。
>>671
そんな君に、HSP + プリンタI/O制御モジュール!
2
VBって知ってる?
2日前からC言語の勉強を始めました。
初めてのプログラムなので戸惑うことばかりですが、今日このスレを覗いてみて
他にも頑張ってる人が居るのを見て自分も改めて努力しようと思いました。

勉強するにあたって、何か目標が欲しかったので過去に>>1氏に出された課題を
私もやってみようと思います。
Accelerated C 買ってきた。今日からC のお勉強。
がんがれよ
皆C言語勉強して1ヶ月でどのぐらいまでできるようになってたの?

周りが優秀な奴ばかりでかなり今焦ってるんだけど、、、
やっぱファイルの入出力とかソートとかできるようになってた?
ちなみに、、初めて触ったプログラム言語がCです。
今までプログラミングとはまったく縁が無かったんで、、、
C++へ。
++C
683デフォルトの名無しさん:02/11/03 06:25
http://www.asahi-net.or.jp/~yf8k-kbys/cpp0.html
初心者にはすごいわかりやすいよ。
俺もここの>>1を見て今日から始めます。
ここすっごくお気に入り
やさしいCを読んで勉強中。
二日前からだけどただいまレッスン5
九九の段だけなら2重ループだけで(省略)
母「おい、おまいら!!夕食ができますた。リビングに集合しる!」
父「詳細キボーヌ」
母「今日はカレーですが、何か?」
兄「カレーキターーーーーーーーー」
妹「キターーーーーーーーーー」
姉「カレーごときで騒ぐ奴は逝ってヨシ」
母「オマエモナー」
父 --------終了-------
兄 --------再開-------
妹「再開すなDQNが!それより肉うpキボンヌ」
母「ジャガイモうp」
姉「↑誤爆?」
兄「タマネギage」
父「ほらよ肉>家族」
妹「神降臨!!」
兄「タマネギage」
母「糞タマネギageんな!sageろ」
兄「タマネギage」
姉「タマネギ厨uzeeeeeeeeeeee!!」
母「sageっていれればさがると思ってるヤシはDQN」
セールスマン「イタイ家族がいるのはこの家ですか?」
母「氏ね」
父「むしろゐ`」
兄「タマネギage」
妹「兄 、 必 死 だ な ( 藁 」
サラっと目を通せばNP
688デフォルトの名無しさん:02/11/30 04:50
C++単体にグラフィックを描く機能が備わってると勘違いしてる人が多いよね。とくにVBから
ほほほう
690デフォルトの名無しさん:02/11/30 06:03
恥ずかしながらグラフィックを描く機能が備わってると勘違いしてましたよ。まさにVBの感覚で。
後にC++に苦戦して線を一本描けた時の感動たるや。(遠い目)
691デフォルトの名無しさん:02/11/30 06:09
WindowsのGUIプログラミングは本読むよりC言語が身につく。
>>161
はあ?\nはいつでも正しい復帰改行だろ。
693692:02/11/30 08:35
間違えた。\nはいつでも正しい改行だろ。
つっかすげー遅レスだな
694デフォルトの名無しさん:02/11/30 11:49
趣味でゲーム作成のためにC++覚えるのは、相当無謀。
絶対やめとけ、必ず挫折する。

素 直 に H S P で も し て ろ ( 藁
無謀というよりか意味が無いって言った方が良いな。
あ、でも
どらくえとかのゲームイベント取得なんかでは局所的につかえるかも?
697デフォルトの名無しさん:02/11/30 13:59
今日はまた電波が多いですね:-)
そうッスね
>>696
意味不明
700げとー
苦労するのが嫌ならDelphiにしとけ
線を引くどころか初日にメモ帖やペイント作るとこまでいけるぞ