2025年11月05日 第7回
配列が0-originなことを忘れてしまい,ミスをしてしまうことが多かったので,ミスを無くすことは難しいと思った.
ある意味慣れなのだと思いますが,ポインタで改めて理解をしてくれるでしょう.
今日の課題では修正を重ねに重ねて仕上げたため,
後から見ると汚いコードとなってしまった.
今回の課題を通して配列は理解できたような気もするが,
逆にifなどの繰り返す作業はまだ使いこなしきれていないと感じたため,
頑張って頭に落とし込めるようにしていきたい.
演習問題をもう一度やってみると良いのでは?
本日もありがとうございました. 課題5でaからzまでそれぞれの文字数を出力する際, for文でまとめて処理する方法が分からなくて困りました . そのほか全体的にコードをコンパクトにまとめることができずに行数が膨大になってしまいました. うまい方法はあったのでしょうか.
具体的にどのようなコードを書いたのかがわからないので,
なんとも言えないですね.議論はできるので,コードを見せてください.
今日の内容もとても複雑でした. フローチャートをつかって頭を整理して時間をかけてようやく内容をつかめました.
掴めたのであれば良かったと思います.
課題の内容が難しくなってきて面白くなってきました.
これからも授業の内容を理解して頑張りたいです.
分からないときは質問してください.
本日は配列・文字列処理について演習を行なった. 最近はC言語 (ちょっとだけC++も独学中)を自主学習として一日40分程度勉強しているので, 以前よりは簡単に感じた. また個人的にはC言語を知れば他の言語を学ぼうとする時, 理解の一助になると考えている. その時を楽しみに待ちながらこれからも頑張ろうと思う (きっと色々な世界が広がっているはず).
とてもよろしいと思います.この調子で進めてください.
今回は課題6の魔法陣の作成にかなり苦戦した.
また,
課題5もごり押しで作成したためコードがとても長くなってしまったので,
もっと簡略化できないかを考えてみようと思った.
ごり押しというのがどんな感じがわからないですが,
不明であれば,質問してください.
文字列の取得など,
昔学んだ内容を少し忘れていると感じたので,
復習していきたい.
もう一度演習問題をやってみると良いのでは?
配列の使い方に慣れた.
配列は0から始まるのがすこしややこしかった.
理由はポインタのところで説明します.
今日の課題も集中して取り組むことができた.
確か,
共通テストの際の情報でも今日の内容と近いようなことを学習したので,
思い出しながらできたので良かった.
今までの授業内容も忘れないようにしっかりと復習できるようにしたい.
もう高校で習っているのですね.
難しかった.
質問してもらうと良いと思います.
配列に文字列をいれると1文字ずつ格納されていくと気づきました.
魔法陣のアルゴリズムにおいて,
やりたいことは分かるがどういうプログラムに落とし込むかで詰まってしまいました.
無理矢理冗長なコードで実装できそうだとも考えましたが,
パワープレイでなんとかすることは実際あるのでしょうか.
パワープレイにする必要がなく作れると思います.
後半に行くにつれて難しかった.
rand関数など忘れかけていたものも多かったので,
復習しながら定着させていきたい.
rand関数は使わないようにしましょう.
今回の講義では配列について学んだ.
多くの数字データを一つ一つ記憶するのではなく,
num[i]などで一気に記憶することができるようになってだいぶ楽になったと感じた.
for分やwhile文との相性がとてもよく,
iの値を動かしつつ,
行列の計算をすることができるようになって感動した.
私は今回のコードを書く際にiを使い回してしまって,
プログラムがうまく動かないことが度々あった.
iの値を0にリセットしたり,
別の文字を使ったりするといったような工夫をすることで,
このようなミスをなくしたいと思った.
安易な使い回し,コピペは危険ですね.
今回も難しいと感じた.
配列とfor文を用いることによって,
複雑なコードをきれいに書くことができるとわかった.
予習と復習をしっかりと取り組んで,
次回に備えたい.
うまくできましたかね.よろしいと思います.
難易度が高くなりフローチャートの重要性が増してきたと感じました
そうですね.重要ですね.
課題がどんどん複雑になっていき,
教科書だけでなくインターネットやフローチャートを使わないと課題をこなすのが難しくなってきました.
特に今回の課題の中では行列や魔法陣の問題が難しかったです.
使えば良いではないですか.
今回も効率よくプログラミングについて学習できた.
配列ということで,
多くの情報を保存できるようになった.
これによりできることの幅が広くなったように思いました.
そうですね,幅は広がりますね.
今回の課題は簡単なフローチャートのようなものを考えてからコードを書いたのにもかかわらず,
思ったように動かないことが多く,
もともとの考え方が悪いのかコードの書き方が悪いのか判断するのに時間をかけてしまった.
これで良いか,誰か他の人に説明してみると良いでしょう.
前回に引き続き難易度が高かったように感じた.
参照が間違っているせいか「segmentation fault」という表示が出てきたことが何度かあった.
フローチャートを書いてもどうしてもミスが生まれてしまった.
典型的には,配列の大きさのミスですかね.
課題量がいつもより少なかったので早く終わるかと思ったら,
終わりませんでした.
特に後半の課題が難しかったです.
家でやるようにしてもらえば良いと思います.
配列をきちんと範囲内に入ったままのように動かすのが大変だった.
もっと丁寧に考えていければいいと思った
範囲内に入ったまま?
今回の課題は時間がかかってしまった.魔法陣の問題は現在の自分のいる座標を設定して,移動しながら考えるとわかりやすかった.かなり頭を使って問題を解いたので楽しかった.
楽しいのであれば良かったと思います.
与えられた条件のときのみに仕えるプログラムではなく課題1や2のように任意のNで用いることができるように一般化をすることが実際にプログラムを組むときには大事なんだと思った.
そうですね.うまく作れるとそのようにできるでしょう.
配列を使うことによってできることが増えたが,
配列を使用する際は範囲外アクセスが起きないように注意したい.
大切なところですね.
今回は低気圧による頭痛がなかったため,
楽しみながらコードを作成することが出来た.
課題を授業内に終えることはできていないが,
今回は久々に難易度がやや落ちた印象で,
少し気が楽だった.
配列についてaをbに置換したり,
aからzまで26種類だったりと出力する文字量も行数もそこそこ多くやりがいがそれなりにあった.
年始のテストに向けて復習をそろそろやりたいとは感じているものの,
他の授業のレポートなどに追われているせいであまり復習をできていないのがもどかしい.
冬休みに復讐することになりそうだが,
冬休みにやらない可能性がそこそこあるため今から少し憂鬱である.
でも引き続き頑張りたい.
まぁ,大体やらないですね.せっかくなので,楽しい年末年始を過ごしましょう.
まだ1年生ですからね.
今回の演習も楽しかった.
文字列を扱う際,
デバッグ用にforでcharacter[i]をprintfしておくなど,
実際の中身のデータがどうなっているか随時出力しておくと修正や検討が簡単になってよかった.
よろしいと思います.うまく変数の値を知るようにしてください.
C言語のいろいろな機能がどんどん見つかって楽しい.
ただ細かい制約も気にしないといけないため,
気を遣って実装しなければならない.
そうですね.色々と制約は増えると思います.
今回は変数を用いた配列などについて実際にコードを書いた.
課題では行列の計算についても触れた.
単純な計算ではあったが,
行列とプログラミングの関わりがあることを示唆するような課題であり,
今後の授業に対する期待が高まった.
うまく進めてくれているようで良いと思います.
課題6,7の表を出力するプログラムを打つのに多少苦戦したが,
オプション課題までやり切れたので良かった.
よろしいと思います.
魔法陣の課題が非常に苦戦しました.
何がダメだったのかわからず全てをもう一回書き直したら正常に動作したので良かったですが,
結局元のコードが何がダメだったのかが分かってないままなので,
(ダメだったコードは保存しているので)原因を解明したいです.
元のコードを見せてもらうと良いかもしれません.
魔方陣を作るのにかなり時間がかかってしまったが,
自分なりにしっかり考えて試行錯誤出来たので良かった.
配列が0から始まる事を時々忘れてしまい,
思うように動かないことがあったので今後は気をつけたい.
次回は大丈夫でしょう.
今回の演習では,
配列について学んだ.
演習問題の中で特に文字列の問題と魔法陣の問題が複雑で苦戦した.
配列に加えてこれまで扱ったif文やfor文が組み合わさることで難しくなるのだと実感した.
習ったことは使いこなせるようにしっかり復習を行いたい.
そうですね.でも使えるようになると便利ですね.
フローチャートを簡単に書くだけでもかなり楽にコードを書くことができるようになりました.
今回はいつもより早く終えることができてとてもよかったです.
よろしいと思います.
本日の課題では,
配列を扱いました.
課題5の入力文字列に含まれるアルファベットの数を,
文字コードを使って考えましたが,
万が一環境の違いから評価する際にうまく動かなかったら.
..と少しヒヤヒヤしています.
英数字は基本どの文字コードでも共通だったはず.
うまく動きましたか?
今回は課題6の魔方陣の問題で苦戦した.
二次元配列で数字の移動先を処理していたが,
移動先の座標(表現が間違っていたらすみません)を計算するときに一時変数を使用することの大切さを学んだ.
次に同じようなプログラムを組むときは一時変数を積極的に使っていきたい.
間違っていないですよ.うまく考えていると思います.
私は高校生のときに特に3次元以上の多次元配列の扱いに苦労していたのだが,
列や表のような視覚的イメージで捉えるのではなく,
変数に名前を付けているだけなのだと考えるようになってから何次元の配列でも混乱せずに書けるようになってきたので良かった.
線形代数を勉強しているときも,
a_ijのように添え字を使って表記すると混乱しがちだが,
文字に名前を付けているだけと考えることで扱いやすくなった.
また,
C言語で配列外参照がランタイムエラーにならず負のインデックスなどを入れても動くことがあるのは知っていたが,
実際未定義の値が出力されるのを確認して高揚した.
こうした配列やポインタ周りはC言語特有の楽しい部分なのでしっかり理解したい.
文字に名前をつけるというのは,例えば,aをaと呼ばず,高石あかりみたいな名前をつけるということですかね.
どのような方法か興味があるので教えてください.
配列は同じ種類のデータをひとまとめにして扱える便利な仕組みで,
たくさんのデータを効率よく管理できることが分かった.
最初は「インデックス」という番号の考え方が少し難しかったですが,
実際にプログラムで使ってみると理解しやすかった.
これからは配列を使って,
より複雑なデータの処理や計算ができるようになりたいと思う.
ぜひそうなってください.期待していますよ.
乱数の生成について自身の理解が浅いことが実感できた.
もう一度学習を行い,
C言語の乱数の仕様やrand関数の危険性などについて理解しようと思う.
わからなければ質問してください.
問題数はちょうど良かったが課題5が入力内容が多く結局時間がかかってしまった.
課題5の(2)は26個の配列の要素を1つ1つアルファベットと対応させて解いたが,
もっと短く済ませられるすごい方法があったのかもしれない.
方法は色々とあるでしょう.
コンパイルは通るが思い通りの動作をしない,
ということがかなり増え,
時間はかかるし難しいが,
前にも増して面白いと感じる.
習ってきたことの積み重ねなので忘れないように定期的に復習したい.
これからが正念場ですね.
今回の課題から難易度が若干上がったと感じた.
オプション課題についても取り組んでいるが,
条件を理解するところから若干時間がかかってしまった.
オプション課題もやっているのはとてもよろしいと思います.
今回の演習では,
配列を使って,
同じ型同士の要素をまとめて扱う方法について知ることができた.
配列の扱いに関しては,
問題なく進めることができたが,
条件分岐やループ処理といった前回までにやった内容でかなりつまずいてしまった.
また,
演習問題で作成するプログラムが複雑になってきたので,
フローチャートがより重要になってきたことを実感した.
そうですね,流れを理解してから始めましょう.
行列の積を求めるコードは少し難しかった.
for文を3重にして使うとわかっても添え字をどう動かせばいいのかがややこしかった.
配列の要素を初期化していなかったため出力しか値がおかしくなったので初期化は忘れないことが大切とわかった.
魔法陣を作成するときに次の行や列をあまりを使って表せば単に1増えるときも0からN-1にうつる時も一意に表せると気づくことは難しかった.
でも気付いたかな?
今回は配列についての演習を行った.
最初とは違い1つ1つの課題が重く,
たくさんの時間を割いてしまう.
また,
今までのことを用いてプログラムをするため,
思い出すことが必要になり余計に時間がかかってしまう.
予習復習を怠らずに行っていきたい.
色々とこなしていくうちに出来るようになるでしょう.
課題5でaのとき,
bのときとやっていくと時間がかかってしまうのでなにか簡単にする方法があるとは思っていましたが,
自分では思いつくことができませんでした.
次回は自分で思いつけるように頑張ります.
わからなければ質問してくれたら良いのですが, まずは作ってみましょう.
今日の内容も複雑でした.
フローチャートで考えてもよくわからなかったけど時間かけてやるとできました.
理解はできましたか.
最近の課題は1つ1つ難しいものが多いですが,
やりがいがあって楽しいです.
今回の課題の中では魔法陣を作るものが一番手こずりました.
単に行と列を移動させるだけではなく,
一番上と一番下がつながっていることを考慮しなきゃいけないのが大変でした.
今回はNが奇数のものでしたが,
Nが偶数の時はどうすればいいのか気になります.
考えてみよう.
課題5でありえないほど縦に長いコードができそうになってしまい,そんなわけはない!と頑張って考えたらしっかり短くまとまりました.
配列と繰り返しの組み合わせが偉大でした.
偉大?
魔法陣の実装が見た目より簡単で面白かったです.
毎回のオプション課題と,
前回に演習日を設けたような大きいオプション課題のどちらを優先したらいいのか教えていただけると助かります(評点的に).
どちらも同じですが,そろそろ点取り主義はやめたら?大学生なのですから.
基礎的な内容だったら難なくプログラムを作成できるので,
今回の魔法陣のものなどを筆頭とした応用的な演習に早く慣れたいです
コードをかいていくうちになれるでしょう.
配列とループ変数を用いて複数の同質のデータを取り扱う方法や,
2次元配列を用いて行列を取り扱う方法を学んだ.
よろしいと思います.
魔法陣の問題が難しかった.
はじめはif構文で特定の行や列になったら新しく定義しなおす処理を入れていた.
(行変数i,
列変数j,
魔法陣に入る数xとして例えばi=0になったらi=N-1,
j=N-1になったらj=0,
x%N==0になったらi=i+1)しかし条件が重複する場合が存在することなどが原因で上手く処理できなかった.
しばらく考えていたところ行と列の番号はNで割ったあまりを用いてi = (i - 1 + N) % N,
j = (j + 1) % N;と表せることに気が付いたので,
うまくいった.
そうですね.それが良いでしょう.
配列が0から始まることを忘れ,何度かミスをした.今回もフローチャートは書いていたが,なかなかミスの発見に手こずったため,次はフローチャートを書く段階で気をつけておきたい.
色々と失敗することが大切かと思います.
今日の課題の中でもkadai6が特に難しかったです.
平面グラフのx,y座標と表の行,
列の順番を毎回混合してしまうので早く習得したいです.
落ち着いて考えたら大丈夫と思いますよ.
自分の頭の中で処理する容量の限界を感じたのでこれからは積極的に紙に書いて考えていきたいです.
じっくりゆっくり着実にこなしていきたいです.
話は変わるのですが初回からずっと使ってい#include<stdio.h>って何なのですか.
今まで髪に書いていなかったのですか?
プリプロセッサについては説明したと思います.
過去の講義動画をみてください.
for,while,ifなどとプログラムの選択肢が広がってきたからこそより単純な形に出来ないかよく考えてから取り組む必要があり,
今回はかなり手間取ってしまった.
配列の添え字が0から始まることに慣れておらずfor文を書くときに混乱したからもう少し練習して早く慣れたい.
落ち着いて考えるようになれば大丈夫と思います.
構造や処理はすぐに思いつくが,
それを実行しようとコードを書いてもなかなか上手くいかず難しいと感じた.
エラーが出ているところとは別の部分が原因でエラーが出てしまうのと,
上手く動かないものでもコンパイル出来てしまうから原因を探すのに時間が取られる.
とてもイライラする.
落ち着いて.
今回は,
配列を使用して主にコードの簡略化を学びました.
配列を使うことにより,
for文が使いやすくなって,
良かったです.
よろしいと思います.
今回の課題もかなり苦労しました.
特にfor文は何度も使用するため,
変数の扱いも含めてもっと慣れていく必要があると感じました.
配列の概念を理解して使うこと自体はそこまで抵抗なかったです.
理解はできたようなので,落ち着いてやれば大丈夫とおもいます.
配列の初期化を忘れたことで,
バグが発生し,
原因を発見することに苦労した.
表示されたでたらめな数字を見て,
はじめは配列の範囲外の値を読み込んでいるのかと思ったが,
灯台下暗しなオチであった.
配列に限らないが,
変数を定義する際には必ず初期化もセットにして行うように意識したい.
その通りですね.大切です.