
3×3のラテン方陣をつくるプログラムを作成したのですが、(↓)
#include <stdio.h>
int main(){
int j,k,n = 3;
int a,b,c;
int d,e;
printf("a,b,cの入力:\n");
scanf("%d%d%d",&a,&b,&c);
for(j=0; j<=n-1; j++){
for(k=0; k<=n-1; k++){
d = a * j + b * k + c;
e=d%n;
printf("%d ",e);
}
printf("\n");
}
return 0;
}
実行すると時々値が変わってしまいます。
(その都度ちゃんとコンパイルし直して実行しています。)
たとえば(a,b,c)=(1,1,1)の時に
1 2 0
2 0 1
0 1 2
と出たり
1 1 1
2 2 2
0 0 0
と出たりします。(手計算だと前者が合ってる…?)
これは答えは何通りもある、どちらも正しい、ということでしょうか、、?
後者も合っているとしたら、どのような計算でこのような結果になったのでしょうか?そもそもこれはラテン方陣ではないのでは、、(>_<)
合っていないとしたら、何らかのエラーでしょうか…?
実行した写真も載せようと思うのですが、反映に時間がかかるとの事で、補足の方に載せようと思います。
正直ラテン方陣に関してもプログラミングに関してもまだ全然分かっておらず、このような理解の乏しい質問をしてしまい本当に申し訳ないです、、どなたか教えて下さる人がいると幸いです。。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
3×3のラテン方陣のサンプルです。
#include <stdio.h>
int main()
{
int j,k, n = 3;
int a, b, c;
int v[3];
int x,e;
printf("a,b,cの入力:\n");
scanf("%d,%d,%d", &a, &b, &c);
printf("a=%d b=%d c=%d\n",a,b,c);
v[0] = a;
v[1] = b;
v[2] = c;
for (j = 0; j <= n - 1; j++) {
x = j;
for (k = 0; k <= n - 1; k++) {
e = v[x];
printf("%d ", e);
x++;
if (x >= n) x = 0;
}
printf("\n");
}
return 0;
}
No.3
- 回答日時:
>2.a,b,cは同じ値をいれては、いけません。
>▶︎これはラテン方陣の決まりか何かでしょうか?
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%86 …
上記URLのラテン方陣の説明と例が書いてあります。
a,b,cは全て異なるあたいでなければいけません。
No.2
- 回答日時:
No1です。
カンマ区切りで入力したい場合は、
scanf("%d,%d,%d", &a, &b, &c);
としてください。
そうすると
1,2,3
を入力すると
a=1,b=2,c=3となります。
わあ!本当だ!できました!!!
a,b,c(カンマ)で入力したいなら%d%d%dではなく%d,%d,%dに、
逆に%d%d%dでコンパイルした時はカンマではなく半角スペースに!以後気をつけます。。
3.入力された値を印字して、正しく入力されたかどうかを確認する
▶︎これ大事ですね!カンマや半角スペースの間違った方で入力してしまっていたときは予想外の値になっていました、、ありがとうございます!
2.a,b,cは同じ値をいれては、いけません。
▶︎これはラテン方陣の決まりか何かでしょうか?たくさん質問してしまい申し訳ございません。。(>_<)
No.1
- 回答日時:
とりあえず、気が付いた点を3つほど述べます。
1.入力データは、カンマで区切るのではなく、半角のスペースで区切ります。
例
誤 1,2,3
正 1 2 3
2.a,b,cは同じ値をいれては、いけません。
誤 1 1 1
正 1 2 3
3.入力された値を印字して、正しく入力されたかどうかを
確認すると良いです。
scanf("%d%d%d", &a, &b, &c);の次の行に
printf("a=%d b=%d c=%d\n",a,b,c);
を追加してください。
そうすると、a,b,cの値がどのようになっているかが判ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
C言語のエラーについて
-
プログラムがエラーが出る原因
-
C言語 遺伝的アルゴリズムでの...
-
3×3のラテン方陣をつくるプログ...
-
クレーンでのCFブレーキとな...
-
最短経路の数
-
減衰係数の求め方がわかりません
-
古典制御のゲイン交差周波数と...
-
オシロスコープのDCとAC
-
火力発電 蒸気タービンのMSV、C...
-
PID制御
-
誤まりとは、誤りと主張する者...
-
SPI 非言語の問題です
-
複数のシリンダーの同調化にコ...
-
互いに素と負の数
-
第5調波や第3高調波って何です...
-
数学の問題です。 (3)④がわか...
-
数学の問題で条件にしたがって...
-
インバータの実験を行い、PW...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
プログラミングが分かりません。
-
TCP/IP: 非ソケットに対するソ...
-
リターンキー又は、スペースキ...
-
c言語 select sort
-
0と1のファイルへの書き込み、出力
-
フィボナッチ数列
-
3×3のラテン方陣をつくるプログ...
-
C言語のエラーについて
-
プログラムエラー
-
getch / putch用のヘッダ
-
C言語 遺伝的アルゴリズムでの...
-
大至急です! 1,ターミナルから...
-
C言語 コンパイルエラー(文字...
-
加減剰余のオーバーフローについて
-
C言語初心者です。計算がうまく...
-
'printf':識別子が見つかりませ...
-
分割コンパイルの手順と方法に...
-
C言語で10個の数字を読み込んで...
-
C言語 セグメンテーション違反
おすすめ情報
これです。