- 1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 19 pc11.2ch.net/test/read.cgi/tech/1190342593/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
- 533 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:09:27 ]
- >scanf("%s", &op);
文字列を入力したいんなら、char じゃだめだろ char には 1 文字しか入らない char の配列にしないと
- 534 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:11:49 ]
- >>532
突っ込みどころだらけ。 >#include "stdio.h" cの規格にあるインクルードファイルは""で括ってはいけません。 また、一般的にプロジェクトローカルなもの以外は<>で括るべきです。 >ちなみに変数opをint型に変えると期待通りに出力されます(intのscanfだと数値以外の文字も0と認識してしまうので使えない)が、 %d指定で整数値を入力する場合、入力に失敗した場合は変数が更新されないので、「0と認識してしまう」というのは間違い。 >scanf("%s", &op); 文字型への%s指定は行なってはいけません。%sはあくまでも、文字列入力です。 この呼び出しで恐らくスタック領域の破壊が起こり、他の変数の値がおかしくなったせいでキュー登録に失敗した可能性があります。
- 535 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:12:45 ]
- >>532
cにはSTLなどありません。スレタイも読めないくらい頭が回らないのであれば、無理に回答しなくて宜しいかと。
- 536 名前:デフォルトの名無しさん [2007/10/29(月) 15:26:38 ]
- >>533
opはオペレーションNoの取得なので、1文字です。 指定文字列の取得はchar str[100]に入れています。 >scanf("%s", str); >>535 1文字入力の%cで >scanf("%c", &op); と変えてみました。 キューには格納されているようですが、変な出力結果になってしまいます。 実行結果 Operation(0:enqueue 2:quit)0 input string : ab String Queue : [ab] head[0] tail[1] Operation(0:enqueue 2:quit)invalid ope number! head[0] tail[1] Operation(0:enqueue 2:quit)0 input string : bc String Queue : [ab] [bc] head[0] tail[2] Operation(0:enqueue 2:quit)invalid ope number! head[0] tail[2] Operation(0:enqueue 2:quit)
- 537 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:30:17 ]
- >>536
"%c"を" %c"にして味噌。
- 538 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:32:33 ]
- >>537
できました! ありがとうございます。 %cのスキャンにはスペースが必要なんですね。 実行結果 Operation(0:enqueue 2:quit)0 input string : ab String Queue : [ab] head[0] tail[1] Operation(0:enqueue 2:quit)0 input string : bc String Queue : [ab] [bc] head[0] tail[2] Operation(0:enqueue 2:quit)
- 539 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:35:11 ]
- >>524
ファイルのデータをすべてmallocで確保したヒープ領域に読み込む。 1.fstat関数でファイルサイズを取得する。 2.そのファイルサイズ分をmallocし、そこにファイルの全レコードを読み込む。 レコードサイズ64バイトで10万レコードだと、6.4Mバイトほど。 3.検索はmallocで確保したバッファの中を検索する。
- 540 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:36:30 ]
- >>538
いや、今回はたまたまその前の%sの喰い残しの改行文字を破棄する必要があるので、空白を入れることで回避したと言うだけ。 毎回空白が必要だと言うわけではない。 scanf()の振る舞いについて、下手な入門書に頼らずきちんと確認しておくことをお勧めしておきます。 因みに、printf()とscanf()の指定子を互換性があるかのごとく並列で解説しているような入門書が多く出回っていますが、 互換性はないものと思って理解しておく方が間違いがありません。
- 541 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:42:20 ]
- >>540
scanfについて調べたら、改行の読み捨てが必要な場合があるみたいですね。 勉強になりました、ありがとうございます。
- 542 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 18:05:25 ]
- 2ちゃんのトリップ生成法なんですがC言語板をしりたいです
$tripkey = "#istrip"; $tripkey = substr($tripkey,1,); $salt = substr($tripkey.'H.',1,2); $salt =~ s/[^\.-z]/\./go; $salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/; $trip = crypt($tripkey,$salt); $trip = substr($trip,-10); $trip = '◆'.$trip; print "$trip";
- 543 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:59:39 ]
- 丸投げはスレ違い
- 544 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 20:36:42 ]
- printf系の関数使わないで、浮動小数点数を文字列に変換するにはどうしたらいいでしょうか?
- 545 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 20:47:48 ]
- インクルードひとつも使わないやつ書いてやるぜ
- 546 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 20:51:06 ]
- 面倒になったので一部日本語で説明する
double x;; char top[100] down[100],t,d; 小数点の一から始めて、下向きに数字を読み取ってdownにいれて 一より大きいなら上向きにtopに入れていく 最後に出力
- 547 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 21:53:10 ]
- >>544 行数の関係上汚いコードで申し訳ない。
単なる思いつきで書いたから、特に色々とは突っ込まないで欲しい。 あと、こっちの環境ではまともに動いてくれない。 小数点の精度上、 下位ビットにゴミがあってそれを取り込んでしまう。 まぁ、その辺はなんとかしてくれい。 void DoubleToStr(double f) { char up[256], down[256],temp; int d = f, i = 0, j = 0; double z = f; do { up[i++] = d % 10 + '0'; d = d / 10; } while (d != 0); up[i++] = '.'; up[i] = '\0'; i-=2; while (j < i) { temp = up[j]; up[j] = up[i]; up[i] = temp; ++j; --i; } z = f; d = f; z = z - d; i = 0; do { z = z * 10; d = z; down[i++] = d + '0'; z = z - (double)d; } while (z != 0.0); down[i] = '\0'; strcat(up, down); printf("%s\n", up); }
- 548 名前:プリンがー mailto:aaa [2007/10/29(月) 22:16:02 ]
- 100個の実数データを配列a[100]に読んで、その最大値をmaxという
変数に求め、結果を出力するプログラムを書きなさい。 #include <stdio.h> int main (void) { int i; double a[100],max=0; for(i=0;i<=100;i++){ scanf("%lf",&x[i]); if(x[i]>max){ max=x[i]; } } printf("最大値は%fです。",max); return(0) ; } これであってますか?
- 549 名前:aho mailto:sage [2007/10/29(月) 22:17:53 ]
- >>548
あってるよ〜
- 550 名前:プリンがー mailto:aaa [2007/10/29(月) 22:22:29 ]
- >>549
ありがとうございます。
- 551 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:22:40 ]
- あってねぇーよ
double a[100]で100個用意したのはいいが for(i=0;i<=100;i++){ の行で101個目にアクセスしてるだろ。 for(i=0;i<100;i++){ が正解
- 552 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:24:32 ]
- 実験データは正数だけかな?
配列に入れる必要性がわからんけど後でプログラムを拡張するのかな
- 553 名前:aho mailto:sage [2007/10/29(月) 22:25:39 ]
- >>550
ばれたか。 やるな、おぬし!
- 554 名前:プリンがー mailto:aaa [2007/10/29(月) 23:00:39 ]
- 1から1000までの数値の中で、2または3の倍数でかつ4の倍数でないものを
出力するプログラムを書きなさい。 #include <stdio.h> int main (void) { int i; for(i=1;i<=1000;i++){ if(i%2=0||i%3=0){ if(i%4!=0){ putchar('\n'); } } } return(0); } これであってますか?
- 555 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:02:21 ]
- memcpy(input,output,size<<1);
//array copy for(i=0; i < (size<<1); i++) output[i] = input[i]; すみません、この二つの違いを教えてください。 初めに下のほうで計算していたら望む結果が出てこなくて 上のとおりやったら出来ました… 同じことをやっていると思ったのですが、どう違うのでしょうか
- 556 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:03:12 ]
- if ((i % 2 == 0 || i % 3 == 0) && (i % 4 != 0))
- 557 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:04:33 ]
- >>554
回したら、ものすごい数の改行が出た。
- 558 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:07:51 ]
- >>555
outputとinputの型によって差がでるんじゃないかな
- 559 名前:プリンがー mailto:aaa [2007/10/29(月) 23:08:15 ]
- >>554
訂正 #include <stdio.h> int main (void) { int i; for(i=1;i<=1000;i++){ if((i%2==0||i%3==0)&&(i%4!=0)){ putchar('\n') } } return(0); } これでいいでしょうか??
- 560 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:09:29 ]
- ×putchar('\n');
○printf("%d ", i);
- 561 名前:プリンがー mailto:aaa [2007/10/29(月) 23:12:32 ]
- >>560
ありがとうございます。
- 562 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:13:39 ]
- あってませんよ
- 563 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:15:45 ]
- >>558
どちらもint型のポインタ(1次元配列)なのですが。 単に求めた結果が出ればいいだけなら、これでいいのですが 初めのソースが合ってると信じて、違う原因がわからないのは自分でも納得がいかないので
- 564 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:15:54 ]
- テキストファイルに aあ と書いてそれを16進形式でテキストファイルに出力すると、
61 82 A0 0D 0A となりました。 ここからこの数を使って aあ と新たなファイルに表示させたいのですが、 a は出力できるのですが あ のやり方がわかりません。 どうしたら日本語の あ が出力できるんでしょうか。 ちなみにaは char temp[50] char moji[]="61"; strcpy(temp,"0x"); strcpy(temp,moji) long int aa=strtol(temp,NULL,16); fprintf(file,"%c",aa); 見たいな感じで出力しました。
- 565 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:22:43 ]
- >>564
char tmp[10]; tmp[0] = (char)strtol("82", NULL, 16); tmp[1] = (char)strtol("A0", NULL, 16); tmp[2] = '\0'; printf("%s", tmp);
- 566 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:23:54 ]
- >>555>>563
その二つはinputとoutputがchar型配列でない限り、違う結果になる >memcpy(input,output,size<<1); ここの第三引数は、バイト単位でのサイズを指定する >for(i=0; i < (size<<1); i++) >output[i] = input[i]; こっちで指定するのは、配列の要素数
- 567 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:25:46 ]
- >>564
printf("%c%c%c",0x61,0x82,0xA0);
- 568 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:26:00 ]
- >>563
memcpyのsize<<1はバイトで for文のsize<<1はint型(4バイト?)分になるんじゃないかな? 試してないから間違ってるかもしれないけど
- 569 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:31:11 ]
- >>566 >>568
なるほど。。。と違いはわかったのですが memcpyだとinputからoutputに何がコピーされているのか混乱してきました。 sizeはint型でinput分の要素数を表しています。 0 1 2 3 4 5 6 7 の要素が入っていて それを計算したものをoutputに出力させているのです for文の方をmemcpyと同じように働かせるにはどうしたらよいのでしょうか
- 570 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:31:45 ]
- >>380
入力に何を与えたら何が出力されるのか書いてくれれば考えてみる >>524 >>526 を読んだが訳分からんかった 検索のキーとなるのは64バイトの内最初の固定 n バイトだけ?(>>524 だと n=16) 1行64バイトって改行文字を含まずに64バイト? 読み込むファイルは検索途中で書き換えられる?
- 571 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:36:06 ]
- >>569
要素数を表してるのになんでビットシフトしてるの?
- 572 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:39:32 ]
- フーリエ変換かなんか 2^n 要素数のアルゴリズムじゃね?
- 573 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:40:24 ]
- >>565>>567
どちらもできましたありがとうございます。
- 574 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:40:48 ]
- >>571
階差数列や漸加式をイメージしてもらいたいのですが 長さの半分の式を移していくという処理をやっています。 なんか頭が熱持ってきました。。。
- 575 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:41:57 ]
- >>572
そうです、2^nの式です。。。わかるものなのですね
- 576 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:44:48 ]
- ソースが全部貼り付けられてるわけじゃないからあくまで推測だが、
sizeが正しく使われてるか確認した方がいいと思う。
- 577 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:48:59 ]
- >>576
for(i=0; i < length<<1 ; i++) input[i] = output[i]; …こうやったら、望む値が出てきました。。。。なぜ。。。。。 計算させるところを勘違いしていたのか、わけがわからなくなってきました。。。。
- 578 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:50:41 ]
- >>569
なんかよく分からんが例として int a[10],b[10],size=10,i; //何らかの代入処理 memcpy(b,a,size * sizeof(int)); //↑は↓と等価 for(i=0; i < size; i++) b[i] = [i]; こんなふうにする あと今気付いたが、memcpyの第一引数と第二引数が反対になってるよ 第二引数がコピー元で、第一引数がコピー先 代入文と同じ順序ね
- 579 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:55:00 ]
- >>578
ありがとうございます。ちょっと頭冷やして、ソースと頂いたレスを理解します。 ほんとなんかすみません
- 580 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 03:23:33 ]
- C言語初心者で、教えて欲しいのですが
sin^2(x) (サインの二乗(x)) はどのようにプログラムに書けば良いのでしょうか?
- 581 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 03:34:41 ]
- >>580
sin(x)の2乗ということですよね #include <math.h> sin(x)*sin(x) /* sin(x)の2畳 */ sin関数を2階呼ぶのが面倒なら double y; y = sin(x); y*y
- 582 名前:581 mailto:sage [2007/10/30(火) 03:36:22 ]
- pow関数を使うという手もありますが
2乗なら掛け算で十分
- 583 名前:580 mailto:sage [2007/10/30(火) 03:41:03 ]
- >>581
こんなにも遅い時間にありがとうございます。 プログラミングもですが、数学もやり直してきます
- 584 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 03:46:08 ]
- 2倍角の公式の方が速い
- 585 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 03:51:51 ]
- exp( ix ) = cos(x) + i sin(x) だから2乗して実部を比較すると
cos(2x) = cos^2(x) -sin^2(x) となる cos^2(x) + sin^2(x) = 1 なので 1 - 2 sin^2(x) = cos(2x) これより、(1+ cos(2x)) / 2 が求める値である
- 586 名前:580 mailto:sage [2007/10/30(火) 04:01:36 ]
- >>585
さらなる補足をありがとうございます。数学の教科書見て勉強してます
- 587 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 12:19:41 ]
- >>585
>>581 より計算量増えてね?
- 588 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 12:48:58 ]
- >>587
そもそも移項で間違ってる
- 589 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 12:55:03 ]
- sin^2(x) == (1-cos(2x))/2だな
>>587 ・関数呼び出しが一回でいい(cf.sin(x)*sin(x)) ・一時的な代入がいらない(cf.y=sin(x);y=y*y;) ってことでこの方法が一番いいかと
- 590 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 12:58:06 ]
- 計算増えるっていっても2倍と1/2と足し算だからもとのよりはいいんじゃね?
- 591 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 13:26:48 ]
- おまえら、数値計算の勉強をやり直せ。
1 - cos(2x) なんて、 x = 0 の近辺で桁落ちして使い物にならないぞ。 double t = sin(x); double s2x = t * t; しか、ありえない。
- 592 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 13:34:29 ]
- 桁落ちw
- 593 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:50:05 ]
- ->
これはどういう意味があるのでしょうか
- 594 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:54:29 ]
- やじるし
- 595 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:55:08 ]
- アロー演算子
構造体のポインタからメンバにアクセスするときはドット演算子ではなくこれを使う
- 596 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:57:52 ]
- struct point {
int x, y; }; struct point p; struct point *pp = &p; があったとき、 (*pp).x = 1; pp->x = 1; が同じxに代入をしている。 構造体へのポインタを使う上での簡略化。
- 597 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 16:00:59 ]
- >>595>>596
ありがとうございました
- 598 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:29:44 ]
- 使ってる教科書に載ってないのか?
- 599 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:46:39 ]
- 検索エンジンを作ろうとおもう。
まずEUC-JPに統一する。 旧字体は新字体、カタカナはひらがなにする。 ひらがなと、新字体以外は登録しない。 出現可能な文字に0から順に番号をつけて、N-germ (2-germ) で登録していく あと、ハッシュを使う為に全角2文字分を圧縮して20数ビットを使う NKF32.DLL www.vector.co.jp/soft/win95/util/se295331.html 旧字体→新字体 www.ritsumei.ac.jp/acd/cg/lt/cl/koten/newold.htm yasuda.homeip.net/misima/misima_seiji_test.html www.toyama-cmt.ac.jp/~kanagawa/language/kyuuji.html www.asahi-net.or.jp/~ax2s-kmtn/ref/old_chara.html homepage3.nifty.com/jgrammar/ja/tools/tradkan0.htm homepage3.nifty.com/jgrammar/ja/tools/ksimple.htm
- 600 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:56:23 ]
- 連載:検索エンジンを作る|gihyo.jp
gihyo.jp/dev/serial/01/make-findspot Googleの技術は凄いと思ったがMooterっていうサイトがGoogleを上回る検索力らしい Mooter www.mooter.co.jp/ 辞書不要の形態素解析エンジン「マリモ」とは www.atmarkit.co.jp/news/200708/15/mooter.html 形態素解析について www.gengokk.co.jp/thebun.htm mecab.sourceforge.net/feature.html Google の秘密 - PageRank 徹底解説 www.kusastro.kyoto-u.ac.jp/~baba/wais/pagerank.html PageRankの基本概念 tnt.math.metro-u.ac.jp/labo/grad/2004/masa/graph/6.html
- 601 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:58:27 ]
- >>599
ガンバレ そしてこのスレに来るな
- 602 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:36:04 ]
- 「関数へのポインタ」は何に使うの?必要(あると便利)な状況がよくわからない。
- 603 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:39:42 ]
- qsort関数がもろに関数ポインタ使用してるじゃないか
- 604 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:39:56 ]
- qsort
- 605 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:41:46 ]
- ある関数を呼ぶときに、呼ばれた関数内部で使う関数を外から指定するときに使います。
このばあい、関数へのポインターを引数で渡します。 例) コールバック関数 リストに要素をつなげるときに大小比較関数
- 606 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:44:33 ]
- qsort関数もそうですね
void qsort(void *base, size_t num, size_t size, int (*compare)(const void*, const void*)) この、int (*compare)(const void*, const void*)が関数ポインターで この場合はソートの並びを呼び出し側で制御できるようにしている。
- 607 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:56:19 ]
- うーむ、わかったようでわからない。
複数の機能(=関数の数)を内包する関数で、引数の指定によって機能を使い分ける場合ってことかな? でもそれって単なる文字列でも振り分け可能な気がするなぁ…やっぱりわからん。
- 608 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 22:59:49 ]
- たとえばqsortの場合、qsortの作者が想定してない型のソートもできる
単に引数で文字列を渡すだけじゃ、qsortの作者が想定している型やソート方法しか対応できない
- 609 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:03:25 ]
- >>607
ためしに qsort を使ってみろ 数値のソート、文字列のソート、自前構造体のソート・・・ そしたらわかる
- 610 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:04:51 ]
- ソート機能を提供するけど、その時必要となる比較の機能は自分で作ってね ってこと
一人で作業する分にはあまり使う必要無いと思う
- 611 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:35:24 ]
- 比較関数はプログラマ側が用意できるので、昇順や降順、どの値を比較対象とするか等を任意に作れる。
そしてどんな比較関数でも同じ手続きで利用するために、関数へのポインタを使っている。 …で合ってる?
- 612 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:37:46 ]
- ポインター自体を完全に把握してないんじゃないかね?
あれ覚えるのやっかいだし
- 613 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:38:33 ]
- ソート関数とかわかりずらい STLつかっとけ
- 614 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:50:45 ]
- ポインタはそんなに分かりづらいとは思わなかったなぁ。
いっぺん練習で、全ての変数をポインタとmallocでコーディングしたらイヤでも理解出来るよ。
- 615 名前:デフォルトの名無しさん [2007/10/31(水) 00:00:58 ]
- EUC-JPコードをファイルから読み込んだとき、char やstringでは何コードで記録されるんですか?
指定できますか?
- 616 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 00:29:42 ]
- OSは何を使ってるとか、コンパイラは何とかそういう情報も書いておこうぜ
- 617 名前:プリンがー mailto:aaa [2007/10/31(水) 00:47:58 ]
- データa1,a2---,a10及びb1,b2,----b10を読み、積和
S=a1b1+a2b2+-----a10b10を計算せよ。 #include <stdio.h> int main (void) { int i,a[10],b[10]; int S; for(i=1;i<=10;i++){ scanf("%d",&a[i]); scanf("%d",&b[i]); S+=a[i]b[i] } printf("積和は%dです。\n",S); return(0); } これであってますか??
- 618 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 00:49:34 ]
- >>617
・Sの初期化がされていない。 ・a[i]*b[i];
- 619 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 00:49:35 ]
- >>617
>S+=a[i]b[i] とりあえずコレが間違ってる *と;が足りない
- 620 名前:プリンがー mailto:aaa [2007/10/31(水) 01:07:16 ]
- >>618>>619
S=0 S+=a[i]*b[i]; ですね。 ありがとです。
- 621 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 01:12:26 ]
- >>620
セミコロン(;)忘れるなよ
- 622 名前:プリンがー mailto:aaa [2007/10/31(水) 01:31:53 ]
- うるせーバーカ
- 623 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 02:04:27 ]
- かなり初心者です。
unsigned char afo_1,afo_2,afo_3,...afo_n; とafo_1からafo_nまで宣言したい時はどうしたら良いですか?
- 624 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 02:09:22 ]
- >>623
配列じゃダメなの?n=10なら unsigned char afo[10]; 配列の各要素へのアクセスは添字を指定する。 afo[0] = 'a'; afo[1] = 'b'; 〜 afo[9] = 'j';
- 625 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 02:09:30 ]
- >>623
全部書くしかない。 配列でいいなら配列使え。
- 626 名前:623 mailto:sage [2007/10/31(水) 02:15:12 ]
- >>624,>>625
nが決まった値では無いので、今の路線は無理ですねー。。 配列で頑張ってみます。夜遅いのにすみません。素早い対応ありがとうございます。
- 627 名前:627 [2007/10/31(水) 04:16:28 ]
- 明日提出のレポートのプログラムなのですが
どうしても実行後うまくいきません 簡単なプログラムで 入力された文字を”#”で表すというものですが 指摘お願いします upsurusuru.hp.infoseek.co.jp/index.html にアップしましたので怪しいむと思いますが 助けてくださいお願いします 07/10/31(Wed),04:10:07 この時刻にアップしました 拡張子を.cに変更してください だれかおねがいします
- 628 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 04:30:05 ]
- >>627
うちの環境だとコンパイルできないから確認してないけど、 isalphaとisdigitが逆なんでねーの?
- 629 名前:Pもかっこわりぃなぁ mailto:sage [2007/10/31(水) 10:42:33 ]
- >>627
どうでもいいけど、ABCDEFGHIしKLMNOPQRSTUVWXYZになっている。
- 630 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 13:33:38 ]
- printfとprintf_Pの違いを教えてください
- 631 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 13:43:36 ]
- printfで数字を表示するときも”123”のように”を使いますか?
- 632 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:07:34 ]
- 数値と数字の違いが分からんのか
- 633 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 14:20:54 ]
- >>631
5点
|

|