- 1 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 06:14:52 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 14 pc11.2ch.net/test/read.cgi/tech/1181735298/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 91代目 pc11.2ch.net/test/read.cgi/tech/1182607405/
- 618 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 22:03:50 ]
- トイレに行くと血が・・・ orz
- 619 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 22:04:52 ]
- >>618
今日あの日だろ
- 620 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 22:14:14 ]
- >>618
肛門様を大事に
- 621 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:25:36 ]
- cdっていう配列があったとして
&cd[0] と cd は全く同じ意味ですか?
- 622 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:27:05 ]
- ほぼ同じ意味
- 623 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:27:28 ]
- >>621
「2*2」と「1*4」は同じですか? という質問と同じです。 値も型も同じですが、意図が違います
- 624 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:27:32 ]
- cdとブルーレイくらいしか変わらない
- 625 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:28:25 ]
- sizeofの引数にしてみそ
- 626 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:47:34 ]
- void型の関数でwhileやifの途中で関数を終わらせるにはどうしたらいいでしょうか?
int型とかなら if(x==1) return 0; とかやれば関数から抜け出せるけど void型はどうやるんですか?
- 627 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:48:33 ]
- return;
- 628 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 00:02:09 ]
- だが、ループの途中からリターンするのはあんまり気持ちのいいもんじゃないよ。
- 629 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 00:05:51 ]
- そして、じゃあbreakはどうなんだ?というような宗教論争に
- 630 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 00:12:35 ]
- ネストされたループとか考えるとループ中のreturnはやむを得ない気がする。
- 631 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:03:33 ]
- 10GBぐらいある巨大なテキストデータの中のある1行を
書き換えたいんだけどどうやればできますか。 普通にやると,また10GB書き出さないと出来ないような。
- 632 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:10:57 ]
-
双方向リストに関する質問です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4492.txt 双方向リストの先頭と末尾へ要素を追加する関数と、 先頭と末尾の要素を削除する関数を書いてみたのですが、 末尾要素を削除する関数 DelTail() が思うように動いてくれません。 free()する対象が悪いのではないかと推測していますが、 検討もつかないというのが実際のところです。 他の関数についてもツッコミいただければと思います。
- 633 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:11:06 ]
- >>621
int cd[10]; として、 &cd[0] の型は int* で、 cd の型は int [10] だな。 全く同じではない。
- 634 名前:デフォルトの名無しさん [2007/07/04(水) 01:18:05 ]
- 632
www.geocities.jp/ky_webid/cpp/library/003.html ●C++編(標準ライブラリ) 第3章 list listは双方向リストを構築したテンプレートクラスです。
- 635 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:18:07 ]
- >>631
ファイルでもメモリーでもどっちでもいいが、書き換えサイズが同じなら、読んで書いて閉じればそれで終わり。 挿入や削除ならそこでちょん切ってリスト構造で繋ぎ直す。
- 636 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:43:20 ]
- >>634
そのページのC編のほうのも参考にしてみたのですが、 できればグローバル変数を使わずに、 かつ、リスト操作関数の引数も、リストへのポインタだけにしたいのです。 逆に、関数内で作業用の変数が増えるのはあまりこだわりません。 もちろん、良識のある範囲で少ないほうがいいのですが。
- 637 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:44:58 ]
- Add系の関数の引数はデータもあるので、
増やす方は2コ(リストと要素)、減らす方は1コ、というのが正しいですね。
- 638 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 01:45:03 ]
- >>631
ファイルをリスト構造にする。 ところどころにダミーデータをいれておいて、そこをバッファに使う。 書き換えたい所を含んだクラスタを別のクラスタに繋ぎなおす。 別のファイルにパッチ情報として〜行目はこの内容に置き換わりました、のような情報を入れてセットで扱う。 直した所から後ろをそっくり書き直す
- 639 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 02:11:46 ]
- fgets(hoge, 64, stdin);
みたいにしたとき、入力が64文字以上あるとどうなりますか? 63文字目までがhogeに入って後は無視されるんでしょうか?
- 640 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 02:14:48 ]
- 63文字だけ stdin から読み込む、だけ。
後は次の読み込みがあれば、その時に読み込まれる。
- 641 名前:639 mailto:sage [2007/07/04(水) 03:07:44 ]
- では、64文字目以降の改行までを無視することはできますか?
fflush(stdin); してしまうと、リダイレクトされてきた時に 改行以降も全て捨てられてしまうのでは?
- 642 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 03:16:35 ]
- hoge[62] = 0;
hoge[63] = 1; fgets(hoge, 64, stdin); if(hoge[63] == 0 && hoge[62] != '\n') { scanf("%*[^\n]s"); getchar(); }
- 643 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 08:40:22 ]
- int *p,a;
p=&a; ってやったら *pはaと同じ(*p=a)になるんでしょ でも@=&aとやらず*p=aはなんでダメなの?
- 644 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 08:43:50 ]
- *p==a
p==&a
- 645 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 08:48:28 ]
- int *p,a;
p=&a; *p = 10; printf("%d\n",a); a = 20; printf("%d\n",*p);
- 646 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 08:50:31 ]
- pが未初期化だとどこさしてるかわからんのに
その先に値を書き込もうとするか
- 647 名前:デフォルトの名無しさん [2007/07/04(水) 12:10:01 ]
- STL勉強してるんだけど
vector<string>とかできるの?
- 648 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:10:52 ]
- スレタイ読めないの?
- 649 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:42:43 ]
- 試せば分かることをわざわざ聞きにくるやつに
スレタイを正しく読むのは難しいだろ
- 650 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:05:10 ]
- 試して出来ないから聞いてんじゃないの?
少しは予測しろよw
- 651 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:16:20 ]
- それは有り得ない話だ。
- 652 名前:デフォルトの名無しさん [2007/07/04(水) 13:20:44 ]
- STL勉強してるんだけど
vector<vector>とかできるの? vector<vector<int>>とか vector<vector<vector>> とかできるの?
- 653 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:25:34 ]
- これはひどい
- 654 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:31:33 ]
- スレタイくらい読め
- 655 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:58:39 ]
- STLはC言語では使えん
vector<vector<int> > vector<vector<vector<int> > > で試せ
- 656 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 14:34:52 ]
- つ[名前空間]
まあスレタイも読めないおばかさんは一生悩んでろ。
- 657 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:09:49 ]
- switch( uMsg )
case WM_CREATE: test1=1; test2=2; break; case WM_CREATE: { test1=1; test2=2; } break; case WM_CREATE: { test1=1; test2=2; } return; case WM_CREATE: { test1=1; test2=2; return; } どれ使ってもOK?
- 658 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:11:06 ]
- OK
- 659 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:11:26 ]
- {}で囲むのは途中で変数宣言したいとき。
breakとreturnは意味が違う。
- 660 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:16:09 ]
- 別に変数宣言しなくても囲ってもいい
- 661 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:09:43 ]
- switch、caseに関わらず、別にスコープは好きなところで使って構わない。
- 662 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:14:36 ]
- 関数内ならね。
- 663 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:16:27 ]
- >>641
fflushは入力バッファに対してどう作用するか定められていない (出力バッファを吐き出すことだけが規定されている)ので、 このスレとしては知らないという答えになる。
- 664 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:50:24 ]
- { }は見やすくするためにつけたけど、どこでも使ってOKなのね。
breakとreturnはよく考えるとぜんぜん意味が違う事に気づいた なぜreturnが入ってたんだろうw
- 665 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:07:30 ]
- 関数と定義するとき、プロトタイプ宣言が必要って言われてますよね?
プロトタイプ宣言って必要なんですか? なくても動くと思うのですが・・・
- 666 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:13:08 ]
- なくても動きますし、必須でもありません。
あなたがいらないと思うなら必要ではないでしょう・
- 667 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:16:40 ]
- なくても必ず正しく動くわけじゃないぞ。
- 668 名前:デフォルトの名無しさん [2007/07/04(水) 19:20:45 ]
- 自前の関数を関数内で使うときじょんじょが大事になる
- 669 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:35:19 ]
- 例えばいつもおなじみのstdio.hという標準入出力ライブラリのヘッダファイルには
printf関数やらfopen関数やらのプロトタイプ宣言がずらずらと並んでる stdio.hにはプロトタイプ宣言だけが書かれてて,printf関数やfopen関数の実装はstdio.cに記述されている ライブラリってのはヘッダファイルとソースファイルが対になっていて ヘッダファイルに「このライブラリはこんな機能を提供しますよ〜」っと目次みたいなもんを書いてるわけだ それがプロトタイプ宣言 なんでこんなことを分けるするかってのはソースを分割して機能別にライブラリ化するため 1個だけのソースファイルでプログラミングしてる時は必要無いけど普通はプロトタイプ宣言も書いておく main関数の前にずらずら別の関数の実装が並んでいると,どこがmainの始まりか探すのが大変なのもある
- 670 名前:デフォルトの名無しさん [2007/07/04(水) 20:18:02 ]
- 年と月を入力して
2007 7 sun mon tue wed thu fri sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 みたいな万年カレンダーを作りたいんですけど、アルゴリズムを詳しく教えてほしいです。 よろしくおねがいします。
- 671 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:19:53 ]
- あ、数字がずれてる…。
sunのnの下に1がきてmonのnのしたに2がくる感じです
- 672 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:38:15 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4502.txt
上のプログラムは、入力した文字を逆向きにプリントしちゃうはずの 自分でゆうのもなんですが、優れものなんです。が 実行すると、何故か変な文字列が入っちゃいます>< こんな感じ↓(testと入力した場合) www.uploda.org/uporg888409.jpg.html どなたか、原因を教えてくださいな 教えてくれた方に、僕のケツ穴差し上げます><
- 673 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:42:44 ]
- ソース見た瞬間意識が朦朧としてきた
- 674 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:49:51 ]
- >672
文字列の終端は'\n'じゃない てめえの汚えケツ穴なんぞ誰がいるかってんだ
- 675 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:05:09 ]
- >>673
朦朧としてると、こっちから押し倒しちゃうze(はぁと >>674 ありがちんこ☆ \0か!
- 676 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:09:59 ]
- あえて断言しよう
>>674は絶好のチャンスを失った、と。
- 677 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:12:21 ]
- >>670
#include <unistd.h> int main(int argc, char *argv[]){return execlp("cal", "cal", argv[2], argv[1], NULL);}
- 678 名前:デフォルトの名無しさん mailto:age [2007/07/04(水) 21:14:37 ]
- 例えば、以下のような4つの要素からなる列が複数あるものに対して、
次のような処理: (1)1番目の要素が同一の場合、後から出現したものを採用する (2)3番目の要素でソートする を行いたいのですが、どのようなアルゴリズムになりますか? 例) 0010 ABC 60 70 0022 BCD 56 76 0010 EFG 85 34 0003 HIJ 70 98 ↓ 0010 EFG 85 34 0003 HIJ 70 98 0022 BCD 56 76
- 679 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:15:51 ]
- 普通に配列につめてソートします。
- 680 名前:678 mailto:age [2007/07/04(水) 21:50:09 ]
- >>679
普通に配列からソートする場合、 どのように(1)の条件をクリアしますか? そこで困っています。
- 681 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:59:03 ]
- 同じものが出てきたら上書きする
- 682 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:25:35 ]
- 1番目の要素が同一かどうか調べて、同一なら上書きすればいい(例だと、消去してる?)
- 683 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:29:19 ]
- >>680
0000番から9999番までの箱を用意してそれぞれの箱に入れていく。 で、既に入ってる場合は入ってるものを捨てて代わりを入れる。 全部入れ終わったらソート。 無駄だらけだけど分かりやすい考え方だとこんな感じ?
- 684 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:30:50 ]
- int i, j, k, n;
for(i=n-1; i> 0; i--) { for(j=i-1; j>=0; j--) { if(a[j]==a[i]) { for(k=j; k<n-1; k++) a[k] = a[k+1]; n--; i--; } } } こんな感じで同じものを消去すりゃいいんじゃね?
- 685 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:31:14 ]
- ソートしてからの方が効率いいだろ・・・
- 686 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:34:55 ]
- >>685
ソートしちゃうとどれが先にでてきたか分からなくならない? いや、マージソートとかならいいけど
- 687 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:38:45 ]
- >>686
そのための安定ソートだろ 入門篇ならバブルソートだろう
- 688 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:44:16 ]
- >>685
ソートは3番目の要素でするんだぞ?
- 689 名前:678 mailto:age [2007/07/04(水) 22:45:58 ]
- >>683
それ考えたんですけど、 実際は0000000000番から9999999999番まで(10桁)あり、 番号も全部あるわけじゃないからやっぱり効率悪いですよね。 はやさも求められているんで・・・ ハッシュとか2分探索とか使うんですかね?
- 690 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:50:51 ]
- >688
一番目の要素で安定ソート 一番目の要素でのかぶりを削除 三番目の要素でソート ってことだろ。
- 691 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:53:29 ]
- インデックス情報を付加しといて qsort という手もある。
- 692 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:05:49 ]
- 標準ライブラリに無いのが難点だけど
重複してるかどうか調べるのはハッシュ使うのがいいと思う
- 693 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:08:01 ]
- インデックス用の配列mallocしてqsortが一番楽だろ
- 694 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 09:38:27 ]
- >>672
それどっかの入門書に載ってたぞ
- 695 名前:デフォルトの名無しさん [2007/07/05(木) 15:50:14 ]
- CからつかえるフリーのXMLライブラリないですか?
- 696 名前:デフォルトの名無しさん [2007/07/05(木) 15:53:13 ]
- 何方か標準関数のプログラムの作り方教えてください
- 697 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:54:07 ]
- 日本語でもう一度
- 698 名前:デフォルトの名無しさん [2007/07/05(木) 15:55:33 ]
- >>672見たらmain内で関数宣言してるけど、これはなに?
そういう手法があるの?関数の内容よりそっちに目がいった。 こんなことしたことないけど、どうなの?
- 699 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:58:24 ]
- そりゃキミが知らないだけだろ
- 700 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:06:00 ]
- プロトタイプ宣言くらい関数内でできる。
- 701 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:41:17 ]
- 次のような関数を作りました。
Vertices isMaxNoVer(Vertices R[]){ Vertices max; int i, count=0; max.num = 0; max.deg = 0; max.no = 0; count = countVer(R); for(i=0; i<count-1; i++){ if(max.no < R[i].no){ max = R[i]; } } return max; } この関数を、次の再帰関数を使って二度目に呼び出した時、 動作がおかしくなり、以下のようなおかしな値が入ります。 test expand 1, 8 -1073747304 134516287 更にその後2度目のtest expand 3に入る前に セグメントエラーを起こして止まってしまいます。 これだけの情報でわかって頂けるかわかりませんが、 誰か助けてください。
- 702 名前:701 mailto:sage [2007/07/05(木) 16:42:43 ]
- void expand(Vertices R[]){
Vertices p, buf[N], Rp[N]; while(countVer(R) != 0){ p = isMaxNoVer(R); printf("test expand 1, %d %d %d\n", p.num, p.deg, p.no); if((countVer(Q) + p.no) > countVer(Qmax)){ syokikaVer(buf); mataha(Q, p); printf("test expand 2\n"); syokikaVer(buf); ganma(buf, p.no, G); printf("test expand 3\n"); syokikaVer(Rp); katu(Rp, buf, R); printf("test expand 4\n");
- 703 名前:701 mailto:sage [2007/07/05(木) 16:44:38 ]
- if(countVer(Rp) != 0){
numberSort(Rp); expand(Rp); } else if(countVer(Q) > countVer(Qmax)){ copyVer(Qmax, Q); } hiku(p, Q); } else return; hiku(p, R); } return; } QやQmax、Gはグローバル変数です。
- 704 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:03:30 ]
- >>701
それだけだと分からんなぁ〜 katu(Rp, buf, R); numberSort(Rp); このへんの関数に問題ありそうだけど
- 705 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:29:52 ]
- 質問です。
今、以下のような関数と構造体を作ったのですが、 typedef struct { int Length, Maximam, ValueSize; void* Array; } ArrayList; char* GetValue(ArrayList* list, int index) { char* data = (char*)list->Array, item = malloc(list->ValueSize); int i = 0; unsigned int p = index * list->ValueSize; if(list->Length > index && item != NULL) { for(; i < list->ValueSize; i++) { item[i] = data[p + i]; } return item; } else { return NULL; } } 以下続く
- 706 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:33:11 ]
- item
- 707 名前:705 mailto:sage [2007/07/05(木) 18:33:11 ]
- void AddRange(ArrayList* list, const void* values, int length)
{ char* data = (char*)list->Array, item = (char*)values; unsigned int i = 0, itemlength = length * list->Maximam, index = list->Length * list->ValueSize; if(list->Length + length >= list->Maximam) { list->Maximam += length * 2; list->Array = realloc(list->Array, list->ValueSize * list->Maximam); } for(; i < itemlength; i++) { data[index + i] = item[i]; } list->Length += length; } void main (void) { ArrayList list = { 0, 4, sizeof(int), malloc(sizeof(int) * 4) }; int i = 0; int s[10] = { 0, 1, 2, 3, 4, 5, 6 ,7 ,8 ,9 }; AddRange(&list, s, 10); AddRange(&list, s, 10); for(; i < list.Length; i++) { printf("%d\n", *((int*)GetValue(&list, i))); } } どうしてもGetValueのchar* itemの領域が確保できないんです。 他にも、listのArrayをいじってもヒープが壊れてますとか言われるのですが… なにかやってはいけないことでもやってしまっているのでしょうか? 行数圧縮しているため読みにくいとは思いますが、よろしくお願いします。
- 708 名前:705 mailto:sage [2007/07/05(木) 18:34:36 ]
- ちなみに、元のソースではすべて
int i = 0; int j = 0; のように宣言しています。
- 709 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:38:04 ]
- itemはchar型変数として宣言されてる
*itemで宣言しなきゃダメだろ
- 710 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:41:16 ]
- >>709
元ソースでは char*になってたんですが… 削りすぎた orz
- 711 名前:705 mailto:sage [2007/07/05(木) 19:07:04 ]
- いろいろ試してみたのですが、
AddRange(&list, s, 10);を 連続でなくとも2回使用するとGetValueのitemの中がNULLに、 3回目からはAddRange(&list, s, 10);で行われるreallocで ヒープが壊れているというエラーが出てくるようです。 何が悪いんだろ orz
- 712 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:09:20 ]
- AddRangeの2回目でヒープ壊してる
itemlengthとreallocのサイズが乖離してる
- 713 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:17:30 ]
- つーかGetValue()って範囲チェック除けば
char *GetValue(ArrayList list, int index) { return (char*)list.Array + index * list.ValueSize; } これで十分じゃね?
- 714 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:24:04 ]
- itemlength = length * list->Maximam → itemlength = length * list->ValueSize
でいけるかな?
- 715 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:29:48 ]
- >>712
itemlength = length * list->Maximam のMaximamが原因でした。ValueSizeにするはずだったのに… 1回の使用だけだとエラーが出なかったので問題ないと思い込んで 気づかなかった orz >>713 そんなやり方もあったんですか… void*だとサイズわかんねぇよって怒られるのでchar*にして コピーする方法しか知りませんでした。 >>714 全くその通りです。 まともにコードかけるようになるのは時間がかかりそうだ orz ありがとうございました!
- 716 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:34:00 ]
- 素直に型を限定すればいいのに
- 717 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:55:47 ]
- int型の数字を文字列に変換するのってどうやるん?
具体的に言うと int n = 34; char* nStr = intToStr( n ); /* nStr = "34" */ という風にしたいのだけれど。
- 718 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:03:14 ]
- char *buf;
int n=34; buf=メモリ確保 ssprintf(buf,"%d",n);
- 719 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:05:12 ]
- >>717
sが一個多かった sprintf
- 720 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:35:49 ]
- >>718
サンキュ! inline char* int2str( int n ) { char *buffer; buffer = malloc( sizeof( char ) ); sprintf( buffer, "%d", n ); return buffer != NULL ? buffer: "FAULT!!"; } 一応こういう感じで。
- 721 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:43:17 ]
- >>720
>buffer = malloc( sizeof( char ) ); 1バイトしか確保できないよ '\0'しか格納できない もう少し多めに確保して >return buffer != NULL ? buffer:"FAULT!!"; buffer の確保が失敗した場合 sprintf( buffer, "%d", n ); でエラーが出る buffer = malloc( sizeof( char ) ); if(buffer){ sprintf( buffer, "%d", n ); return buffer; } else { return "FAULT!!"; } のほうがいい気がする
- 722 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:57:49 ]
- >>721
せっかくならmallocも直してやれよw 11桁くらい確保すれば十分の気がする
- 723 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:16:28 ]
- >>720
んじゃ buffer = malloc(sizeof( char ) *12); または buffer = malloc(12); >>722 符号付の場合、'\0'いれると12文字になる
- 724 名前:デフォルトの名無しさん [2007/07/05(木) 23:40:25 ]
-
最強の関数教えてください
- 725 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:42:07 ]
- VIPでやれ
- 726 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:42:25 ]
- どう考えても main だろ。
- 727 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:43:51 ]
- >>724
abort
- 728 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:49:33 ]
- exit
- 729 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:35:39 ]
- buffer = (char*)malloc(sizeof( char ) *12);
↑これは?
- 730 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:36:56 ]
- bufferの型にあわせてあるんだろ。
C++じゃ必須の書き方だがCじゃいらん。
- 731 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:47:14 ]
- CとかC++の問題じゃねーだろ・・・知ったかの初心者がレスしてんのか、ここは?
キャスト演算子とか知ってなさそうだな・・・平気で型の違う変数をキャスト演算子なしで 代入しちゃうようなヘボプログラマーかw
- 732 名前:デフォルトの名無しさん [2007/07/06(金) 01:48:12 ]
- 配列の添え字に変数を指定することは可能でしょうか?
- 733 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:54:01 ]
- コンパイラが自動的にやってくれるのを当てにして失敗するプログラマー(プ
- 734 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:56:50 ]
- >>730 (・∀・)ニヤニヤ
> bufferの型にあわせてあるんだろ。 > C++じゃ必須の書き方だがCじゃいらん。
- 735 名前:732 mailto:sage [2007/07/06(金) 01:57:25 ]
- 自己解決しました
可能っぽいですね
- 736 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:01:26 ]
- >>730 (・∀・)y-~~~ ヤニヤニ
- 737 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:01:26 ]
- C だと void* から別のポインタ型への変換は暗黙にできるだろ・・・常識的に考えて。
- 738 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:04:22 ]
- void*が無かった頃のCならmallocはchar*を返したから
キャストしないと警告もんだとか言い出してみる。
- 739 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:04:47 ]
- >>730 (・∀・)ニヤニヤ ヘボプログラマー必死だな
- 740 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:08:16 ]
- >>738
malloc で気を使っても、 どっかで void* 使ってたらそれだけでアウツだけどな。 その環境なら。
- 741 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:11:36 ]
- >>735
可能なんですか?
- 742 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:12:01 ]
- >>730 (・∀・)ニヤニヤ あるんだろ。Cじゃいらん。
- 743 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:24:21 ]
- >>738 (・∀・)ニヤニヤ
> void*が無かった頃のCなら
- 744 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:27:29 ]
- >>732
char a[10]; int i; でa[i]ってことですか? もちろん可能。 添え字は整数の値をとる式ならなんでもおkだぞ。
- 745 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:29:22 ]
- >>744 (・∀・)ニヤニヤ
> 添え字は整数の値をとる式ならなんでもおkだぞ。 (VIPPERのAA略)<常識的に考えて配列の要素番号の範囲内だろ
- 746 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:33:49 ]
- アホが常駐しとるな
- 747 名前:744 mailto:sage [2007/07/06(金) 02:34:12 ]
- >>745
おまい!大丈夫か! >>732は文法的に許されるかと質問しているんだろ!
- 748 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:34:50 ]
- よい子がC言語の勉強実況してるからみてやろうぜ
WMPのファイル→URLを開く→matoinu.orz.hm:30000をコピペ→OK 実況スレ 何でも実況V なんでも実況フリーダム live24.2ch.net/test/read.cgi/livevenus/1183654888/ 面白いぜwwwwww
- 749 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:38:25 ]
- 範囲外まで指定できちゃうのがエラーの温床になってるしな。
- 750 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:40:29 ]
- とりあえず (・∀・)ニヤニヤ を NG にした。
- 751 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:42:37 ]
- >>744さん
回答有難う御座います。 int i; char a[]="abc"; i=strlen(a); char b[i]; のような感じで使いたいのですが、可能でしょうか?
- 752 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:44:57 ]
- >>747 (・∀・)ニヤニヤ 適切と不適切がわからないプログラマーワロスw
キャストは不要でつか〜〜〜?
- 753 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:46:39 ]
- 746 名前:デフォルトの名無しさん 投稿日:2007/07/06(金) 02:33:49
アホが常駐しとるな (VIPPERのAA略) < 常識的に考えて知ったかぶって初心者にありもしないことを言う方がおかしいだろ どう考えて配列を適切に参照できる、要素番号の範囲内の値をとる式ならって話ならわかるけどw
- 754 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:48:03 ]
- とりあえず (VIPPERのAA略) を NG にした
- 755 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:49:35 ]
- >>744 (^∀^) ニタニタ
> 添え字は整数の値をとる式ならなんでもおkだぞ。 整数の値をとる式ならなんでも 整数の値をとる式ならなんでも こやつは要素数と参照できる範囲外の値をとってもおkなんだぞぉーーー!
- 756 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:50:28 ]
- >>744 m9(^д^)9m プププ、(ダブル)プギャー
- 757 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:53:33 ]
- 文体変えてAA使っても、いつものアホだってことはバレバレ
- 758 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:53:52 ]
- >>754
all right, I will use AA that's not for short.
- 759 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:54:34 ]
- >>757
> いつものアホ アホとか言っちゃってるよぉ〜〜〜、お前がアホのくせして初心者に大嘘教えているくせにw お前みたいな奴にアホ言われたくね〜〜なぁ。俺は間違ってねーし。お前は不適切。
- 760 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:01 ]
- VIPPER の AA 略 < 常識的に考えて、文法的におkってことを持ち出して
不十分な(というか間違っている)説明の言い訳をするかぁ? んじゃお前は a[10] の配列の10番目を参照するときは a[10] とでもやってろよ
- 761 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:21 ]
- >>751
それはダメ。 配列変数の宣言文には変数は使えない。 それをするなら nt i; char a[]="abc"; char *b; i=strlen(a); b=(char*)malloc(sizeof(char)*i);
- 762 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:51 ]
- >>751
int i; char a[]="abc"; char *b; i=strlen(a); b = (char*)malloc(sizeof(char)*i); free(b); スレの流れからすればこんな感じ bにaと同じ長さの文字列を入れるなら+1しないと駄目だけど。
- 763 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:58:25 ]
- >>761さん
有難う御座います。おかげで疑問が解けました。
- 764 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:00:43 ]
- | ( ●)(●) いい加減な説明をしていることを指摘されて
. | (__人__) 指摘した相手をアホとか言う方がアホだろ | ` ⌒´ノ 常識的に考えて・・・
- 765 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:01:22 ]
- >>761
C99ならできるというのは禁句かい?
- 766 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:03:23 ]
- 回答者が書く補足としては、ありだとおもう。
突っ込みとしては、ちょっと弱い。
- 767 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:04:15 ]
- / ノ ⌒ \ 文法的にも間違っていることを言う奴が
| (●)(●) | 間違っていない奴にアホって言うアホだろ . | (__人__) | 常識的に考えて。ちゃんとキャストしろよ
- 768 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:05:15 ]
- 常考常考うるせーよ
貶し合ってないで意味のある話をしろ
- 769 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:08:42 ]
- >>763
VBだとそれができるんだよね。 それはVBなどのインタープリター言語は実行時に変数宣言文も実行文もおなじように上から処理してゆくから。 Cのようなコンパイラ言語はコンパイル時に変数宣言文を処理してゆく。 だからコンパイル時に配列変数のサイズがわかっていないと処理ができない。 JavaもVBと同じだと思う。
- 770 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:09:22 ]
- ここは初心者が鼻息を荒くして入門書読みながらレスしてるのが多くて注意が必要
- 771 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:09:45 ]
- >>765
C99ならできるの?
- 772 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:10:54 ]
- | ( ●)(●) お前みたいな奴は、たとえドラマの役者として
. | (__人__) 起用されても、まともなキャスティングもされずに | ` ⌒´ノ 脇役かエキストラに決まってんじゃん>アホ言うたアホ
- 773 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:12:15 ]
- AA厨も早く寝ろ
今日はお開きだ
- 774 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:15:42 ]
- >>773 (・∀・)キャスキャス
- 775 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:17:05 ]
- いまさらやらない夫のAA貼り付けて喜んでんのかよw
- 776 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:27:41 ]
- >>771
余裕
- 777 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:27:46 ]
- いまさら やらない か?っつか、いまさらキャストも適切に出来ない奴が
初心者相手にいい加減な説明、笑えねぇ〜〜〜〜〜。お前、指導者に向いてねーよ。
- 778 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:13:51 ]
- キャストすると型によってアドレスが変わるプロセッサの話をすると、へんなのを召喚しちゃいますか?
- 779 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:41:39 ]
- それがどうかしたのか?
printf に渡すときの話とはわけが違うぞ?
- 780 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:14:06 ]
- 1バイト文字と2バイト文字が混在してる文字列を
ループ使って1バイトずつputchar()で画面に表示しても ちゃんとどちらも表示されるのは、シェルやプロンプトの方で 何バイト文字か確認して1バイト文字じゃない時は 一度バッファに溜める、とかしてるからですか?
- 781 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:21:01 ]
- ものによるとしか
- 782 名前:780 mailto:sage [2007/07/06(金) 06:49:14 ]
- >>781
例えばどうやって処理してるんですか?
- 783 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 07:35:00 ]
- >>780
いいえ、シェルプログラムはそんなことはしません。
- 784 名前:780 mailto:sage [2007/07/06(金) 07:52:43 ]
- >>783
あ、コンパイラがやってくれてるんですか?
- 785 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:09:19 ]
- >>784
いいえ、勿論コンパイラの知ったこっちゃありません。 もしかしたら、画面表示はシェルプログラムがやっていると思っているんですか? 例えば他のPCにリモートログインしたときには相手先のシェルプログラムが動くわけですが、 そのシェルプログラムが自分の使っているPCの画面を直接アクセスするなんて夢でも見ているんですか?
- 786 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:23:14 ]
- >>780
マルチバイト文字などに関係なく、標準入出力は 行単位バッファリングされていることが多い。 バッファリングなしにしても、まあ正しいマルチバイト文字列になった時点で 正しく表示されると仮定していいと思う。
- 787 名前:780 mailto:sage [2007/07/06(金) 08:24:22 ]
- >>785
ということはOSの画面表示を担当するプログラムが putchar()で2バイト文字の一部を出力しようとした時に 2バイト文字の一部だと判断し表示を一時中断して 次に送られてくるputcharの引数と組み合わせて それに対応する2バイト文字を出力していているんでしょうか?
- 788 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:26:31 ]
- 2バイト文字で、1バイト目単体で文字としてなりたっているようなのってなんかあったっけ?
- 789 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:28:46 ]
- >>788
iso-2022-jpの1バイト目はASCII文字と同じコード。
- 790 名前:780 mailto:sage [2007/07/06(金) 08:30:47 ]
- >>786
行単位でバッファリングするんですね それで予め2バイト文字があるかないか調べるわけですか、なるほど
- 791 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:39:37 ]
- >>789
Shift_JISしか考えてなかった。参考になった ありがとう
- 792 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:41:44 ]
- 文字コードの体系もしっかり管理しときゃ良い。
- 793 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:11:21 ]
- 型で区別するんじゃない?
char型ならその分のデータを受け取るまで待つ
- 794 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:18:02 ]
- ASCIIコード体系でなければ左へ受け流すぅ〜
- 795 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 11:50:43 ]
- 1: 3.2 2.6 3.4 2.1 5.2 3.4 5.2
2.4 4.2 4.1 0.2 4.2 5.3 2: 3.2 2.4 3.4 2.2 5.2 3.4 5.2 2.4 4.2 4.3 0.2 4.2 5.3 3: 3.1 2.6 3.4 2.1 6.2 3.4 5.2 2.4 4.2 4.0 0.2 4.2 5.3 っていうデータがあるとして 10個目(つまり4.3 4.1 ,4.0)だけを抜き出すプログラムをつくれといわれると float型でやりますか?char型でやりますか?
- 796 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:26:17 ]
- 「作れ」っつった本人に仕様を確認する。
- 797 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:03:17 ]
- とりあえず float は使わない。
使うなら double 。
- 798 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:51:36 ]
- つーか、計算もしないし区切りもはっきりしてるなら
文字列のままで通しちゃったほうがいいべ
- 799 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 14:01:23 ]
- >>793
それはない。そんなことしたら、ファイルにリダイレクトできない。 >>791 iso-2022-jpの場合、KanjiInが来た後は2バイト文字、そうでなければAsciiという分け方。 だから2バイト文字の後にKanjiOutが来ないと文字化けする。 >>790 バッファリングはするかもしれないが、出力の判断とは直接的には無縁。 でなければエスケープシーケンスでの制御ができない。
- 800 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 15:41:47 ]
- >>799
>KanjiInが来た後は >KanjiOutが来ないと そんなコード/シーケンスはありません。
- 801 名前:デフォルトの名無しさん [2007/07/06(金) 18:09:25 ]
- Windows2000で作られたソフトはWindowsXPではうまく動作しないことが
あるのですか。LSI C-86を使ってC言語を学ぶという趣旨の本を5年前に 買ったのを今になって勉強しようとしてインストールしたという次第です。 最初のコマンドプロンプトがC:\>になるはずのところ、C:Documents and Settings□□>となりエラーと表示されました。□□は、再起動時に アカウント指定を要求され、自分の名前を入れたものです。 別な場所へインストールすればよいのですか。よろしくお願いします。
- 802 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:15:05 ]
- >>801
LSI-C86は遺物なので、特殊性を理解できていないなら使ってはいけない。 MSのVisualStudioでもgccでも、無料で手に入るほかのコンパイラを使うことをお勧めする。
- 803 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:18:59 ]
- まあコマンドプロンプトをC:\>にしたいなら、cd \ でいいけどな。
本と同じになるだけで、役には立たないだろうけど。
- 804 名前:デフォルトの名無しさん [2007/07/06(金) 18:26:59 ]
- >802 responseありがとうございます。早速入手しようと思います。
- 805 名前:デフォルトの名無しさん [2007/07/06(金) 18:43:58 ]
- ソーカcd¥−enterで続けられるのか。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:59:38 ]
- >>800 の意図が気になる。
- 807 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:03:18 ]
- >>804
たぶん電子メールのレスと2ちゃんのレスは同じ意味を持ってると思うんだが、 だとしたら君が使ってるresponseはレスという意味とは違うぞ
- 808 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:06:00 ]
- >>807
ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B9
- 809 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:37:26 ]
- nullponceというのを提案しまnce
- 810 名前:723 mailto:sage [2007/07/06(金) 19:39:17 ]
- >>729
忘れてた
- 811 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:43:03 ]
- 英語版ウィキペには
Reply. Its abbreviation followed by colon (Re:) is prepended to e-mail subject lines when answering a received message って書いてるんだよな。 まあ、スレ違いだからどうでもいいが。
- 812 名前:デフォルトの名無しさん [2007/07/06(金) 20:22:37 ]
- A)入力装置に関する記述のうち,適切なものはどれか。
1 ジョイスティックは,画面上に透明なセンサを取り付けたものであり,画面に指などを押し付けて座標を指示する。 2 タブレットは,ペンのような装置と板状の装置を組み合わせた入力機器であり,ペンのような装置を押し付けて座標を指示する。 3 ディジタイザは,人間のもつ静電気を利用して指の位置を検出するポインティングデバイスであり,操作面を指して座標を指示する。 4 トラックパッドは,球の一部分が装置の上面に出ているポインティングデバイスであり,球を指で直接回転させて,その変化量で座標を指示する。 すみません、質問なのですが今上の問題がハードウエアの組み込みの 参考書の問題がわかりませんので、教えてはいただけないでしょうか?
- 813 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:25:09 ]
- >>812
2
- 814 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:26:34 ]
-
1はジョイスティックの説明ではない事は明らかだから× 2は正しいと思うから○ 3は知らんから知らん 4はトラックパッドじゃなくてトラックボールの説明だから×
- 815 名前:デフォルトの名無しさん [2007/07/06(金) 20:29:48 ]
- ありがとうございました。
これで先に行けます。
- 816 名前:デフォルトの名無しさん [2007/07/06(金) 20:32:06 ]
- 制御系といえば、C言語だけど
Cのすごい所って何?
- 817 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:01 ]
- 体にぴったり張り付くスク水の用に、ハードウェアに貼り付ける所
- 818 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:40 ]
- >>816
おまえの方がすごいと思う。
- 819 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:58 ]
- 3はタッチセンサとか、タッチスクリーンとか言われている物のうちの1種だね
- 820 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:41:36 ]
- >>812
3の説明がトラックパッドっぽいな
- 821 名前:デフォルトの名無しさん [2007/07/06(金) 20:42:36 ]
- C言語にできることは、C++にもできるって聞いたんだけど、
C++も体にぴったり張り付くスク水のように、 ハードウェアに貼りつけるの??
- 822 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:43:22 ]
- Cと同じようにできる。
- 823 名前:デフォルトの名無しさん [2007/07/06(金) 20:44:46 ]
- C++もC言語と同じように最強ならば、
C++も制御系によく使われるの? それともC++はオープン系(WEB系も含む)?
- 824 名前:デフォルトの名無しさん [2007/07/06(金) 20:47:10 ]
- 質問です。年月日を入力してツェラーの公式を利用して曜日を表示するプログラム
をつくりたいんですけど、BCCでコンパイルしたら公式のところでエラー 「浮動小数点の不正な使用」ってでるんですけど、どうしてだかわかりますかね? #include <stdio.h> int main(void){ int year,month,day; char youbi[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; int i; printf("Year?"); scanf("%d",&year); printf("Month?"); scanf("%d",&month); printf("Day?"); scanf("%d",&day); i=(year + (year/4) - (year/100) + (year/400) + (2.6*month +1.6) + day)%7; printf("It's %s.",youbi[i]); return 0; }
- 825 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:49:26 ]
- >>821
C++の場合スク水フェチのオジサンが自分で着る用に作ったものもあるので注意
- 826 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:56:27 ]
- >>824
(2.6*month +1.6)を(int)(2.6*month +1.6)にしろ。 ここが整数でないから、%の左側全体が整数型でなくなっている。 剰余演算子は浮動小数点数を演算対象にできないので、件のエラーになる。
- 827 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:57:13 ]
- >>823
Cが制御系で使われるのは「最強」だからではなく「高級アセンブラ」だから。 C++も制御系で使われるよ。C++として使われるかはともかく。 つか、最強ってなんだよ。
- 828 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:58:38 ]
- >>824
剰余演算子%というオペランドは整数同士でないとダメ 演算してる行の型がごっちゃになってるから明示的にキャストしたり読みやすくすべき 基本的にコメント文とかで説明もなしに実数を整数に叩き込んだりしちゃだめ
- 829 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:19:14 ]
- なるほど。できました、ありがとうございます。
- 830 名前:デフォルトの名無しさん [2007/07/06(金) 21:30:26 ]
- スレ違いかもだけど、ここの人達他のスレより頼りになりそうなので。。。
基本情報の午後問をCで受かりたいのですが、なんの本を読めばいいですか? 当方、C言語はよくわかりません。COBOLは少しできます。 ただCで受けたいのです。
- 831 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:32:10 ]
- >>830
試験は慣れたものでやるべき
- 832 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:58:20 ]
- >>830
アセンブラがオススメ 例年一番簡単
- 833 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:59:06 ]
- C言語ってeclipceかbolandか、
それともvisual basic かどれでやればいいですか?
- 834 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:04:13 ]
- その質問おもしろい?
- 835 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:10:25 ]
- visual studioだっけ?
- 836 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:12:46 ]
- >>833
Linuxでもできるよ。
- 837 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:14:19 ]
- 整数型配列は
int iarray[10]; memset(iarray, 0, sizeof(array)); ですべて0で初期化できると知ったのですが、 実数型配列を double darray[10]; memset(darray, 0.0, sizeof(array)); のように初期化してもかまいませんか? つまり実数型配列の全ての要素を0.0にしたいのです
- 838 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:16:31 ]
- >>837
いいんじゃね? DirectXとか、そういう方法で、実数やらポインタやらバリバリクリアしてたな。 移植性は無くなる。
- 839 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:17:55 ]
- > memset(darray, 0.0, sizeof(array));
あ、これは、警告かエラーになるな。 sizeof のところはミスだよね?
- 840 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:19:54 ]
- >>837
ANSI/ISO Cへの移植性を望むなら避けるべき。 浮動小数点数がIEEE 754に則っていることを仮定してよいなら構わない。
- 841 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:21:17 ]
- >>833
ほとんどにアルゴリズムの問題 ポケコンのCインタプリタでおk
- 842 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:26:29 ]
- >>839
あと、0.0 は 0 だな。
- 843 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:27:49 ]
- >>839
すみません sizeof(darray) です あとmanページでmenset関数を調べてみると #include <string.h> void *memset(void *buf, int ch, size_t n); となっていたので int ch に0.0と渡してもだめなんですね ということは関数の仕様上は memset(darray, 0, sizeof(darray)); と書くのが正しくて、 しかもCコンパイラの浮動小数点がIEEE754前提での使い方なので 結局は配列の要素数の分だけループで回して初期化するのが 一番いちゃもん言われにくいということでよろしいでしょうか? ありがとうございました
- 844 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:29:23 ]
- エクセス64で 0 ってどうなるの?
|

|