掲示板利用宣言

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

 私は

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

掲示板2

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

No.29454

並べ替えのプログラミングを教えてください
投稿者---ノート(2007/01/17 01:40:49)


この問題がまったく分かりません。どなたか教えてください。

・25個の値をrand()関数によって発生させ、一旦配列に格納する(値の範囲は1から100まで)
・それらの値を並べ替えて、別の配列に格納する
・ソート順は、昇降か降順のいずれで行うかメニューを表示し、入力によって指示出来るようにする
・元の値とソート後の値の両方を表示し、同じ内容をファイルにも出力する
・実行結果には、出力したテキストファイルの内容も記載する
・自作関数を使う
・これらの値の合計値も求める



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:並べ替えのプログラミングを教えてください 29456 επιστημη 2007/01/17 02:52:42
<子記事> Re:並べ替えのプログラミングを教えてください 29459 円零 2007/01/17 12:00:56
<子記事> Re:並べ替えのプログラミングを教えてください 29464 RiSK 2007/01/17 15:01:50
<子記事> Re:並べ替えのプログラミングを教えてください 29511 ルナレルナ 2007/01/20 04:12:18
<子記事> Re:並べ替えのプログラミングを教えてください 29512 ルナレルナ 2007/01/20 04:16:38


No.29456

Re:並べ替えのプログラミングを教えてください
投稿者---επιστημη(2007/01/17 02:52:42)
http://blogs.wankuma.com/episteme/


一行も書けないってことはないでしょう。
もしそうなら、質問の前に学習することが山とあります。

書けるだけ書いて、そのうえでなにがわからないのか明らかにしてください。
掲示板利用宣言にあるとおり、課題の丸投げはご法度です。



この投稿にコメントする

削除パスワード

No.29459

Re:並べ替えのプログラミングを教えてください
投稿者---円零(2007/01/17 12:00:56)


これはどういう意味ですか?
>・実行結果には、出力したテキストファイルの内容も記載する

結果を出力した時点で、ファイルと標準?出力の表示装置に「記載」されているのに、
もう一回同じものを打ち出せということでしょうか。


この投稿にコメントする

削除パスワード

No.29464

Re:並べ替えのプログラミングを教えてください
投稿者---RiSK(2007/01/17 15:01:50)


疲れた〜。たぶんもっと縮むけど,ここでbreak;
Windows XP/VC6では動いた。
a[25],b[25],c,d,e="out.txt";
// ・自作関数を使う
f(int*a){return*1[&a]-*a;}g(int*a){return*a-*1[&a];}
h="%3d%4d\n",i;
main(){
    // ・25個の値をrand()関数によって発生させ、一旦配列に格納する(値の範囲は1から100まで)
    for(srand(time(0));c-25;i+=a[c++]=rand()%100+1);
    // ・それらの値を並べ替えて、別の配列に格納する
    // ・ソート順は、昇降か降順のいずれで行うかメニューを表示し、入力によって指示出来るようにする
    memcpy(b,a,100);
    scanf("%c",&c,printf("a(scending)/d(escending)?"));
    qsort(b,25,4,c-'a'?f:g);
    // ・元の値とソート後の値の両方を表示し、同じ内容をファイルにも出力する
    for(c=fopen(e,"w");d-25;++d)printf(h,a[d],b[d]),fprintf(c,h,a[d],b[d]);
    // ・実行結果には、出力したテキストファイルの内容も記載する
    for(fclose(c),c=fopen(e,"r");~(d=fgetc(c));)putchar(d);
    // ・これらの値の合計値も求める
    printf("sum=%d\n",i);
}



この投稿にコメントする

削除パスワード

No.29483

Re:並べ替えのプログラミングを教えてください
投稿者---ノート(2007/01/18 21:29:23)


大変申し訳ありません。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.29509

Re:並べ替えのプログラミングを教えてください
投稿者---RiSK(2007/01/19 23:04:50)


>大変申し訳ありません。

分かったときに謝るのでは?
なぜ,質問に答えないの?分かってないじゃん。


>ありがとうございました。

私のコードを提出しちゃだめだよ。


この投稿にコメントする

削除パスワード

No.29511

Re:並べ替えのプログラミングを教えてください
投稿者---ルナレルナ(2007/01/20 04:12:18)
http://park6.wakwak.com/~nougaki/mini_program/


//
//	ルナレルナ作
//

#include <stdio.h>
#include <stdlib.h>

