Skip to content

Commit 8c00a78

Browse files
yas-akorurun418
andauthored
第6,7,8章の修正 (#70)
* 第6章の修正 * 6章の編集 * 6/indexの編集 * 第7章の編集 * 第8章の編集 * 第7章に小見出しを追加 * 第6章の問題を編集 * 第7章の問題を編集 * 第8章の問題を編集 * 第8章に小見出しを追加 * indexからWIP表記を削除 * 第6章の問題のファイル名を修正 * 第8章の問題のindexを編集 * configの編集 * 問題の修正 --------- Co-authored-by: rurun <107459257+rurun418@users.noreply.github.com>
1 parent 9be1d98 commit 8c00a78

30 files changed

Lines changed: 1385 additions & 282 deletions

docs/.vitepress/config.ts

Lines changed: 102 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,32 +137,119 @@ export default withMermaid({
137137
],
138138
},
139139
{
140-
text: "[WIP] 6. 繰り返し処理",
140+
text: "6. 繰り返し処理",
141141
link: "/cpp/chapter-6/",
142142
items: [
143-
{ text: "[WIP] 6.1 for文", link: "/cpp/chapter-6/1" },
144-
{ text: "[WIP] 6.2 while文", link: "/cpp/chapter-6/2" },
145-
{ text: "[WIP] 6.3 配列", link: "/cpp/chapter-6/3" },
146-
{ text: "[WIP] 6.4 string型②とchar型", link: "/cpp/chapter-6/4" },
147-
{ text: "[WIP] 6.5 continueとbreak", link: "/cpp/chapter-6/5" },
143+
{ text: "6.1 for文", link: "/cpp/chapter-6/1" },
144+
{ text: "6.2 while文", link: "/cpp/chapter-6/2" },
145+
{ text: "6.3 配列", link: "/cpp/chapter-6/3" },
146+
{ text: "6.4 string型②とchar型", link: "/cpp/chapter-6/4" },
147+
{ text: "6.5 breakとcontinue", link: "/cpp/chapter-6/5" },
148+
{
149+
text: "6.Q 練習問題",
150+
link: "/cpp/chapter-6/problems/",
151+
collapsed: true,
152+
items: [
153+
{
154+
text: "Count Down(★☆☆)",
155+
link: "/cpp/chapter-6/problems/count-down",
156+
},
157+
{
158+
text: "Even Numbers in Range(★☆☆)",
159+
link: "/cpp/chapter-6/problems/even-number-in-range",
160+
},
161+
{
162+
text: "DO NOT FAIL(★☆☆)",
163+
link: "/cpp/chapter-6/problems/do-not-fail",
164+
},
165+
{
166+
text: "lower or UPPER(★☆☆)",
167+
link: "/cpp/chapter-6/problems/lower-or-upper",
168+
},
169+
{
170+
text: "Prime Check(★★☆)",
171+
link: "/cpp/chapter-6/problems/prime-check",
172+
},
173+
{
174+
text: "Fibonatti(★★☆)",
175+
link: "/cpp/chapter-6/problems/fibonatti",
176+
},
177+
178+
{
179+
text: "fizz-buzz 2D(★★★)",
180+
link: "/cpp/chapter-6/problems/fizz-buzz-2d",
181+
},
182+
],
183+
},
148184
],
149185
},
150186
{
151-
text: "[WIP] 7. 関数",
187+
text: "7. 関数",
152188
link: "/cpp/chapter-7/",
153189
items: [
154-
{ text: "[WIP] 7.1 関数とは", link: "/cpp/chapter-7/1" },
155-
{ text: "[WIP] 7.2 引数", link: "/cpp/chapter-7/2" },
156-
{ text: "[WIP] 7.3 返り値", link: "/cpp/chapter-7/3" },
157-
{ text: "[WIP] 7.4 [発展] 参照渡し", link: "/cpp/chapter-7/4" },
190+
{ text: "7.1 関数とは", link: "/cpp/chapter-7/1" },
191+
{ text: "7.2 引数", link: "/cpp/chapter-7/2" },
192+
{ text: "7.3 返り値", link: "/cpp/chapter-7/3" },
193+
{ text: "7.4 [発展] 参照渡し", link: "/cpp/chapter-7/4" },
194+
{
195+
text: "7.Q 練習問題",
196+
link: "/cpp/chapter-7/problems/",
197+
collapsed: true,
198+
items: [
199+
{
200+
text: "Max of Three(★☆☆)",
201+
link: "/cpp/chapter-7/problems/max-of-three",
202+
},
203+
{
204+
text: "Swap Two Numbers(★★☆)",
205+
link: "/cpp/chapter-7/problems/swap-two",
206+
},
207+
],
208+
},
158209
],
159210
},
160211
{
161-
text: "[WIP] 8. 構造体",
212+
text: "8. 構造体",
162213
link: "/cpp/chapter-8/",
163214
items: [
164-
{ text: "[WIP] 8.1 構造体とは", link: "/cpp/chapter-8/1" },
165-
{ text: "[WIP] 8.2 メソッド", link: "/cpp/chapter-8/2" },
215+
{ text: "8.1 構造体とは", link: "/cpp/chapter-8/1" },
216+
{ text: "8.2 メソッド", link: "/cpp/chapter-8/2" },
217+
{
218+
text: "8.Q 練習問題",
219+
link: "/cpp/chapter-8/problems/",
220+
collapsed: true,
221+
items: [
222+
{
223+
text: "Order(★★☆)",
224+
link: "/cpp/chapter-8/problems/order",
225+
},
226+
],
227+
},
228+
],
229+
},
230+
{
231+
text: "(2025年度版テキスト)<br>VIII. 発展事項 (WIP)",
232+
link: "/text/chapter-8/",
233+
items: [
234+
{ text: "計算量とオーダー", link: "/text/chapter-8/complexity" },
235+
{ text: "再帰関数", link: "/text/chapter-8/recursive-function" },
236+
{ text: "実行時間", link: "/text/chapter-8/exec-time" },
237+
{ text: "カプセル化", link: "/text/chapter-8/capsule" },
238+
{
239+
text: "練習問題",
240+
link: "/text/chapter-8/practice/",
241+
collapsed: true,
242+
items: [
243+
{
244+
text: "Capsulated Zer0-Star",
245+
link: "/text/chapter-8/practice/capsulate-user",
246+
},
247+
{
248+
text: "Exponentation",
249+
link: "/text/chapter-8/practice/exponentation",
250+
},
251+
],
252+
},
166253
],
167254
},
168255
{
@@ -172,7 +259,7 @@ export default withMermaid({
172259
],
173260
"/text/": [
174261
{
175-
text: "[WIP] 2026年度版テキスト",
262+
text: "2026年度版テキスト",
176263
link: "/cpp/preface/",
177264
},
178265
{

docs/cpp/chapter-6/1.md

Lines changed: 77 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
1-
# [WIP] 6.1 for文
1+
# 6.1 for文
2+
3+
## 6.1.1 for文の基本
4+
5+
繰り返しの処理には**for文**と呼ばれる構文を用いる。for文は以下のように記述できる。
26

3-
繰り返しの処理 `for` は以下のように記述する。
47

58
```cpp:line-numbers
69
for (int i=0; i<5; i++) {
710
cout << i << endl;
811
}
912
```
1013

11-
```
12-
[output]
14+
このプログラムの出力は以下のようになる。
15+
16+
```Output:line-numbers
1317
0
1418
1
1519
2
1620
3
1721
4
1822
```
1923

20-
新しい演算`++` が出ているが、これは **変数の値を1増やす** という演算である。 `i = i+1;` と同値
24+
コードの中に`i++`と書かれている部分がある。これは**変数iの値を1増やす**演算(インクリメント)であり、`i = i+1;`と同値である
2125

22-
for 文がどのように動作しているかを解説すると`for` の後に `;` 区切りで 3 つ情報を指定している
26+
for文がどのように動作しているかを解説する。for文は`for`の後に`;`区切りで3つの情報を指定している
2327

24-
```cpp
28+
```cpp:line-numbers
2529
for ([初期化];[条件];[継続処理]) {
26-
[実行文]
30+
[実行文]
2731
}
2832
```
2933

@@ -49,4 +53,68 @@ flowchart LR
4953
cond --> |No| e["End"]
5054
```
5155

52-
つまり、0,1,2,3,4 の整数を出力するプログラムである。これを使えば、例えば $7^4$ 等がプログラムで計算できる。
56+
つまり、0, 1, 2, 3, 4の整数を出力するプログラムである。したがって、以下のようなコードも、上のコードと全く同じ出力となる。
57+
58+
```cpp:line-numbers
59+
for (int i=1; i<=5; i++) {
60+
cout << i-1 << endl;
61+
}
62+
```
63+
64+
```cpp:line-numbers
65+
for (int count=10; count<15; count++) {
66+
cout << count-10 << endl;
67+
}
68+
```
69+
70+
```cpp:line-numbers
71+
for (int num=0; num<10; num+=2) {
72+
cout << num/2 << endl;
73+
}
74+
```
75+
76+
```cpp:line-numbers
77+
for (int x=5; x>0; x--) {
78+
cout << 5-x << endl;
79+
}
80+
```
81+
82+
`i--``i -= 1``i = i-1`と同じ意味であり、デクリメントと呼ばれる。
83+
84+
for文において、初期化で定義した変数のスコープはそのfor文内となる。
85+
86+
for文の初期化は省略することもできる。以下は初期化を省略した例である。この例では、変数`i`をfor文の外でも使うことができる。
87+
88+
```cpp:line-numbers
89+
int i = 0;
90+
for (; i<5; i++) {
91+
cout << i << endl;
92+
}
93+
```
94+
95+
for文を使えば、階乗や累乗なども計算できる。
96+
97+
## 6.1.2 多重ループ
98+
99+
for文の中にfor文を入れ子にすることもできる。以下は2重ループの例である。
100+
101+
```cpp:line-numbers
102+
for (int i=0; i<2; i++) {
103+
for (int j=0; j<3; j++) {
104+
cout << i << " " << j << endl;
105+
}
106+
}
107+
```
108+
109+
```Output:line-numbers
110+
0 0
111+
0 1
112+
0 2
113+
1 0
114+
1 1
115+
1 2
116+
```
117+
118+
外側のfor文と内側のfor文で、繰り返しに使う変数名を同じにしてしまわないよう、注意しよう。繰り返しに使う変数には、`i`が使われることが多い。また、多重ループでは、`i`, `j`, `k`...と続けていくが多い。しかし、これらはあくまでも慣習的なものであり、必ずしも従わなければいけない、というわけではない。変数名は自由につけることができる。
119+
120+

docs/cpp/chapter-6/2.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
# [WIP] 6.2 while文
1+
# 6.2 while文
2+
3+
## 6.2.1 while文とは
4+
5+
**条件を満たすまで**処理を繰り返したい、というときには`while`文を用いる。while文は、`while`の後にある`()`内の条件文が、真の間実行される繰り返し処理である。
26

37
```cpp:line-numbers
48
int a = 10;
@@ -8,9 +12,7 @@ while (a > 0) {
812
}
913
```
1014

11-
while文は、 `while` の中の条件文が真の間実行される繰り返し処理。
12-
13-
上記のコードだと、 10,9,8,7,6,5,4,3,2,1 と順に出力される。
15+
上記のコードだと、10,9,8,7,6,5,4,3,2,1と順に出力される。
1416

1517
```mermaid
1618
flowchart LR

docs/cpp/chapter-6/3.md

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# [WIP] 6.3 配列
1+
# 6.3 配列
22

3-
プログラミングでは、同じ様な変数を複数作りたいときがある。例えば、100人の点数の平均点を取りたい時に変数は100個必要となる。このときに、配列を使う。
3+
## 6.3.1 配列の基本
44

5-
配列とは、変数の集合のようなものである。
5+
プログラミングでは、同じような変数を複数作りたいときがある。例えば、100人の点数の平均点を取りたいときには変数は100個必要となる。このときに、配列を使う。配列とは、変数の集合のようなものである。
66

7-
C++ において配列を使う時は、`vector` を用いる。`string` と同様にして`vector`をインクルードする。
7+
C++において配列を使う時は、`vector`を用いる。**`string`と同様に`vector`をインクルードする必要がある。**
88

99
```cpp:line-numbers
1010
#include <vector>
@@ -17,14 +17,13 @@ vector<int> array;
1717
vector<string> strarray;
1818
```
1919

20-
このように記述すると空の配列が作成される。以下のように、初めから配列に値を入れることもできる
20+
このように記述すると空の配列が作成される。以下のように、初めから配列に値を入れることもできる
2121

2222
```cpp:line-numbers
2323
vector<int> arr = {10, 20, 30, 40, 50};
2424
```
2525

26-
以下のように、 `[]` の中に数字を書くことで要素を取得できる。数列を考えた時の $a_i$ の $i$ だと思うと良い。この時要素番号は*
27-
*0始まり**である。
26+
以下のように、`[]`の中に数字を書くことで要素を取得できる。数列を考えた時の$a_i$の$i$だと思うと良い。このとき、要素番号は**0始まり**である。
2827

2928
```cpp:line-numbers
3029
vector<int> arr = {10, 20, 30, 40, 50};
@@ -33,26 +32,27 @@ arr[1] = 100;
3332
cout << arr[1] << endl;
3433
```
3534

36-
```
37-
[output]
35+
```Output:line-numbers
3836
30
3937
100
4038
```
4139

42-
`.size()` とすると、配列の要素数を調べることができる。
40+
## 6.3.2 size
41+
42+
`.size()`とすると、配列の要素数を調べることができる。
4343

4444
```cpp:line-numbers
4545
vector<int> arr = {10, 20, 30, 40, 50};
46-
int siz = arr.size();
47-
cout << siz << endl;
46+
cout << arr.size() << endl;
4847
```
4948

50-
```
51-
[output]
49+
このコードの出力は以下のようになる。
50+
51+
```Output:line-numbers
5252
5
5353
```
5454

55-
これと、`for` を用いれば、配列の要素を全て取得することができる
55+
`.size()``for`を用いれば、配列の要素をすべて取得することができる
5656

5757
```cpp:line-numbers
5858
vector<int> arr = {10, 20, 30, 40, 50};
@@ -61,10 +61,11 @@ for (int i=0; i < arr.size(); i++) {
6161
}
6262
```
6363

64-
`for` 文の中で、 `arr[0]` から `arr[4]` までが1つずつ出力されるコードだという事が理解できるだろうか。`i < arr.size()`
65-
の条件から、`i` は 0 から 4 までの場合で実行される。(5 は `5 < 5` となり条件を満たさない。)
64+
`for`文の中で、`arr[0]`から`arr[4]`までが1つずつ出力されるコードだという事が理解できるだろうか。`i < arr.size()`の条件から、`i`は0から4までの場合で実行される。(5は`5 < 5`となり条件を満たさない。)
65+
66+
## 6.3.3 push_back
6667

67-
`.push_back()` を用いると、配列の末尾に新しい要素を追加することができる。
68+
`.push_back()`を用いると、配列の末尾に新しい要素を追加することができる。
6869

6970
```cpp:line-numbers
7071
vector<int> arr = {10, 20, 30, 40, 50};
@@ -74,11 +75,25 @@ cout << arr[5] << endl;
7475
cout << arr.size() << endl;
7576
```
7677

77-
```
78-
[output]
78+
このコードの出力は以下のようになる。
79+
80+
```Output:line-numbers
7981
-10
8082
6
8183
```
8284

83-
for文と組み合わせると、できる事が非常に広がる。
85+
for文と組み合わせると、できることが非常に広がる。
86+
87+
## 6.3.4 多次元配列
88+
89+
配列の中に配列を入れ子にすることで多次元配列を作ることができる。
8490

91+
以下は2次元配列の例である。(オセロ盤みたいなイメージ)
92+
93+
```cpp:line-numbers
94+
vector<vector<int>> v = {
95+
{1, 2, 3, 4},
96+
{3, 5, 1, 2},
97+
{10, 20, 10, 20},
98+
};
99+
```

0 commit comments

Comments
 (0)