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


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

C言語なら俺に聞け(入門篇) Part 15



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/

582 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:48:29 ]
>>581
過去ログを読む気がないのなら、やりたいことを具体的に書け。
どんなデータをどう入れたいのか判らんことには答えようがない。

583 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:48:39 ]
*(int*)配列名

584 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:49:50 ]
>>583
バスエラーの可能性ががが

585 名前:デフォルトの名無しさん [2007/07/03(火) 11:55:18 ]
c[0]+(c[1]<<8)+(c[2]<<16)+(c[3]<<24)

586 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:56:39 ]
union使うとか

587 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 11:57:53 ]
>584
配列の0から3でもバスエラーって発生するもんなの?

588 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:00:28 ]
>>587
char配列がint安全な場所に作られる保証はない。
その点ではunionの方がまし。
しかし、unionには言語仕様的に実装依存の罠が。
そういう意味では>585でいいのだがエンディアンの問題が残る。

まぁ、最近のコンパイラならどれで書いても同じようなコードを吐くしね。

589 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:11:23 ]
>>588
そういやこういう場合かもしれんしな。

#include <stdio.h>
#include <stddef.h>

int main() {
struct A {
char a;
char b[4];
};

printf("%ld\n", offsetof(struct A, b));
}

590 名前:581 mailto:sage [2007/07/03(火) 12:30:43 ]
>>583
一番簡潔なのですがかなり難解です。これから考えます。
>>585
一番分かり易いです。

unionの使い方に悩みましたがcharの配列と一つのintのメンバ変数を用意して
charの配列にデータを入れてintのメンバ変数でアクセスすればいいのですね。面白い。



591 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:36:02 ]
GCC で試した所、
-O (最適化レベル1か、それ以上)
-funroll-loops (ループ展開最適化)
フラグを立てると >>585 みたいなコードを吐いてくれるみたいだ。

int toInt(const char* ch) {
union {
char ch[sizeof (int)];
int i;
} endian;

int i;
int shift, dshift;
int n = 0;

endian.i = 0;
shift = *endian.ch ? 0 : (sizeof (int) - 1) * CHAR_BIT;
dshift = *endian.ch ? CHAR_BIT : -CHAR_BIT;
for(i = 0; i < sizeof (int); i++) {
n |= ch[i] << shift;
shift += dshift;
}
return n;
}

592 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 14:59:59 ]
最近、関数のメモリの場所をポインタで取得できることを知ったのですが、
これを利用してデリゲートまがいなことってできませんかね?

593 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 15:00:37 ]
qsort() とか使ったことない?

594 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 15:41:43 ]
int a, b;
があって両者の絶対値の大きさを比較したいとき
自乗した値を比較するのとabs()を使うのではどちらが速いのでしょう?
自乗してもintの範囲を超えないことは保証されているという前提で。

またこういったベンチマークテストはどうやって行うのでしょう?

595 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:02:53 ]
数百万回〜数億回くらい実行して、速度を比較する。

596 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:15:19 ]
>>594
こんなコードを書いてみる。
#include <stdio.h>
#include <stdlib.h>

int main()
{
volatile int a;
volatile int b;
for (int ic = 0; ic < 100 * 1000 * 1000; ++ic) {
#if 1
volatile int c = abs(a) > abs(b);
#else
volatile int c = a * a > b * b;
#endif
}
return 0;
}
こいつをこんな感じで実行してみる。
$ gcc foo.c -std=c99 -O3 ; time ./a
foo.c: In function `main':
foo.c:11: warning: unused variable `c'

real 0m0.734s
user 0m0.687s
sys 0m0.047s
意外にも、abs()の方が遅かった。

597 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:18:21 ]
abs は条件判定が必要だからな。

598 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:34:10 ]
あー、volatile宣言のお蔭で、参照回数の影響も出ちゃった。
よって一部訂正。
#if 0
int aa = a; int bb = b;
volatile int c = abs(aa) > abs(bb);
#else
int aa = a; int bb = b;
volatile int c = aa * aa > bb * bb;
#endif
今回は大勢に影響はなかったけど。
で、ついでに-Sでアセンブリ出力を眺める。二乗版はこんだけ。
movl -4(%ebp), %eax
movl -8(%ebp), %edx
imull %eax, %eax
imull %edx, %edx
cmpl %edx, %eax
setg %dl
movb %dl, -9(%ebp)
abs()版はどうしても条件分岐しないためにビット操作であれこれ捻り過ぎ。
movl -8(%ebp), %edx
movl -12(%ebp), %eax
movl %edx, %ecx
sarl $31, %ecx
xorl %ecx, %edx
subl %ecx, %edx
movl %eax, %ecx
sarl $31, %ecx
xorl %ecx, %eax
subl %ecx, %eax
cmpl %eax, %edx
setg %dl
movb %dl, -13(%ebp)

