No.3ベストアンサー
- 回答日時:
なるほど、そういう意味でしたか^^
C99だと可変の配列サイズを渡せるのでしたよね?
だから、10に固定にせずに変数で渡すほうがいいのでは?
====
#include <stdlib.h>
int setsym(int n, int t[n][n])
{
int i, j;
for (i = 0; i < n; ++i) {
t[i][i] = 0;
for (j = 0; j < i; ++j)
if ((float)rand() / RAND_MAX <= 0.2) t[i][j] = t[j][i] = 0;
else t[i][j] = t[j][i] = 1;
}
}
int main(void)
{
int a[10][10];
setsym(10, a);
}
No.2
- 回答日時:
質問の意味がもう一つはっきりしませんが、ある次元の配列で、
値が0または1である対称な行列をすべて作りたいというのなら、
たとえば、以下のようにすればいいのではないですか?
対称だというのだから、ほんとは、N*(N+1)/2個の要素しか必要なくて、
N*(N+1)/2 個の要素に 0 か 1 を設定すれば、それで終わりなのですが。。
====3x3の行列
#include <stdio.h>
#define N 3
void print(int a[][N])
{
int i, j;
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j)
printf("%d ", a[i][j]);
putchar('\n');
}
printf("---------------\n");
}
void assign(int a[][N])
{
int i, j;
for (i = 0; i < N; ++i)
for (j = i + 1; j < N; ++j)
a[j][i] = a[i][j];
}
void set(int i, int j, int a[][N])
{
if (i == N - 1 && j == N - 1) {
a[i][j] = 0;
assign(a);
print(a);
a[i][j] = 1;
assign(a);
print(a);
} else {
int ii, jj;
if (j < N - 1) {
ii = i; jj = j + 1;
} else {
ii = i + 1; jj = ii;
}
a[i][j] = 0;
set(ii, jj, a);
a[i][j] = 1;
set(ii, jj, a);
}
}
int main(void)
{
int a[N][N];
set(0, 0, a);
}
お答えありがとうございました。参考にさせていただいて以下のように作成しました。アドバイスありがとうございました。
int (int T[10][10]){
int x,i,j,count=1;
float r;
for(i=0;i<10;i++)
{
for(j=0;j<count;j++)
{
r = ((float)rand() / 32768.0);
if(i==j) T[i][j] = 0;
else
{
if(r <= 0.2)
{
T[i][j] = 1;
T[j][i] = 1;
}
else
{
T[i][j] = 0;
T[j][i] = 0;
}
}
}
count++;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) セルを参照して条件で値をコピーする 3 2023/02/08 17:45
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
へんな現象
-
std::set<int> で、ある値が何...
-
C言語でシグマで総和を求める関...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
C言語 エラーの原因がわからな...
-
c++でサインカーブ、コサインカ...
-
課題なんですが・・・
-
実数の整数部,小数部の取得
-
#define _CRT_SECURE_NO_WARNIN...
-
c言語
-
C言語です。
-
再帰関数squares()で完全平方根...
-
卒業研究でよく分からないとこ...
-
部分行列の抜き出し(C言語)
-
プログラミングがわかりません
-
OpenCVで平均濃度の求め方
-
if と配列の組み合わせ
-
線形探索について
-
整数データの配列から同じ値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報