SlideShare a Scribd company logo
1 of 43
プログラミング演習
5回
5−1
5−1概要
• htmlを作る
• 簡単
• 説明なし
• 終了
5−2
5−2概要
• 文字列を入力
• シフト数を入力
• 文字列をそれぞれシフト数分ずらす
• できた文字列をファイル出力
5−2考察
• 文字列を入力するということはchar型の変数が必要
• char型は配列で管理すれば一文字ずつ確認すること
ができる
• 文字というのはASCII codeの中では数字でしかない
• 数字なら足し算ができる!
5−2ヒント
• ‘b’というものを考えてみる
• ‘b’は’a’から数えて1番目の数である
• なので’a’ + 1は’b’のことだね
• このプラする値をshift(シフト)する値に変えてあ
げればある値分アルファベットをずらすことができ
る
5−2ヒント続き
• しかし、’z’ + 2 などというアルファベットの領域
をはみ出してしまうものはどうしようか?
• はみ出したら’a’から数え直したらいいね
• →26を引く
5−2別解
• 文字列を’a’からの距離に変換しておく
• そして変換した数字にシフトする値を足す
• それを26で割ってそのあまりを出力する!
• するとif文を使わずに実装することができる
5−3
5−3概要
• 5−2の反対をする(復元する)
• シフトする値を0から25まで試行してそれをファ
イルに出力
5−3考察
• 5−2の反対じゃん!
• でも次考えるべきなのは’a’よりも下になった時だ
• 26を足せばいいね
5−3ヒント
• 5−2のプログラムをの一部をfor文で囲む
• そしてプラスしていた処理をマイナスにする
• 飛び出したらその分補完してあげればいい
5−4
5−4概要
• 生徒の成績を構造体で管理し
• 4教科の合計を計算する
• そのあと点数の高い順に並び替えてファイル出力
5−4考察
• 構造体で管理しなければいけないので授業をきちん
と聞いておくかpdfを見て理解を深めなければいけ
ません
• 構造体の配列を使うことになりそうですなので、ア
ロー演算子ではなくドット演算子を使いそうだ
• データの入力は構造体をメイン関数で宣言した時に
初期化した方が良いでしょう
5−4考察続き
• 並び替え(ソート)をしなければいけません
• でも学籍番号も管理しなければいけないので標準関数であ
るqsortを使うことはできなさそうです
• じゃどうするか?自分で作ればいいですね
• バブルソートや選択ソートくらいなら簡単に作れそうです
• ソート時に値を入れ替える時に学籍番号も一緒に入れ替え
てあげることで学籍番号も一緒にソートできます
選択ソート
• 選択ソートとはピポットとなる数字を選択してそれ
よりも大きいかを順番に比較して、並び替えるソー
トのこと
• 次の例は昇順に並べるソートです
選択ソート
3 4 7 2 1 9
この配列を並び替えようと思います!
選択ソート
3 4 7 2 1 9
ピポット
比較!
まず3をピポットとして考えてみる
右のほうが大きいのでおk!
選択ソート
3 4 7 2 1 9
ピポット
比較!
まず3をピポットとして考えてみる
右のほうが大きいのでおk!
選択ソート
3 4 7 2 1 9
ピポット
比較!
右のほうが小さくなっちゃった
選択ソート
2 4 7 3 1 9
ピポット
入れ替える!
右のほうが小さくなっちゃった
2がピポットとして再開
選択ソート
2 4 7 3 1 9
ピポット
比較!
右のほうが小さい
選択ソート
1 4 7 3 2 9
ピポット
入れ替える
1をピポットとして再開
選択ソート
1 4 7 3 2 9
ピポット
比較!
右のほうが大きいのでおK
選択ソート
1 4 7 3 2 9
ピポット
比較!
右のほうが大きいのでおK
なので次は4をピポットとする
1は確定しました!
選択ソート
1 4 7 3 2 9
ピポット
比較!
右のほうが小さくなっちゃった
なので次は4をピポットとする
1は確定しました!
選択ソート
1 3 7 4 2 9
ピポット
入れ替える
右のほうが小さくなっちゃった
なので次は4をピポットとする
1は確定しました!
選択ソート
1 3 7 4 2 9
ピポット
これを続けていけば全て並び替えることができる
c言語で実装する場合は
for文を2回ネストすればできるはず!
5−4ヒント
• 点数の合計は構造体から値を取り出して4教科を足
せばいいのでできるはず
• 合計を管理する配列を作っておきましょう
• 合計を入れた配列と学籍番号を入れる配列を別に宣
言するか、合計の配列を2次元配列にして学籍番号
を入れておくと後々便利です
5−4ヒント続き
• ソートの時、変数を入れ替えるのはどうしよう?
• hako = a;
• a = b;
• b = hako;
• のようにすれば2つの変数を入れ替えることができ
ます
• この処理をするときに学籍番号も入れ替えておきま
しょう(次)
続き
• hako = a;
• a = b;
• b = hako;
• bangou_hako = banngou_a;
• bangou_a = bangou_b;
• bangou_b = bangou_hako;
• このようにすれば値と学籍番号を一緒に入れ替える
ことができます(変数名は知らん!!!)
5−4ラスト
• ソートした値と学籍番号をファイルに出力すれば完
成!
5−A1
5-A1概要
• 5−4のプログラムを2学期目も対応できるように
せよ
5−A1考察
• 5−4のプログラムの構造体を拡張して、8個の値
を管理できるようにすれば良い
• そして、合計するところでも少しプログラムをいじ
れば完成
5−A2
5−A2概要
• 5−4のプログラムを100人まで対応する
• データ入力は最初の初期化でするのではなく乱数で
決める
5−A2考察
• 構造体のメンバの初期化で代入が禁止されてしまっ
た。
• forを100回、回してデータを入力しなければいけな
い
• その中で乱数を使う必要がある
• 乱数で算出した値を構造体内のメンバに代入する
5−A2
• 乱数を使うときはrand()関数を使えば実装できる!
• でもこの関数から生成される数字は馬鹿でかい
• じゃどうするか!!??
• 101で割ったあまりを計算すれば良い!
• 変数 = rand() % 101;//これで実装できた!
5-A2
• だがしかし!!まだ足りない!
• 乱数の関数を使ったけどこのままだと何回やっても同じ値
になってしまう
• なので#include <time.h>//これをインクルードする
• srand((unsigned)time(NULL));//これをメイン関数の変数宣
言の後につけましょう
• そうすればきちんと乱数が生成されます
5-A2
• あとは5−4のようにファイル出力すれば完成です
!

