1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5625

教えていただけると…
投稿者---フール(2006/04/18 15:18:43)


6桁の番号がありその後ろにカンマで区切られて名前などがあるファイルを読み出して6桁の番号でソートして
10個のデータずつ表示させる物が作りたいのですがソートして10個のデータを表示させる事ができないので
誰か教えていただけませんか?



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:教えていただけると… 5626 Blue 2006/04/18 15:42:56
<子記事> Re:教えていただけると… 5627 RiSK 2006/04/18 16:27:22
<子記事> Re:教えていただけると… 5628 フール 2006/04/18 17:09:50


No.5626

Re:教えていただけると…
投稿者---Blue(2006/04/18 15:42:56)


とりあえず、掲示板利用の規則
> 題名と投稿者名は具体的に書きます。
> 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
は守ってください。

ファイルにはどれぐらいのデータがありますか?
> ソートして10個のデータを表示させる事ができない
ということはそれ以外はできるのでしょうか?

できているところまでのソースを提示されると、もっと有効なアドバイスがもらえるかもしれません。



この投稿にコメントする

削除パスワード

No.5627

Re:教えていただけると…
投稿者---RiSK(2006/04/18 16:27:22)


>ソートして10個のデータを表示させる事ができないので
>誰か教えていただけませんか?

(何かを基準に)ソートして,(とにかく)10個のデータを表示するプログラム。
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int c(const void*a,const void*b){return memcmp(a,b,6);}
int main(void){
    char s[20][128]={
        "9a","8b","7c","6d","5e","4f","3g","2h","1i","0j",
        "9k","8l","7m","6n","5o","4p","3q","2r","1s","0t",
    };
    int i=10;
    for(qsort(s,20,sizeof(char[128]),c);i--;puts(s[10-i]));
}



この投稿にコメントする

削除パスワード

No.5628

Re:教えていただけると…
投稿者---フール(2006/04/18 17:09:50)


データは最大1000000で6桁の番号を元にソートしたいです
OSは2000でヴィジュアルスタジオを使っています


この投稿にコメントする

削除パスワード

No.5629

Re:教えていただけると…
投稿者---Blue(2006/04/18 17:23:42)


> データは最大1000000
となると、結構難しそう。
(開くのだけでもおもそう。そこいらのエディタでもちょっと時間かかるかな。)
最大1000000で6桁の数値ということはかぶったら順番はどうなるのでしょうか?

ソースの提示はないようですが、どこまでできているのでしょうか?


この投稿にコメントする

削除パスワード

No.5630

Re:教えていただけると…
投稿者---Blue(2006/04/18 17:26:06)


> 最大1000000で6桁の数値ということはかぶったら順番はどうなるのでしょうか?
0から始めればかぶりませんでしたね。。。000000〜999999(1000000行)


この投稿にコメントする

削除パスワード

No.5631

Re:教えていただけると…
投稿者---Blue(2006/04/19 00:37:08)


適当。間違っていてもヒントにはなるかと。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define MAX_ROW   1000000
#define MAX_COL   256
#define NUM_DIGIT 6

int compline( const void* x, const void* y ){
    return strncmp( *( const char** )x, *( const char** )y, NUM_DIGIT );
}

int main( void ){
    FILE* fp; int row = 0, i; char** lines; char buff[ MAX_COL ];
    // file open
    if ( !( fp = fopen( "Test.csv", "r" ) ) ){ puts( "Not Open File." ); return -1; }
    // file read
    lines = ( char** )malloc( MAX_ROW * sizeof( char* ) );
    while ( fgets( buff, sizeof( buff ), fp ) ){
        lines[ row++ ] = _strdup( buff );
    }
    // file close
    fclose( fp );
    // line sort
    qsort( lines, row, sizeof( char* ), compline );
    // line show
    for ( i = 0; i < row; i++ ){
        printf( "%s", lines[ i ] ); free( lines[ i ] );
        if ( ( i + 1 ) % 10 == 0 ) puts( "-----------------------" );
    }
    free( lines );
    return 0;
}



この投稿にコメントする

削除パスワード

No.5632

Re:教えていただけると…
投稿者---フール(2006/04/19 11:12:03)


ありがとうございます
大体こんな感じです
本来はもっと条件等あるんですが
後はもう少し自力でがんばってみます


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