void input(int data[], const int n);
void copy(const int data[], int data2[], const int n);
void output(const int data[], const int n);
void f_output(const int data[], const int n, FILE *out);
void sort_up(int data[], const int n);
void sort_down(int data[], const int n);
int get_sum(const int data[], const int n);

int main(void)
{
    int data[25], data2[25];
    int i, j, n;
    int f, tmp;
    int sum;
    FILE *out = stdout;
    
    n = sizeof data / sizeof data[0];
    
    input(data, n);
    copy(data, data2, n);
    
    do {
        puts("sort up:u down:d");
        f = getchar();
    } while (f != 'u' && f != 'd');
    
    if (f == 'u')
        sort_up(data2, n);
    else
        sort_down(data2, n);
    
    output(data, n);
    f_output(data, n, out);
    
    output(data2, n);
    f_output(data2, n, out);
    
    printf("%d", sum = get_sum(data, n));
    fprintf(out, "%d", sum);
    return 0;
}


void input(int data[], const int n)
{
    int i;
    
    for (i = 0; i < n; i++)
        data[i] = rand() % 100 + 1;
}


void copy(const int data[], int data2[], const int n)
{
    int i;
    
    for (i = 0; i < n; i++)
        data2[i] = data[i];
}


void output(const int data[], const int n)
{
    int i;
    
    for (i = 0; i < n; i++)
        printf(" %d", data[i]);
    putchar('\n');
}


void f_output(const int data[], const int n, FILE *out)
{
    int i;
    
    for (i = 0; i < n; i++)
        fprintf(out, " %d", data[i]);
    putc('\n', out);
}


void sort_up(int data[], const int n)
{
    int i, j;
    int tmp;
    
    for (i = 0; i < n - 1; i++)
        for (j = n - 1; j > i; j--)
            if (data[j] < data[j - 1]) {
                tmp = data[j];
                data[j] = data[j - 1];
                data[j - 1] = tmp;
            }
}


void sort_down(int data[], const int n)
{
    int i, j;
    int tmp;
    
    for (i = 0; i < n - 1; i++)
        for (j = n - 1; j > i; j--)
            if (data[j] > data[j - 1]) {
                tmp = data[j];
                data[j] = data[j - 1];
                data[j - 1] = tmp;
            }
}


int get_sum(const int data[], const int n)
{
    int sum = 0;
    int i;
    
    for (i = 0; i < n; i++)
        sum += data[i];
        
    return sum;
}



この投稿にコメントする

削除パスワード

No.29512

Re:並べ替えのプログラミングを教えてください
投稿者---ルナレルナ(2007/01/20 04:16:38)
http://park6.wakwak.com/~nougaki/mini_program/


//
//	ルナレルナ作(非関数版)
//

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int data[25], data2[25];
    int i, j, n;
    int f, tmp;
    int sum;
    FILE *out = stdout;
    
    n = sizeof data / sizeof data[0];
    
    for (i = 0; i < n; i++)
        data[i] = rand() % 100 + 1;
        
    for (i = 0; i < n; i++)
        data2[i] = data[i];
    
    do
        f = getchar();
    while (f != 'u' && f != 'd');
    
    if (f == 'u') {
        for (i = 0; i < n - 1; i++)
            for (j = n - 1; j > i; j--)
                if (data2[j] < data2[j - 1]) {
                    tmp = data2[j];
                    data2[j] = data2[j - 1];
                    data2[j - 1] = tmp;
                }
    }
    else {
        for (i = 0; i < n - 1; i++)
            for (j = n - 1; j > i; j--)
                if (data2[j] > data2[j - 1]) {
                    tmp = data2[j];
                    data2[j] = data2[j - 1];
                    data2[j - 1] = tmp;
                }
    }
    
    for (i = 0; i < n; i++)
        printf("%d ", data[i]);
    putchar('\n');
    
    for (i = 0; i < n; i++)
        printf("%d ", data2[i]);
    putchar('\n');
    
    for (i = 0; i < n; i++)
        fprintf(out, "%d ", data[i]);
    putc('\n', out);
    
    for (i = 0; i < n; i++)
        fprintf(out, "%d ", data2[i]);
    putc('\n', out);
    
    for (i = 0; i < n; i++)
        sum += data[i];
        
    printf("%d", sum);
    fprintf(out, "%d", sum);
    
    return 0;
}



この投稿にコメントする

削除パスワード

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