More Related Content

Viewers also liked

プロエン4回
プロエン4回プロエン4回
プロエン4回evesanta1224
 
Innovative web design in Delhi
Innovative web design in DelhiInnovative web design in Delhi
Innovative web design in DelhiJatin Arora
 
Ppt tekpend
Ppt tekpendPpt tekpend
Ppt tekpendvikain
 
m1a sophie jochems
m1a sophie jochemsm1a sophie jochems
m1a sophie jochems120007444
 
IPA Menggolongkan Hewan
IPA Menggolongkan HewanIPA Menggolongkan Hewan
IPA Menggolongkan Hewanvikain
 
O pedagogo na educação do autista
O pedagogo na educação do autistaO pedagogo na educação do autista
O pedagogo na educação do autistaSimoneHelenDrumond
 
Industria digitala
Industria digitalaIndustria digitala
Industria digitalaGrupo Ate
 
Epic research malaysia daily klse report for 23rd november 2015
Epic research malaysia   daily klse report for 23rd november 2015Epic research malaysia   daily klse report for 23rd november 2015
Epic research malaysia daily klse report for 23rd november 2015Epic Research Pte. Ltd.
 
Dhcp server dan dns server
Dhcp server dan dns serverDhcp server dan dns server
Dhcp server dan dns servermuhlih
 

Viewers also liked (15)

プロエン4回
プロエン4回プロエン4回
プロエン4回
 
Preliminary evaluation
Preliminary evaluationPreliminary evaluation
Preliminary evaluation
 
Essex boys case study
Essex boys case studyEssex boys case study
Essex boys case study
 
Innovative web design in Delhi
Innovative web design in DelhiInnovative web design in Delhi
Innovative web design in Delhi
 
SOLIDWORKS Solution
SOLIDWORKS SolutionSOLIDWORKS Solution
SOLIDWORKS Solution
 
Kill Bill Opening Scene
Kill Bill Opening SceneKill Bill Opening Scene
Kill Bill Opening Scene
 
Ppt tekpend
Ppt tekpendPpt tekpend
Ppt tekpend
 
m1a sophie jochems
m1a sophie jochemsm1a sophie jochems
m1a sophie jochems
 
IPA Menggolongkan Hewan
IPA Menggolongkan HewanIPA Menggolongkan Hewan
IPA Menggolongkan Hewan
 
O pedagogo na educação do autista
O pedagogo na educação do autistaO pedagogo na educação do autista
O pedagogo na educação do autista
 
Industria digitala
Industria digitalaIndustria digitala
Industria digitala
 
Epic research malaysia daily klse report for 23rd november 2015
Epic research malaysia   daily klse report for 23rd november 2015Epic research malaysia   daily klse report for 23rd november 2015
Epic research malaysia daily klse report for 23rd november 2015
 
критерии школа
критерии школакритерии школа
критерии школа
 
Wk7AAssgnAromokeyeN
Wk7AAssgnAromokeyeNWk7AAssgnAromokeyeN
Wk7AAssgnAromokeyeN
 
Dhcp server dan dns server
Dhcp server dan dns serverDhcp server dan dns server
Dhcp server dan dns server
 

第五回