# Question07 - 配列 本資料の練習問題は、複数のプログラミング言語(Java / C# / PHP / Python)で共通して利用できるよう記述されています。静的型付け・動的型付けの違いや文字列の連結ルールなど、言語固有の文法仕様に基づき、問題文の表現をご使用の言語の仕様に適宜読み替えて進めてください。 ## この問題のねらい - 複数の値を1つのまとまり(一覧)として宣言し、扱えること - 一覧の要素に対して、位置(先頭から数えた順番)を指定して値を設定・取得できること - 繰り返し処理を使って、一覧の全要素を順に(先頭から末尾へ、または末尾から先頭へ)処理できること - 行と列を持つ表形式のデータ(一覧の一覧)を扱えること。行ごとに要素数が異なる場合を含む - 一覧の有効な範囲を超えた位置にアクセスするとエラーになることを理解し、範囲内に収まるように処理を修正できること 以下の設問はそれぞれ独立したプログラムとして実装してください。 --- ## 設問1 5個の整数を格納できる一覧を宣言してください。宣言した一覧に、先頭から順に1, 3, 5, 7, 9を設定したうえで、一覧の先頭から2番目の要素を出力してください。 - 出力: `3` --- ## 設問2 整数を格納できる一覧を宣言し、先頭から順に1, 10, 100の3つの値で初期化してください。この一覧の先頭から1番目の値と3番目の値を足した値を出力してください。 - 出力: `101` --- ## 設問3 次の5個の文字列を、先頭から順に格納した一覧を用意してください。 - 森, 山, 沼, 島, 平地 繰り返し処理を使って、この一覧の全要素を先頭から順にすべて出力してください。 - 出力: 森, 山, 沼, 島, 平地 の順に、すべての要素を出力する --- ## 設問4 1000個の整数を格納できる一覧を用意してください。 繰り返し処理を使って、この一覧の先頭から順に1から1000までの整数を1つずつ設定してください。そのうえで、繰り返し処理を使ってこの一覧の全要素を先頭から順にすべて出力してください。 - 出力: 1, 2, 3, ... , 1000 の順に、すべての要素を出力する --- ## 設問5 次の5個の文字列を、先頭から順に格納した一覧を用意してください。 - 森, 山, 沼, 島, 平地 0以上4以下の範囲のランダムな整数を1つ生成し、その値が示す位置(先頭を0番目として数える)に対応する、一覧の要素を出力してください。 - 期待される結果: 一覧に含まれる5つの文字列(森・山・沼・島・平地)のいずれか1つが出力される(値はランダムなため、実行するたびに出力される文字列が変わってよい) - 補足: ランダムな整数の生成には、使用する言語の標準的な手段を用いてよい --- ## 設問6 次の5個の文字列を、先頭から順に格納した一覧を用意してください。 - 森, 山, 沼, 島, 平地 繰り返し処理を使って、この一覧の内容を末尾から先頭に向かって順にすべて出力してください。 - 出力: 平地, 島, 沼, 山, 森 の順に、すべての要素を出力する --- ## 設問7 「行」が時限(1時間目から5時間目まで)を表し、各行の要素が月曜日から金曜日までの科目名を順に並べたものである、次のような表形式のデータ(行と列を持つ一覧)を用意してください。 | | 月 | 火 | 水 | 木 | 金 | |----------|------|------|------|------|------| | 1時間目 | 国語 | 社会 | 国語 | 理科 | 社会 | | 2時間目 | 英語 | 数学 | 英語 | 数学 | 国語 | | 3時間目 | 理科 | 国語 | 理科 | 国語 | 理科 | | 4時間目 | 社会 | 社会 | 数学 | 社会 | 数学 | | 5時間目 | 数学 | 英語 | 英語 | 理科 | 英語 | このデータから、金曜日の2時間目に対応する科目名を取得して出力してください。 - 出力: `国語` --- ## 設問8 行ごとに要素数が異なってもよい、整数を格納した表形式のデータ(行と列を持つ一覧)として、次の2行から成るデータを用意してください。 - 1行目: 1, 3, 5, 7 - 2行目: 11, 13, 17, 19, 23, 29 繰り返し処理を使って、このデータに含まれるすべての整数要素を、1行目・2行目の順に、それぞれの行では先頭から末尾の順に出力してください。 - 出力: 1, 3, 5, 7, 11, 13, 17, 19, 23, 29 の順に、すべての要素を出力する --- ## 設問9 設問8と同じ、次の2行から成る表形式のデータ(行と列を持つ一覧)を用意してください。 - 1行目: 1, 3, 5, 7 - 2行目: 11, 13, 17, 19, 23, 29 繰り返し処理を使って、このデータに含まれるすべての整数要素の平均値を、小数として出力してください。 - 出力: `12.8` - 補足: 使用する言語・環境によって小数の出力表現(末尾の0や桁数など)が変わる場合があるが、値として12.8を表せていればよい --- ## 設問10 整数を100個格納できる一覧(有効な位置は先頭を0番目として、0番目から99番目まで)を用意します。 次の処理は、この一覧の中身を先頭から順に1, 2, 3, ... , 100という100個の連続した整数にしようとしていますが、有効な範囲を超えた位置にアクセスしてしまい、実行時にエラーが発生します。 (元の処理の意図) - 変数`i`を1から開始し、`i`が100以下である間、一覧の`i`番目の位置に`i + 1`の値を設定するという処理を、`i`を1ずつ増やしながら繰り返す この処理を、エラーが発生せず、かつ一覧の中身が先頭から順に1, 2, 3, ... , 100となるように修正してください。修正後、繰り返し処理を使って一覧の全要素を先頭から順にすべて出力してください。 - 出力: 1, 2, 3, ... , 100 の順に、すべての要素を出力する - 補足: 一覧(配列)は、あらかじめ決められた有効な範囲を超えた位置にアクセスするとエラーになります。この問題では、有効な範囲内だけを使って意図した中身になるように、代入する位置と値の対応関係を見直してください