最終的には 6 × 15 の表で表示したいです。
アルゴリズムに関して全く分からない状態となっています。
アドバイスお願いします。
#include <stdio.h>
#define N 5 + 1 //表の硬貨の数
#define M 15 + 1 //表の支払いの代金
void Func(int m);
void print_matrix(int a[][N]);
void print_array(const int *a);
//==============================================================
// メイン関数
//==============================================================
int main(void) {
const int m = 15; // 支払金額
Func(m);
return 0;
}
//==============================================================
// 金額 m 円の支払いに必要な紙幣および硬貨の枚数を表示する
//==============================================================
void Func(int m) {
int c[] = { 1,2,7,8,12 }; // 支払いに使用する紙幣および硬貨
int a[] = { 12,8,7,2,1 }; // 支払いに使用する紙幣および硬貨
const int loop = sizeof(a) / sizeof(int); // ループ回数
int i,j,k; // ループ用
int counter[M][N];
int count[N - 1];
// 答えが正しいかどうかの確認用
for (i = 0; i < loop; i++) {
if (m / a[i] > 0) {
printf("[%5d] : %d\n", a[i], m / a[i]); // 枚数を表示する
}
m %= a[i]; // c[i] 円で支払ったあとの残りの支払金額を求める
}
printf("\n");
//表の初期化
for (i = 0; i < N ; i++) {
for (j = 0; j < M ;j++){
if (i == 0) { counter[j][i] = j; }
else counter[j][i] = 0;
}
}
counter[0][0] = 0; counter[0][1] = c[0]; counter[0][2] = c[1];
counter[0][3] = c[2]; counter[0][4] = c[3]; counter[0][5] = c[4];
for(i = 0;i < N - 1;i++) count[i] = { 0 };
for (i = 0; i < N; i++) {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if (counter[i][j] - counter[i][0] == 0) {
}
}
}
print_matrix(counter);
print_array(count);
printf("\n");
}
//行列を表示する関数
void print_matrix(int a[][N])
{
int i, j;
for (i = 0; i<N; i++) {
for (j = 0; j<M; j++) {
printf("%3d ", a[j][i]);
}
printf("\n");
}
return;
}
void print_array(const int *a)
{
for (int i = 0; i < N - 1; i++) printf("%3d ", a[i]);
putchar('\n');
}