質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

1012閲覧

c言語、自然数冪の回答について

Sakura1031

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/07/01 12:18

編集2021/07/01 13:34

次の自然数冪
について,a=14, k=8 までを計算して配列
ただし,mod 15は,15で割った剰余を表す.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

k=0| 1 1 1 1 1 1 1 1 1 1 1 1 1 1
k=1| 1 2 3 4 5 6 7 8 9 10 11 12 13 14
k=2| 1 4 9 1 10 6 4 4 6 10 1 9 4 1
k=3| 1 8 12 4 5 6 13 2 9 10 11 3 7 14
k=4| 1 1 6 1 10 6 1 1 6 10 1 6 1 1
k=5| 1 2 3 4 5 6 7 8 9 10 11 12 13 14
k=6| 1 4 9 1 10 6 4 4 6 10 1 9 4 1
k=7| 1 8 12 4 5 6 13 2 9 10 11 3 7 14
k=8| 1 1 6 1 10 6 1 1 6 10 1 6 1 1
こういったプログラムを作りたいのですがどうしたらよろしいですか?
c言語です。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void) {
int i, j, a = 1,b;
int tensu1[9][15];
int tensu2[9][15];
int k[9][15];
for (i = 0; i < 8; i++) {
for (j = 1; j < 15; j++) {
for (i = 0; i < 8; i++)
a = a * i;

k[i][j] = a % 15; } for (i = 0; i < 9; i++) { for (j = 0; j < 14; j++) { } printf("[k=%d]\n", i + 0, k[i][j]); } } return 0;

}
ここまで書きました。
足らない文教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/07/01 12:21

・どこまで書いてみましたか? ・タグの「Ruby」はどういう意図でしょうか?
Sakura1031

2021/07/01 12:43

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { int i, j, a = 1,b; int tensu1[9][15]; int tensu2[9][15]; int k[9][15]; for (i = 0; i < 8; i++) { for (j = 1; j < 15; j++) { for (i = 0; i < 8; i++) a = a * i; k[i][j] = a % 15; } for (i = 0; i < 9; i++) { for (j = 0; j < 14; j++) { } printf("[k=%d]\n", i + 0, k[i][j]); } } return 0; } ここまで書きました、RUBYはミスです。
neconekocat

2021/07/01 13:18 編集

そのコードは質問文を編集してそこに書いてください ついでに付けるタグが違います。「C」のタグを付けてください。
maisumakun

2021/07/01 13:47

現状はどのような出力なのですか?
Sakura1031

2021/07/01 13:52

k=0〜k=8まで出力できて余りなどの数値が出ない状況です
neconekocat

2021/07/01 14:33

まずあのコードをキチンと整形しましょう。 ループの中に余計なループというかわけわからんループが入ってるせいで色々とおかしいです。
Sakura1031

2021/07/01 14:51

コードここからわからないので教えていただきたいです。
jamjam3

2021/07/01 15:47

自然数冪ってaとkからどう計算するんですか?
Sakura1031

2021/07/01 16:02

a^k. Mod15 の式で行けると思うんですけどその出しかがその入力がわからなくて
neconekocat

2021/07/01 16:09

じゃあヒントだけ #include <math.h> pow(j+1, i) % 15 ぶっちゃけ冪乗の計算よりループ部分の方がおかしいの
Sakura1031

2021/07/01 16:11

申し訳ありません。POWを使わないものでヒントいただけたら幸いです。
neconekocat

2021/07/01 16:17

あ、はい a = 1; for (int l = 0; l < i ; l++) { a *= (j + 1); } k[i][j] = a % 15;
Sakura1031

2021/07/01 16:27

ありがとうございます。 If文を使ったりするにでしょうか?
guest

回答2

0

二重ループで済まそうとするとこうでしょうか。

C

1int main(void) 2{ 3 int k[9][14]; 4 for (int j = 0; j < 14; j++) { 5 k[0][j] = 1; 6 for (int i = 1; i < 9; i++) 7 k[i][j] = k[i-1][j] * (j + 1) % 15; 8 } 9 // k を表示 10} 11

pow は不要です。

投稿2021/07/01 18:05

編集2021/07/01 18:18
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

C

1int main(void) { 2 int k[9][14]; 3 for (int i = 0; i < 9; i++) { 4 for (int j = 0; j < 14; j++) { 5 int a = 1; 6 for (int l = 0; l < i; l++) { 7 a *= (j + 1); 8 } 9 k[i][j] = a % 15; 10 } 11 } 12 13 for (int i = 0; i < 9; i++) { 14 printf("k=%d|", i); 15 for (int j = 0; j < 14; j++) { 16 printf("%2d ", k[i][j]); 17 } 18 printf("\n"); 19 } 20 return 0; 21}

投稿2021/07/01 16:42

編集2021/07/01 18:33
neconekocat

総合スコア443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sakura1031

2021/07/01 16:51

k=までの値はできてるんですがあまりの出し方が出力できないです。 わかりづらく申し訳ないです
neconekocat

2021/07/01 17:08

printf("[k=%d]\n", i + 0, k[i][j]); まずformat部分に%dが1つしかないですよね? 引数を2つとってますがk[i][j]の方は無意味な引数になっているわけです。 かといってprintf("[k=%d] %d\n, i, k[i][j]);とやっても狙い通りの出力にはなりません。 目的の出力を得るためにはprintfが3つに分割されるかと思います。 ループ中にどう配置すれば狙い通りの出力になるかを考えてください。 printf("k=%d|", i); printf("%d ", k[i][j]); printf("\n");
Sakura1031

2021/07/01 17:18

なるほど、わかりやすい解説ありがとうございます。ちょっとやってみますw
Sakura1031

2021/07/01 18:09

kの値の出力まではできたんですが、あまりの数値の出し方にいまいちピント来ず苦戦していますヒントだけでもいただけませんか?
neconekocat

2021/07/01 18:18

i行目の出力をjループ無しで書くと下のようになります。どこの部分をループ処理できるのかを考えれば答えは出るかと思います。具体的にはjループに入れるものと入れないものを分ければいいわけです。 printf("k=%d|%d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", i, k[i][0], k[i][1], k[i][2], …(略)…, k[i][12], k[i][13]);
Sakura1031

2021/07/01 18:22

if文は使わない感じで行きますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問