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

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

新規登録して質問してみよう
ただいま回答率
85.37%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1304閲覧

Java配列問題 データ出力

ayamame

総合スコア3

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/06/18 09:50

###問題
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
上のようにデータを入れ
以下の様に出力しなさい
1)1 2 3 4 5
2)2 7 12 17 22
3)13 14 15
4)10 9 8 7 6
5)1 7 13 19 25
6)25 19 13 7 1
7)2 8 14 20
8)1 13 25
9)1 8 15

1)~6)までは解けました。いろいろ考えてみて7)~9)は要素数をいじればいいと思うのですがうまくいきません。
プログラミング初学者にもわかるよう説明してもらえると幸いです。

Java

1package 課題2; 2 3public class 課題3 { 4 5 public static void main(String[] args) { 6 // TODO 自動生成されたメソッド・スタブ 7 int[][] score= { 8 {1,2,3,4,5}, // 1行目 9 {6,7,8,9,10}, // 2行目 10 {11,12,13,14,15},// 3行目 11 {16,17,18,19,20},// 4行目 12 {21,22,23,24,25},// 5行目 13 }; 14 //1 15 int i = 0; 16 for (i=0;i<5;i++) { 17 System.out.print(score[0][i]+""); 18 19 }//2 20 System.out.print("\n"); 21 int j = 0; 22 for (j=0;j<5;j++) { 23 System.out.print(score[j][1]+""); 24 }//3 25 System.out.print("\n"); 26 int k = 0; 27 for (k=2;k<5;k++) { 28 System.out.print(score[2][k]+""); 29 }//4 30 System.out.print("\n"); 31 int l = 0; 32 for (l=4;l>=0;l--) { 33 System.out.print(score[1][l]+""); 34 }//5 35 System.out.print("\n"); 36 int m = 0; 37 for (m=0;m<5;m++) { 38 System.out.print(score[m][m]+""); 39 } 40 41 } 42} 43

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

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

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

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

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

BeatStar

2021/06/18 10:17 編集

前回の回答にも書きましたが、 「何度も同じ質問しないほうがいい」です。 理解できていないのなら、追記か編集で聞くべきです。 今のやり方だと誰も答えてくれませんよ。
guest

回答2

0

やさしい言い方をしているので、勘違いされるかもしれないので
そのままの意味で受け取れるようにいいます

同じ質問をするな!

低評価理由として「過去に投稿した質問と同じ内容の質問」として放置されるのが普通です。
回答つかなければ、削除依頼も出せたと思うのですが回答ついてしまったので、
もう同じ質問がつかないように、コピペで動く回答書きます。

7)2 8 14 20

1 * 3 4 5 6 7 * 9 10 11 12 13 * 15 16 17 18 19 * 21 22 23 24 25

score[m][m]で出力する場合から考えて、横の位置をひとつずらせばいいです。([m][m+1])
あと、ループの外側でintを定義するメリットほぼないのでやめた方がいいです。

java

1for (int n = 0; n+1 < 5; n++) { 2 System.out.print(score[n][n+1]+" "); 3}

8)1 13 25

* 2 3 4 5 6 7 8 9 10 ここと 11 12 * 14 15 16 17 18 19 20 ここを出力しない 21 22 23 24 *

score[m][m]で出力する場合のiが1と3の時のに出力しなければいいだけです。
つまり、mの増加を+1でなく、+2にすればよい。

java

1for (int n = 0; n < 5; n += 2) { 2 System.out.print(score[n][n]+" "); 3}

9)1 8 15

* 2 3 4 5 6 7 * 9 10 11 12 11 14 * 16 17 18 19 20 21 22 23 24 25

score[0][0], score[1][2], score[2][4] を出力する
増加する量をそのまま書けばよいです。
score[x]は、0,1,2と1づつ増加、score[][x]のxは、0,2,4と2づつ増加

java

1for (int n = 0; n*2 < 5; n++) { 2 System.out.print(score[n][n*2]+" "); 3}

n * mの配列は、[i/n][i%m]で0から+1づつで順にアクセスできます。

なので、今回のように等差であるなら、
forの中身を、score[i/5][i%5]にして、
初期値と増減値を調整するだけですべて表示できます。

java

1for(int i = 0; i < 5; i++) { 2 System.out.print(score[i/5][i%5] + " "); 3} 4System.out.println(); 5 6for(int i = 1; i < 22; i+=5) { 7 System.out.print(score[i/5][i%5] + " "); 8} 9System.out.println(); 10 11for(int i = 12; i < 15; i++) { 12 System.out.print(score[i/5][i%5] + " "); 13} 14System.out.println(); 15 16for(int i = 9; 5 <= i; i--) { 17 System.out.print(score[i/5][i%5] + " "); 18} 19System.out.println(); 20 21for(int i = 0; i < 25; i+=6) { 22 System.out.print(score[i/5][i%5] + " "); 23} 24System.out.println(); 25 26for(int i = 24; 0 <= i; i-=6) { 27 System.out.print(score[i/5][i%5] + " "); 28} 29System.out.println(); 30 31for(int i = 1; i < 20; i+=6) { 32 System.out.print(score[i/5][i%5] + " "); 33} 34System.out.println(); 35 36for(int i = 0; i < 25; i+=12) { 37 System.out.print(score[i/5][i%5] + " "); 38} 39System.out.println(); 40 41for(int i = 0; i < 15; i+=7) { 42 System.out.print(score[i/5][i%5] + " "); 43}

投稿2021/06/18 18:25

編集2021/06/19 04:43
momon-ga

総合スコア4826

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

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

0

ベストアンサー

まず、プログラミングは「こう書けばいい」……ではないです。

プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。

……っていうか、(1)(6)が自力で出来ているのなら、(7)(9)も簡単だと思うのですが……


まず、見やすいようにデータをちょっと加工しますね。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

なんか、何かに似ていませんか?

そう、Excelの方眼用紙ですね。
(カレンダーでもいいけど、こっちは説明しづらいから)

まずは(7)をやってみましょうか。

7)2 8 14 20

上記の加工データを現実世界のノートかホワイトボードかなんかに書いてみてください。

そして、7) に出てくる数字を丸かなんかで印をつけてください。

印をつけた数字を (*) と置くと、

1 * 3 4 5 6 7 * 9 10 11 12 13 * 15 16 17 18 19 * 21 22 23 24 25

となっています。

それぞれ、{x,y} とおくと、

{ {0,1}, {1,2}, {2,3}, {3, 4} }

となっていますね。(二次元配列としてみた場合)

数字をよーく見てください。

{ (前項のX) + 1, (前項のY) + 1 }

となっていますね。

これでもまだきついのでもうちょっと見ましょうか。

更に見ると、

{ 現在位置のX, (前項のY) + 1 }

となっていますね。

そうなれば、後は簡単。

Xの方は単純に高さの方で、Yの方は『総和を求める感覚』で出来そうですね。

たとえば、int yを用意し、初期値は 0。

Java

1int y = 0;

そして、for文とかを使ってループしながら、高さが +1 するごとに y も +1 する。

そうすれば、(前項のY) + 1 を表現できる。

(8), (9) も発想は同じ。

投稿2021/06/18 10:15

BeatStar

総合スコア4962

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問