忍者ブログ
読みは「うじろぐ」。ご利用は自己責任で。忍者ブログにも広告が出るようになって残念。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ループを使ったプログラムで、今何回目のループを計算しているのか表示させたい時、 普通にループ回数を表示させるとコンソールが埋め尽くされてしまいます。
なので、こんな感じの表示をさせる方法を紹介(スタート押すと開始)
 
PR
「計算後に窓が閉じてしまう」、「プログラムを途中で一時停止したい」の対処法。(Windows)
コンソール(DOS窓)に結果を出力するプログラムを作っていると、終了後に窓が閉じてしまいます。
コレを防ぐには、pauseコマンドを利用するのが便利。
ちょっと暇が出来たので、
今まで使ってきたC言語のソースを見直してみました。
同じ計算式をひたすらループするプログラムなのですが、
2乗の計算にもpow関数を使ってたんです。
pow( pow( a, 2) - b, 2) 、こんな感じで。
これを
(a * a - b) * (a * a - b)
と変更したら早い早い!
今までの計算時間が悲しくなってきたよ。

ランダムソートというと冗談のようですが
ようは配列のシャッフルをC言語で行う方法。


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
    int i, j, r;
    int N[10];
    int N1[10];
    for( i=0; i<10; i++ ){
        N[i] = i+1;
    }
    srand( (unsigned)time(NULL) );
    for( i=0; i<10; i++ ){
        r = rand() % (10-i);
        N1[i] = N[r];
        for( j=r; j<10-i-1; j++ ){
            N[j] = N[j+1];
        }
    }
    for( i=0; i<10; i++ ){
        printf("%d\n",N1[i]);
    }
}


これで配列Nの中身をシャッフルした結果が配列N1に入るはず。
乱数の精度とかはシラネ。
もっとスマートなやり方があったら教えて。


2011/07/09 追記
もっとスマートなやり方があった。
http://file.ujilog.blog.shinobi.jp/main.html#tagC6


ブログ内検索
バーコード
アクセス解析
Powered by ニンジャブログ  Designed by ゆきぱんだ
Copyright (c) 氏ログ All Rights Reserved
忍者ブログ / [PR]