599 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:50:59 ]
バイナリーサーチというものをやる場合
データが小さい順もしくは大きい順に並んでなかったらできない?
つまりめちゃくちゃなデーターがあったら一旦それをバブルソートなどで整列させないとダメってことですか?

600 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:51:52 ]
そう。



601 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:52:21 ]
わざわざバブルソートを選択する理由も無いけどな

602 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 16:52:46 ]
>>599
その通りです
バブルソートである必要はありませんが…

603 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:00:04 ]
バブルソート突っ込まれ過ぎワロタ

604 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:19:51 ]
>>599
揃っているからこそのバイナリサーチじゃないか。
って、仕組み見たら一目瞭然だと思うが・・・・・

で、バブルソートである意味はない。

でも、ふと思ったのは、必要なものをすべて見つける必要はなくて
一つ見つければいいというのであれば、動的に必要な部分だけ
ソートしながら利用するっていう使い方もあるのかな、と思った。

レイトバインディングのように、対象要素が大きくて
ソートの初期化コストが大きかったり頻繁に要素が追加されるという状況で使えないかな?
それともそういう場合はB-Treeとかを使っておくべき?(追加のコストによるのかな?)

605 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 19:08:21 ]
#include いろいろ
struct list{
int data;
struct list *next;
};
void showlist();
int main(void){
int indata,i,j;
struct list *head,*test;
head=NULL;
while(1){
printf("数を入力(終了は0)>");scanf("%d",&indata);
if(indata==0)
break;
test=(struct list*)malloc(sizeof(struct list));
test->data=indata;
test->next=head;
head=test;
}
showlist();
return 0;
}
void showlist(){
struct list *now;
while (now!=NULL){
printf("%d ",now->data);
now=now->next;
}
};

構造ポインタで次々入力しshowlistで表示するというのを作ったんだけど
これ実行したら、mainのreturn 0の上のshowlistがプロトタイプ宣言が無いと警告でるんですがどうしたらいいですか?

606 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 19:25:05 ]
void showlist(void);
         ↑型を入れる

607 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 20:14:24 ]
#include <stdio.h>

void inputdata(int data[],int n);

int main(void){
int x[10];
inputdata(x,10);
return 0;
}

void inputdata(int data[],int n){//inputdata関数
int i;
for(i=0;i<n;i++){
printf("Input data>");
scanf("%d",&data[i]);
}
for(i=0;i<n;i++){
printf("data[%d]=%d",i,*data[i]);
}
}

C言語について質問です
配列x[0]〜x[9]のそれぞれに値を入れて表示するというinputdata関数を作ってみたいんですが
これ動きません。どのように関数を直せばよいのでしょうか?

608 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 20:19:42 ]
int *data[]

609 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 20:34:33 ]
printf("data[%d]=%d",i,*data[i]);

printf("data[%d]=%d",i,data[i]);

610 名前:デフォルトの名無しさん [2007/07/03(火) 20:55:02 ]
2^8は65,536でしょうか?



611 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 20:58:26 ]
それくらいぐぐれよ
www.google.co.jp/search?q=2%5E8

612 名前:デフォルトの名無しさん [2007/07/03(火) 21:09:46 ]
さんkyさう

613 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:15:15 ]
つーかプログラミング勉強してる奴が電卓の使い方も(その存在も?)和歌ランとは・・・

614 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:19:11 ]
小学生なんだろ。

615 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:47:58 ]
2^8 = 16^2 = 0xFF

616 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:52:29 ]
二次元配列で構造体を使って
その中身の計算に
違う二次元配列の中身を用いないといけないんだけど
すげーキレそう

617 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:57:59 ]
ゆとりは相変わらずキレやすいな。

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番目の要素が同一かどうか調べて、同一なら上書きすればいい(例だと、消去してる?)






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

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

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