
No.6ベストアンサー
- 回答日時:
No4 補足
> (c[n[i]] == 0)というところの条件の意味と
> 1を代入することで何が変わってくるかが分かりませんでした。
最初、まだ設定してないという印にc[]の内容を全て0に初期化しているかと思います。
c[x]=1とする事で添字xは使ったって印を変えてます。
c[y]に入っている値が0ならアクセスされてないのでそれに関する処理を行い、c[y]=1とする事でyは処理済みと更新する時などに使う方法(一度設定したら次回からはアクセスする必要がない)かと思います。

No.4
- 回答日時:
> 上記のところでどのようにして重ならないのを表示するようにしているのかがイマイチ分かりません。
紙に(Excel とかでもいい)
n[0] から n[15] と、
c[0] から c[15] を書いてみて、
n[0] から n[15] にいろいろな値(全部違うとか、全部同じとか)を書いて、
その上で、ループを追いかけてみましょう。
この回答への補足
printfで全ての値を出力してみてみました。
for文内の回す条件で(i < 16) && (c[n[i]] == 0)というところの条件の意味と
1を代入することで何が変わってくるかが分かりませんでした。

No.3
- 回答日時:
> できれば以下の文に修正した書き方を書いていただけませんか?
int t;
として、
for(i = 1; (i < 16) && (t = n[i], c[t] == 0))
{
t = n[i];
c[t];
}
この回答への補足
何度もすみません。
以下のようなプログラムが隣と隣の数を引き、引いた数が下の段に行き、全ての数が重ならない組み合わせ
(1~15の数値一回のみ)を表示しています。
for (i = 1; (i < 16) && (c[n[i]] == 0); i++){
c[n[i]] = 1;
}
上記のところでどのようにして重ならないのを表示するようにしているのかがイマイチ分かりません。教えていただけないでしょうか?
下記にプログラムを載せます。
#include <stdio.h>
int main(void)
{
int i,j,x,t;
intn[16];
intc[16];
intcheck = 0;
for (n[1] = 1; n[1] <= 15; n[1]++) {
for (n[2] = 1; n[2] <= 15; n[2]++) {
for (n[3] = 1; n[3] <= 15; n[3]++) {
for (n[4] = 1; n[4] <= 15; n[4]++) {
for (n[5] = 1; n[5] <= 15; n[5]++) {
n[6] = (n[1] - n[2]);
if(n[6] < 0){
n[6] = -n[6];
}
n[7] = (n[2] - n[3]);
if(n[7] < 0){
n[7] = -n[7];
}
n[8] = (n[3] - n[4]);
if(n[8] < 0){
n[8] = -n[8];
}
n[9] = (n[4] - n[5]);
if(n[9] < 0){
n[9] = -n[9];
}
n[10] = (n[6] - n[7]);
if(n[10] < 0){
n[10] = -n[10];
}
n[11] = (n[7] - n[8]);
if(n[11] < 0){
n[11] = -n[11];
}
n[12] = (n[8] - n[9]);
if(n[12] < 0){
n[12] = -n[12];
}
n[13] = (n[10] - n[11]);
if(n[13] < 0){
n[13] = -n[13];
}
n[14] = (n[11] - n[12]);
if(n[14] < 0){
n[14] = -n[14];
}
n[15] = (n[13] - n[14]);
if(n[15] < 0){
n[15] = -n[15];
}
for (i = 1; i < 16; i++){//配列c[]を0に初期化//
c[i] = 0;
}
for (i = 1; (i < 16) && (c[n[i]] == 0); i++){//iが15以下でc[a[i]]が0なら//
c[n[i]] = 1;//c[n[i]]に1を代入//
}
if (i < 16) continue;
printf("%2d %2d %2d %2d %2d\n", n[1], n[2], n[3], n[4], n[5]);
printf(" %2d %2d %2d %2d\n", n[6], n[7], n[8], n[9]);
printf(" %2d %2d %2d\n", n[10], n[11], n[12]);
printf(" %2d %2d\n", n[13], n[14]);
printf(" %2d\n", n[15]);
printf("\n");
}
}
}
}
}
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PIC のプログラムについて ど...
-
For文の終了値を関数にしても問...
-
ループを途中で抜けたいのですが。
-
最早開始時間と最遅完了時刻を...
-
【C++】関数ポインタの使い方
-
既定のコンストラクタがありま...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
a^2の√=a が成り立たない場合
-
VB6.0での小数点の扱いについて
-
配列をnビットシフトする
-
数学 一次関数 関数 y=-3/4x+k(...
-
c languageで 簡単な質問があ...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
プログラムでの数字につく”f”の...
-
C言語で複数列のデータを1列の...
-
c言語で、繰り返し文の中で、0....
-
sscanfとscanfの違いがよくわか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
do-while文が禁止される理由
-
PAD図の書き方
-
入力した文字列から母音だけを...
-
入力した数値を倍々するプログラム
-
if文の中にfor文なのか、for文...
-
C言語forループが完結した場合...
-
アルゴリズムです!四つの数字...
-
break文でループを一気に抜ける...
-
エクセルVBAで Do While (1)って?
-
モンテカルロシミュレーション...
-
このC#プログラムの1〜11を埋め...
-
プログラミングC言語についての...
-
C++ DirectX カーソルの移動処...
-
HEWのバグ?
-
ゲームオーバーのプログラム
-
プログラムで関数は使わない方...
-
Delphiで・・・
-
他言語で言うcontinue文
-
Excel VBAで年度をまたぐ期間の...
おすすめ情報