1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ] 入門者向けの俺に聞けスレです。 なんでもきいてよね
762 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:31:49 ] >>757 3.4E-38 は 3.4 * 10の-38乗 だ。 有効桁数は扱える桁数。7桁なら 1.234567 とか 1.234567E+100 とか、 とにかく 7 桁は扱えるが 1.2345678 と書いても最後の 8 が扱えない。 >>759 どう出力されるかということと内部的に何桁保持されているかという ことは別の話。
763 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:35:45 ] >>760 いやそうなるのはわかるけど、 float型が3.4E-38〜3.4E+38で有効桁7桁ってどういう意味? float f = 1.0/3 printf("%f") だと 0.333333 で7桁まで出力されるって意味? 3.4E-38〜3.4E+38ってどういうこと? 出そうと思えば50桁以上出せるけど…
764 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:15 ] >>761 必要な変数は構造体のメンバにして その構造体へのポインタを受け渡しする。
765 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:28 ] >>762 どうも じゃあfloat型が3.4E-38〜3.4E+38っていうのは?
766 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:50:21 ] 普通に3.4*10^-38〜3.4*10^38でしょ? 3.400000*10^38のほうが正しいかな?
767 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:15 ] >>764 ありがとうございます、さっそくチャレンジしてみます
768 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:27 ] >>766 はあ・・・ でも10の50乗でも100乗でも入力できるし出力も出来るよ?
769 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:56:39 ] なんかよくわかんないけど、まあこれでも読んでよ。 「浮動小数点型と誤差」 ttp://www.kyoto-su.ac.jp/~yamada/programming/float.html
770 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:04:31 ] >>769 ああ…それよんだんだけど 1.175494 10-38 < float の絶対値 < 3.402823 10+38 って書いてあるよね。 私の本は 3.4E-38〜3.4E+38 って書いてあるよ。 それで、例えば、 float f=1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; printf("%40.40f",f); って書いても 1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; って表示されるよ。38超えてるよ?
771 名前:770 mailto:sage [2006/07/12(水) 16:07:09 ] あ、ちょっとコピペミスしたけど、気にしないで
772 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:00 ] >>770 コンパイラ何使ってるの?
773 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:58 ] floatよりdoubleの方が速いってよ
774 名前:770 mailto:sage [2006/07/12(水) 16:12:42 ] >>772 cygwinのgccだけど・・・
775 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:16:17 ] >>774 >>770 のソースを「全部」コピペしてみて。動かしてみるから。
776 名前:770 mailto:sage [2006/07/12(水) 16:20:30 ] >>775 え・・・でも770そのまんまだよ? #include <stdio.h> main(){ float f=1000000000000000000000000000000000000000.0000000000000000000000000000000000000001; printf("%40.40f\n",f); } 終わり。
777 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:22:13 ] >>776 うちでは"Inf"って表示されるけど・・・ gccのバージョンはいくつ?
778 名前:770 mailto:sage [2006/07/12(水) 16:24:22 ] gcc version 3.4.4 (cygming special) です。
779 名前:770 mailto:sage [2006/07/12(水) 16:26:21 ] コンパイラの問題なの?
780 名前:777 mailto:sage [2006/07/12(水) 16:30:09 ] >>778 おかしいな・・・。うちとまったく一緒のコンパイラなのに。 ちなみに printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってやってみて。 8って表示されるはずだから。これはその数値がdouble型のリテラルだって コンパイラが判断してることを示してる。それをfloat型に代入するときに 暗黙の型変換が行われるはずなんだけど・・・。 ってことで、俺はお手上げ。
781 名前:777 mailto:sage [2006/07/12(水) 16:30:42 ] あ、ちなみに"Inf"ってのはInfinityね。正の無限大。
782 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:34:30 ] >>770 そのソースでそのgccだと、警告が表示されると思うのだがそれをコピペして見給え。
783 名前:770 mailto:sage [2006/07/12(水) 16:38:20 ] >>777 printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってしたら core dump しました。 うちの環境がおかしい?WinXP Cygwin最新のものだけど… 入れなおすか…? どうもありがとうございました。うちがおかしいってことが分かったのでうれしいです。
784 名前:777 mailto:sage [2006/07/12(水) 16:39:20 ] >>782 -Wallでも出ない。
785 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:39:53 ] 釣りか? 壮大な釣りだったのか?
786 名前:770 mailto:sage [2006/07/12(水) 16:41:12 ] >>783 あ、いや、間違ってた printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); でちゃんと8って表示されました。 >>782 警告も何にも出ませんよ。普通にa.exeすると結果表示されます。
787 名前:777 mailto:sage [2006/07/12(水) 16:42:35 ] >>786 んじゃ、最後にuname -aした結果をコピペしてくれ。
788 名前:782 mailto:sage [2006/07/12(水) 16:46:07 ] >>770 >>777 警告出ないか? main()の戻り値の型がないと。漏れの端末だとこうなるのだが。 -- $ gcc --version ; gcc foo.c gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. foo.c:3: warning: return type defaults to `int' foo.c: In function `main': foo.c:6: warning: control reaches end of non-void function
789 名前:770 mailto:sage [2006/07/12(水) 16:47:14 ] う〜Cygwinコピペできないからつらい uname -a は CYGWIN_NT-5.1 ****** 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin です。名前は伏せ。珍しくもないけど
790 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:48:04 ] >警告も何にも出ませんよ。普通にa.exeすると結果表示されます。 make使ってて更新されたと認識されていないとか、違うところのa.exeが起動されているとか。 make使わず直接gccを動かしてみるとか、明示的にパスを指定してみるとかしてみたら?
791 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:49:54 ] 普通にcygwinをインストールすると所謂dos窓で動くから、 マウスで範囲選択して右クリックでコピペされると思うけどなぁ。
792 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:50:08 ] sizeof(float) が 8 だったりしたら…
793 名前:777 mailto:sage [2006/07/12(水) 16:51:56 ] >>788 あ、すまん、そこは警告出る。警告でないといったのは、4,5行目に関して。 手間かけさせてスマンかった。
794 名前:777 mailto:sage [2006/07/12(水) 16:53:26 ] >>789 うちより一つ新しいバージョンだな。ちなみにうちは、 CYGWIN_NT-5.1 MARS 1.5.18(0.132/4/2) 2005-07-02 20:30 i686 unknown unknown Cygwin 最新の1.5.20も怪しいところがあるみたいだから、しばらく更新はしないでおこうw
795 名前:770 mailto:sage [2006/07/12(水) 16:53:38 ] >>782 あ、範囲指定できたんだCygwinて・・・ gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. しかでません。makeつかってません。フォルダの中にa.exeもソースも一個しかありません。
796 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:56:04 ] 実行するときに ./a または ./a.exe でやってる?
797 名前:770 mailto:sage [2006/07/12(水) 16:56:57 ] >>796 やってますよ〜 そこまでバカではない・・・w
798 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:58:25 ] じゃあ sizeof(float) はいくつ? printf("%d\n", sizeof(float)); で出してみて。
799 名前:770 mailto:sage [2006/07/12(水) 17:01:15 ] 8ですた。
800 名前:782 mailto:sage [2006/07/12(水) 17:03:02 ] 漏れの方は同じだな。Win2Kだけど。 CYGWIN_NT-5.0 whee 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin コンパイラよりも疑うべきはライブラリか?
801 名前:782 mailto:sage [2006/07/12(水) 17:04:57 ] >>799 それが原因か…… #じゃぁなんでfloatが8バイト? 64ビットLinuxでも4バイトなのに……
802 名前:770 mailto:sage [2006/07/12(水) 17:09:16 ] >>801 やっぱおかしいんすね。環境作り直します。 Cygwin入れなおします。ちゃんと正規のルートで(学校の先輩からもらわずに)。 どうも失礼しました。
803 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:13:31 ] いやまぁ先輩から貰っても全然OKなんだが、オチを知りたいんだよなぁオチを・・・
804 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:14:13 ] はっ、その先輩がスーパーハカーだったというオチ!?
805 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:27:50 ] 自分でコンパイルしたのかな? >>804 gcc を自分でコンパイルできるとスーパーハカーなの? じゃあ俺も10年ぐらい前からスーパーハカーだったんだね。
806 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:38:59 ] 猫でもわかるC言語プログラミングって本を読んで勉強はじめたんだけ この本の説明めちゃくちゃ解り辛い・・・ まぁ単に俺が知識0ってこともあるんだろうけど、どの入門書籍もこんなもん?
807 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:12:46 BE:224654459-#] 猫でもわかるの書籍版は読んだことないけど、プログラムそのものが まったく初めてなら、入門書一冊読んだだけじゃなかなか難しいと思う。
808 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:29 ] どの本でも同じだけど、HelloWorldが動いているのを見て喜べるピュアな心の持ち主なら どんな本読んでも上達出来ます。
809 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:50 ] 猫以下なんじゃね?
810 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:31:58 ] プログラムそのものが難しいって言うより、説明が言葉不足だったり 説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 みたいなところが多くて・・・ Cからはじめるのがそもそも間違いなんだろうか
811 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 17:53:08 ] >>810 まずはAから段階を踏まないと
812 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:32:39 ] >説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 そういうのに一々疑問を持ってストレスを貯めるやつはプログラム書けないよ すべてそういうもんなんだと素直に覚えないと。 そもそもプログラミングの入門書って根幹に触れないからみんな説明不足といわれれば説明不足になる罠
813 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:44:26 ] 英語だって、なんでアルファベットなんだろうとか思い始めたらダメだよ。 挨拶はハローとか決まりきった定型パターンがあるからそう言うのは理屈無しに覚えるしか無い。 日本語でも、10年以上話して使っていて未だに表現方法とかの新発見がある様に、覚えたてでその言語の全てを理解するのは無理。 とりあえず義務教育の英語の教科書の様に、入門書を最後まで一通りやってみて、分からない所は他の書籍や先輩に訊くとかセミナーや研修にでも出るとかで補完していかないと。 自分でそう言う学習法が出来ない香具師は、金出してスクールに通ったほうがいいよ。
814 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:49:56 ] 心配しなくてもあとで「そういうことだったのか!」って気づくことになるから安心してその本をまずは読破すれ。
815 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 19:04:24 ] 理系が文章力カスなのはわかりきったことだろ
816 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 22:45:20 ] とりあえずは鵜呑み丸暗記にしておいて 必要が出てきたり気になったら自分で調べたりこういう場所とかで聞けばいいよ 入門書の中には一部間違ったことが書いてあるものもあるから 完全に鵜呑みってのもちょっとまずいことはまずいんだけどね まあ気にするな
817 名前:デフォルトの名無しさん [2006/07/14(金) 01:46:26 ] C++で7桁×7桁の計算プログラム組んでるんですが float使ったら小数点以降が表示されてあまり美しくない。 小数点以降を表示しない方法、教えてください。
818 名前:デフォルトの名無しさん [2006/07/14(金) 01:52:24 ] main() { Card deck[40]; int *face[] = {1,2,3,4,5,6,7,8,9,10}; char *suit[] = {"hart","daiya","kurab","superd"}; srand(time(NULL)); fillDeck(deck, face, suit); shuffle(deck); printf("baeojunnbisimasu"); return 0; } プログラミングの一部なんですが コンパイルが通りません int faceのところがだめらしいのですが何処が悪いんでしょうか? どなたか解る方おしえてください
819 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:54:23 ] >>817 整数型にcastして表示しろ
820 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:55:12 ] >>818 int *faceではなく、int face
821 名前:デフォルトの名無しさん [2006/07/14(金) 02:02:38 ] ごめん、castって何? #include <stdio.h> int main(void) { float alfa, beta, ganm; printf("7桁の整数を入力して下さい(1回目):"); scanf("%f",&alfa); printf("7桁の整数を入力して下さい(2回目):"); scanf("%f",&beta); printf("\n%f * %f = %f\n", alfa, beta, alfa * beta); }
822 名前:デフォルトの名無しさん [2006/07/14(金) 02:11:56 ] >>820 さん マジでありがとう^^ 通りました
823 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 03:31:14 ] %fではなく%gを使う習慣をつけよう。 #って話か?
824 名前:デフォルトの名無しさん [2006/07/14(金) 08:34:11 ] #include<stdio.h> int main(void) { int n,temp,m=0; FILE*fp1=fopen("2バイト文字.txt","r"); FILE*fp2=fopen("改行テスト.txt","w"); while((n=fgetc(fp1))!=EOF){ if(n=='\n'){ m=0; } else if(m==40){ fputc('\n',fp2);/*ここが上手くいかない模様*/ m=0; } fputc(n,fp2); m++; } fclose(fp1); fclose(fp2); printf("end\n"); return 0; }
825 名前:824 [2006/07/14(金) 08:37:11 ] 2バイト文字、日本語のテキストを行の文字数20で改行するようなプログラムを作りたいです。 例えば、行の文字数40のやつを、原稿用紙の形式に変換したい。 しかし、>>824 のやつだと、改行後の一文字目が変になってしまいます。 文字コードの問題なのかどうかすら分かりません。 ここが変だ、という場所の指摘をお願いします。
826 名前:824 [2006/07/14(金) 08:44:11 ] 失礼。 tempとprintf("end\n")は気にしないで……。
827 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:15:49 ] 超基本問題です。 main(){ int i; float f; double d; long l; char st[80]; printf("文字1文字,%%c,int,%&i="); scanf("%c",&i); printf("%%c,int,i=%c\n",i); printf("文字列,%%s,char,st="); scanf("%s",st); printf("%%s,char,st=%s\n",st); printf("文字列入力の時には&は不要\n"); printf("8進数%%o,int,%&i="); scanf("%o",&i); printf("%%o,int,i=%o\n",i); printf("%%d,int,i=%d\n",i); printf("10進数%%d,int,%&i="); scanf("%d",&i); printf("%%d,int,i=%d\n",i);
828 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:17:35 ] printf("16進数%%x,int,%&i="); scanf("%x",&i); printf("%%x,int,i=%x\n",i); printf("%%d,int,i=%d\n",i); printf("long型%%ld,long,%&l="); scanf("%ld",&l); printf("%%ld,long,l=%ld\n",l); printf("%%d,int,l=%d\n",l); printf("実数float型%%f,float,%&f="); scanf("%f",&f); printf("%%f,float,f=%f\n",f); printf("%%d,int,f=%d\n",f); printf("実数double型%%lf,double,%&d="); scanf("%lf",&d); printf("%%lf,double,d=%lf\n",d); printf("%%d,int,d=%d\n",d); } これやると、例えば 8進数%o,int,&i=70 とか入れると、iに7しか入ってくれなくて、0が次の10進数の処理に自動的に入っちゃうんだけど、なぜ?
829 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:01:09 ] 親から習う日本語が方言訛りで一部怪しかったりしても、使ってるうちに標準語の表現に気づいて修正できるものだよ。 もちろん最初から標準語で覚えられるような環境を探すのも手。 gcc方言とか、IA方言とか、VC方言とかウィンドウズ方言とかいくらでも環境依存の癖はある。
830 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:39:34 ] >>829 その直前の文字列の入力をコメントにしたらどうなる?
831 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 13:17:59 ] すいませんこのプログラムのどこがわるいかおしえてもらえないでしょうか うるう年の判定プログラムで #include<stdio.h> int main(void){ int n; n=1; printf("年数を入力してください"); scanf("%d",&n); if(n%400=0)printf("うるう年である"); else if(n%4=0&&n%100!=0)printf("うるう年である"); else printf("うるう年ではない"); return(0);} 左辺の値がないとかエラーがでるんですけど
832 名前:デフォルトの名無しさん [2006/07/14(金) 13:30:41 ] 初心者乙
833 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 13:44:21 ] >>831 ==だよ。 >>830 今度は、 8進数%o,int,&i=179 と3桁にすると、iに17が入って、9が次の10進数の処理に自動的に入ります。 なぜ?
834 名前:824 mailto:824をたのむ…… [2006/07/14(金) 17:19:31 ] >>833 scanf("%c",&i);の時、1000とか入力すると、%cの分の1をscanf("%c",&i);で取り込み、残りの000は次のscanf("%s",st); に勝手に入力されてしまう。 8進数だから、7、8、9なんかは入力できない。 すると179は17まで8進数と見なされ、残りの9は型が違うものと認識される。 17dとか入力しても同様。 型が違うものと認識されたものは、次のscanfに勝手に入力されてしまう。 標準入力ストリームがバッファリングの構造を取るから。 型が違うもの、と認識されたものは、一度バッファに戻ってから、次のscanfに入力されてしまう。 環境によっては、scanf("%d",i);のところで、a、とか入力すると、 型が違うものだからバッファに戻す→バッファからaがscanfに入力される というルーチンを延々と繰り返してしまう。 この繰り返しが起こらない環境ならば、型が違うものでも強制的な変換が行われ、scanfに取り込まれるということ。
835 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 18:40:08 ] >>834 どうもありがとう なるほどね・・・
836 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 21:29:18 ] >>824 while((n=fgetc(fp1))!=EOF){ fputc(n,fp2); m++; if(n=='\n'){ m=0; } else if(m==40){ fputc('\n',fp2); m=0; } } 入力ファイルがすべて 1文字==2バイトと決まっているならこれで良いけど wchar_tを使うか、文字コードの判定をするかしたほうが良いかも。
837 名前:824 mailto:sage [2006/07/14(金) 21:55:49 ] >>836 なるほど。
838 名前:デフォルトの名無しさん [2006/07/15(土) 08:47:40 ] パチンコのシミュレーターを作ろうと思ってるんですが、 確変をひいた場合にループをさせる時どのようにすればいいのでしょうか? for(;;){ switch(GetRandom(1,2)){ case 1:b++; case 2:break; } } 乱数で1だったらループ2だったらfor文を抜けたいとおもうのですが、 これだと止まってしまいます。何故でしょうか。
839 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 09:19:20 ] >>838 直接の原因は、break は一つ外側の構文に対してしか作用しないこと。 switch 内で break しても、その switch の外側に抜けるだけ。 それで結局、for を抜け出せなくて無限ループになっている。 ネストされた構文から任意の場所に制御を渡したい場合は goto を使うか、 関数を書いてそれを呼ぶしかない。 あと、その case の書き方はやめておけ。 switch はフォールスルーと言って、break を書いておかないとその後の case にある処理に突入してしまう。 for(;;){ switch(GetRandom(1,2)){ case 1: b++; break; case 2: goto end_for; } } end_for: ;
840 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 09:27:03 ] >>838 なんか初めの方の文章がよくわからねいけど そのbreakでは、switch文しか抜けられない。 for文を抜けたければ、goto文とかflagをつかえばいい。 ◆goto文の場合 for(;;){ switch(GetRandom(1,2)){ case 1:b++; case 2:goto FOR_EXIT; } } FOR_EXIT:; ◆flag int flag = 1 ; for(;flag;){ switch(GetRandom(1,2)){ case 1:b++; case 2:flag=0; break; } }
841 名前:840 mailto:sage [2006/07/15(土) 09:28:39 ] かぶった。しかも劣化している。。。839のいうとおりだ。
842 名前:デフォルトの名無しさん [2006/07/15(土) 09:33:50 ] >>839 ,840 ありがとうございます。 gotoが便利そうなんでそっちを使いたいとおもいます。 これでやっと先に進めそうです。 ありがとうございました。
843 名前:デフォルトの名無しさん [2006/07/15(土) 09:39:09 ] 1と2しか判定しないなら素直に for(;;){ if(GetRandom(1,2)==2) break b++; } も頭の隅っこに置いとくといいかも
844 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:24:29 ] 質問です〜 char st[10]="text"; char *p; p=st; すると、st[10]の先頭アドレスがpに入るって書いてあるんですけど、 printf("%p,%p",p,&p); pの値と&pの値が違うのはどうしてですか?
845 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:32:48 ] いくらpにstを代入しても、あくまでpはpという1つの変数だから。
846 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:44:26 ] あーなるほど。どうも〜
847 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 17:31:59 ] pと&pの違いは重要 と言ってみる
848 名前:デフォルトの名無しさん [2006/07/15(土) 22:31:54 ] 念のため聞いておきたいんですが、参考書を見るとコマンドプロンプトで表示させるだけっぽいですけど ちゃんと画像のついたソフトやゲームなんかも作れるんですよね?
849 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 23:51:47 ] >>848 できるけど、標準Cと言われるものの範囲では、画像を表示するなどと言ったことができず、 また、コマンドプロンプトで文字を入出力するのとは、桁違いに面倒だから、入門レベルでは扱わないというだけ。
850 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:37:48 ] 質問させてください。 自分はVB8アカデミック(=SE)を使っているのですが。 #include <stdio.h> int main(void){ printf("HELLO"); return 0; } のようなDOS窓で動作するようなコードは正常にコンパイルできるのですが、 #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox(NULL, "Kitty on your lap","メッセージです。", MB_OK); return 0; }のようなウィンドウズアプリケーションをコンパイルしようとすると必ずエラーがでてしまいます。 ↑のコードは今思い出しながら書いたものなのでもしかすると間違っている箇所もあるかも しれませんが書籍を参考に10個ほどサンプルを丸写ししてコンパイルしても同じ結果だったので コードに問題はないと思います。 VB8を再インストールしてみたりもしたのですがまったく効果がなく、もしかして インストール後になにか他にもインストールしたり環境設定したりと別の作業が必要なのかとも思ったのですが・・・・ どなたか原因がわかる方がいらっしゃいましたら助言いただけないでしょうか。 BBSもプログラミングも初心者なもので失礼もあるかとは思いますがよろしくお願いします。長文ですみません^^;
851 名前:デフォルトの名無しさん [2006/07/16(日) 03:41:08 ] if(){}って()内が1なら{}が実行されるんですか? それとも0以外なら実行されるんですか?
852 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:50:05 ] 真なら実行され偽なら実行されない
853 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:50:16 ] >>850 書店に行って、自分に合う入門書を買ってくること。
854 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:51:47 ] >>851 ()内に=や<>なんかがない場合は ()の中に入る数字(変数でもいい)が0以外なら真と見なしループを続ける(=実行) 0以外なら偽と見なしループを抜け出します。
855 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:56:20 ] >>854 ありがとうございました >>853 入門書読んでるんですけど、そこがかいてなかったのです
856 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:59:06 ] ここは回答者の入門スレなのか? 堂々と間違った回答をされても困るんだが。
857 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 04:09:32 ] >>851 さんごめんなさい。。。 while文とごっちゃになってましたOrz 真ならループではなくただ実行されるだけでした 偽ならスルーします。 >>856 さんこれであってますでしょうか?
858 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:15:37 ] 1と2しか判定しないなら素直に for(; GetRandom(1, 2) != 2; b++) ;
859 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:49:25 ] そして結局 while(GetRandom(1, 2)!=2)b++;
860 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:58:25 ] >854 >0以外なら偽と見なし(略)
861 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 09:00:28 ] >>850 エラーメッセージを書け。 あと、CのコンパイルにVBは関係ないだろ。
862 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:04:57 ] あの〜 2進数表記する型ってないんですかね。 ライブラリさがしてるんですけど・・・