掲示板利用宣言

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

 私は

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

掲示板2

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

No.25248

質問です
投稿者---naoya(2006/01/12 16:21:20)


NXNのint型正方行列を90度左回転するプログラムを考えています。一応関数だけ考えることができたのですが、main文の方の考え方がよく分かりません。考え方を教えてくださるとありがたいです。

#define N 64
typedef int matrix_t[N][N]

void naive_rotate(matrix_t src,matrix_t dst){
int i,j;
for(i = 0;i < N;i++)
for(j = 0;j < N;j++)
dst[N-1-j,i] = src[i,j];
return;
}
ここまでかんがえることができました。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:質問です 25249 iijima 2006/01/12 16:44:26


No.25249

Re:質問です
投稿者---iijima(2006/01/12 16:44:26)


こんなの。

int main( void )
{
    matrix_t s;
    matrix_t d;
    
    sの各要素にデータを設定する。

    naive_rotate( s, d ); // 左回転

    dを使って何かする。

    return 0;
}


> ここまでかんがえることができました。

しかし、それではコンパイルできないのでは?
多次元配列の要素の参照方法([]の使い方)が間違ってます。

# 「掲示板利用宣言」の各事項も遵守してください。



この投稿にコメントする

削除パスワード

No.25315

Re:質問です
投稿者---naoya(2006/01/14 13:18:39)


考えた結果行列の左回転のプログラムはこんなのになりました。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "clock.h"

#define N 64
typedef int matrix_t[N][N];

void naive_rotate1(matrix_t,matrix_t);


void naive_rotate1(matrix_t src,matrix_t dst) {
int i,j,t;
t = N-1;
for(i = 0;i < N;i++)
for(j = 0;j < N;j++)
dst[t-j][j] = src[i][j];
return;
}


int main(void) {
int i,j;
matrix_t a,b;
double d;
srand((unsigned) time(NULL));
for(i = 0;i < N;i++)
for(j = 0;j < N;j++)
a[i][j] = 1;

start_counter();
naive_rotate1(a,b);
d = get_counter();
printf("time1 = %f\n",d/N/N);
return 0;
}

サイクルカウントをはかって見ました。これからさらに高速化をめざしているのですが、考えてもなかなかいい案が思いつきません。いい高速化の方法があればおしえていただけると幸いです。


この投稿にコメントする

削除パスワード

No.25318

Re:質問です
投稿者---iijima(2006/01/14 14:25:17)


サイクルカウントとはなにをどう測ったものか分かりませんが、なんにせよ、
たかだか64×64の正方行列ですから、naive_rotate1関数の処理速度が
問題になるようには見えないんですがねぇ。
何が問題でどの程度改善することを目標としているのでしょうか?

# 高速化を考えるのがムダとは言いませんが、現段階では、先に勉強すべき
# ことがまだたくさんあるんじゃないでしょうか。
# それから、「掲示板利用宣言」の各事項も遵守してください(2回目)。
# Jリーグだとイエローカード3回で退場だったかな。


この投稿にコメントする

削除パスワード

No.25324

Re:質問です
投稿者---Blue(2006/01/14 14:41:10)


># Jリーグだとイエローカード3回で退場だったかな。
退場になるのは1試合に2回ですよ〜。
出場停止ならば累積枚数4枚ですけど。

と、どうでもいい話w

http://www.ziyu.net/~rent/tree/wforum.cgi?id=C_lan&mode=all_read&no=2954&page=0
も見といてくださいね(別人だとしても)>naoyaさん


この投稿にコメントする

削除パスワード

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