アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の課題丸投げ

5×5の魔方陣を作成するという課題なのですが、手順があります。

(1)配列を用意する

(2)配列を初期化(0クリア)する。

(3)配列添字にスタート位置をセットする。

(4)法則に従い、配列に魔方陣データをセットする

(5)配列を画面に表示する
 (二重ループ)

以上です。わかる方がいたらお手数ですが、ソースコードだけでいいので、教えてください。

お願いします。

A 回答 (10件)

> このようなニーズが多いので、宿題代行サービスが、


> 事業として成り立つなら、それもよいかと考えています。

私も同様のことを考えたことがありますが、
問題の難度が低いと「世の中の答えたくてしょうがない人々」により
回答が無料で与えられてしまいますし、
難度が高いと環境の設定など手間と時間がかかりますし、有料に
するとサポートの問題が出てくるのでかなりの高額になるかと。

でも、単純な言語の文法上の問題で、保障無しということならば、
1日以内に必ず有識者の回答が得られるという条件なら1,000円から
3,000円の範囲で払ってよいかと私は思います。

でも、学生はこんなサービスを利用しないで、この便利なネットを
使って情報収集して問題を自力解決すべきですね。
    • good
    • 0
この回答へのお礼

ごもっともですね、ごめんなさい。もうネットに勉強を丸投げするのはやめます。

お礼日時:2010/11/17 08:49

質問者様への質問です。


このようなニーズが多いので、宿題代行サービスが、事業として成り立つなら、
それもよいかと考えています。
参考までに、もし、宿題代行サービスがあるとして、この課題をきちんとやってくれるなら、
いくらまでなら支払っても良いと考えてますでしょうか。
(もちろん、只じゃないとやだ!というのでかまいません)
    • good
    • 0

プログラムをつくる前にまず魔方陣の法則つまり方法知ることですね


いろいろな方法がありますが 自由度のかなり高いものとしては

A B C D E に 1 2 3 4 5 を任意の順序で割り当て
F G H I J に 0 5 10 15 20 を任意の順序で割り当て
前者は二つずらしの循環で方陣を作り
後者は三つずらしの循環で方陣を作り
この方陣を行列として加算すれば5×5の方陣ができあがる

プログラムコードでは前者と後者に対して配列を各ひとつ合計 配列を二つ作り
この二つの配列を加算して その二つの配列を表示すれば終了です



A B C D E

C D E A B

E A B C D

B C D E A

D E A B C

+


F G H I J

I J F G H

G H I J F

J F G H I

H I J F G
    • good
    • 0

もちろんネタの回答しかしていません


おそらく法則は斜め上に値を埋めていくやつでしょう
    • good
    • 0
    • good
    • 0

こういうこと?



int array[5][5] = { 0 }; // (1)および(2)
for (int i = 0; i < 5; i++) // (3)
 for (int j = 0; j < 5; j++) // (3)
  array[i][j] = 法則(i, j); // (4)
for (int i = 0; i < 5; i++)
 for(int j = 0; j < 5; j++)
  画面に表示(i, j, array[i][j]); // (5)

法則不明ですし、処理系不明のために画面への表示方法もわかりません。
    • good
    • 0

法則が課題側で指定されているのでしたら、


それを知らない人に解けというのは無理があるのでは……。

一般的によく知られる法則による魔方陣の作り方ならば
適当にぐぐればいくらでもサンプルが出てくるのでソースコードは割愛いたしますが、
それでも細かい手順に差異などがありますので、改造は必要かと思いますよ?

書けというのならば大した手間ではないので書きますが、
4の条件が不明なので提出できるものにはならないと思います。
もちろん自分だけではなく、他の皆さんも含めて。
    • good
    • 0

(4)で下の関数を呼び出す


/*****
square[y][x]を1にした5x5の魔法陣を作ります
*****/
int magic_square(int square[5][5], int x, int y)
{
int array_1[5] = {1,2,3,4,5};
int array_2[5] = {0,5,10,15,20};
int magic_square_array_1[5][5] = {
0,1,2,3,4,
2,3,4,0,1,
4,0,1,2,3,
1,2,3,4,0,
3,4,0,1,2,
};
int magic_square_array_2[5][5] = {
0,1,2,3,4,
3,4,0,1,2,
1,2,3,4,0,
4,0,1,2,3,
2,3,4,0,1,
};
int j, k;
int start;
int swap;

if (x < 0 || x > 4 || y < 0 || y > 4)
{
return -1;
}
start = magic_square_array_1[y][x];
swap = array_1[start];
array_1[start] = array_1[0];
array_1[0] = swap;
start = magic_square_array_2[y][x];
swap = array_2[start];
array_2[start] = array_2[0];
array_2[0] = swap;
for (j = 0 ; j < 5 ; j++) {
for (k =0; k< 5 ; k++) {
square[j][k] = array_1[ magic_square_array_1[j][k] ] + array_2[ magic_square_array_2[j][k] ];
}
}
return 0;
}
    • good
    • 0

ccccc


ccccc
ccccc
ccccc
ccccc
    • good
    • 0

Cは最近使っていないので確かではありませんが、おおよそ次のようになると思います。


また魔方陣の法則も知りませんから適当に書いておきます。動作確認はしていません。

int mahojin[5][5];

main()
{
int x,y,j,k;
int shokichi = 1; /*1じゃ無いかも?*/

/*初期化*/
 for (j = 0 ; j < 5 ; j++) {
  for (k =0; k< 5 ; k++) {
      mahojin[j][k] = 0;
    }
 }

 /*開始位置の入力*/
 printf("スタートの横位置を入力してください");
 x = gethchar();
 printf("スタートの縦位置を入力してください");
 y = getchar();

 mahojin[x][y] = shokichi;
 for (k = 1 ; k < 25 ; k++) {
/* 法則にしたがって配列に魔方陣データをセットする 。 例えば*/
     x++;if (x > 4 ) x = 0;
     y--;if (y < 0 ) y = 4;
     mahojin[x][y] = shokichi++;
 }

 /*表示する*/
 for (j = 0 ; j < 5 ; j++) {
   for (k =0; k< 5 ; k++) {
    printf("%02d",mahojin[j][k]);
   }
   printf("\n");
 }
 printf("\n");
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!