プログラミングについて
課題1: キーボードから整数a, b の値を入力し, を計算して表示するプログラムを作成せよ.ただし,べき乗を計算するユーザ関数 int power(int a,int b) を定義し,関数の再帰的呼び出しを使用すること.なお,b >= 0 とみなし,bが負の値のときは「ここでは扱いません」と表示するようにすること.関数 power() の中で途中の計算も表示するようにすること.
作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,aの値として「学生番号下1桁 + 3 」 の値を入力し,bの値として「(学生番号下2桁を5で割った余り) + 1」の値を入力したときの結果を[実行結果]の次に貼り付けなさい.
実行結果例 : (学生番号 0234789 の場合)
( aは a= 9+3= 12 , b は b
整数aを入力して下さい:12
整数bを入力して下さい:5
power(12,0)= 1
power(12,1)= 12
power(12,2)= 144
power(12,3)= 1728
power(12,4)= 20736
power(12,5)= 248832
12の5乗は 248832 です
課題2: キーボードから英字の氏名を「名前_苗字」の順でアンダーバー( 「_ 」の文字) で区切って入力し,その文字列を文字コード順に並び替え,さらにそれについてバイナリサーチを実行して「i」の文字を探すプログラムを作成しなさい.並び替えた文字列およびその中の何番目に「i」が見つかったのかを表示するようにせよ.見つからなかった場合は「見つかりませんでした」と表示するようにせよ.実行結果例を参考にすること.
プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.確認が済み次第,作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の名前と苗字を入力したときの実行結果を[実行結果]の次に貼り付けなさい
実行結果例 : (氏名: 工大 太郎 の場合)
名前と苗字をアンダーバーで区切って入力してください(各先頭文字は大文字) Kodai_Taro
並び替え後
KT_aadioor
i を探します
lo=0 x[4]=a hi=9
lo=5 x[7]=o hi=9
lo=5 x[5]=d hi=6
lo=6 x[6]=i hi=6
i は 6番目にありました
課題3: 5桁の正の整数をキーボードより入力し、その各桁の値を降順(大→小の順)に並び換えてそれらを順番に表示するプログラムを作成しなさい.以下の手順に従うこと.
(1) int 型のサイズ5の配列 A を用意する.
(2) 5桁の正の整数をキーボードより入力し,その各桁の値が一桁目から順番に A の各要素に入るようにする (例:値が12345 のとき, A[0]=5, A[1]=4, A[2]=3, A[3]=2, A[4]=1 となるようにする)
(3) Aのデータを選択ソートにより降順に並び替える
(2)では繰り返し処理を行なうこととし,for 文を用いること.
(ヒント: たとえば 12345 の3桁目を取り出したいとき,まずその数を100 で割る.int 型同士の割り算の場合,小数点以下が切り捨てられるので 123 となる.それを10で割った余りを求めれば 3 が得られる.同様に,4桁目を取り出したいときは,1000 で割った整数値の10で割った余りを求めればよい)
(3)は演習(3) で作成したプログラムを参考にすること
プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.それが済み次第,完成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の学生番号下5桁の値を入力したときの実行結果を[実行結果]の次に貼り付けなさい.
実行結果例
学生番号0114583の場合
5桁の正の整数値を入力してください 14583
ソート前
3 8 5 4 1
i=0 8 3 5 4 1
i=1 8 5 3 4 1
i=2 8 5 4 3 1
i=3 8 5 4 3 1
ソート後
8 5 4 3 1
課題4: 以下の内容を実行するプログラムを作成しなさい.ただしMには「(各自の学生番号下3桁を5で割った余り)+5」を用いよ.また,Nには「(各自の学生番号下2桁を3で割った余り)+2」 を用いよ.作成したプログラムを以下の [プログラム] の次の行に貼り付けること.また実行結果を[実行結果]の次の行に貼り付けなさい.入力値は,学生番号の一桁目から順に入力し,さらに必要ならば「9,8,7」の順に入力せよ.以下の実行の概念図も参考にすること
実行内容
int 型のサイズ M の一次元配列 x があり,キーボードから値を入力してその配列の各要素に代入する.それらの値を N 個ずつ右にずらしてローテーションする
実行結果例 (学生番号 0123457 の場合)
M= (457 を 5で割った余り)+ 5 = 2+5 = 7
N= ( 57 を 3で割った余り)+ 2 = 0+2 = 2
よって,サイズ7の配列のデータを
右に2個ずつローテーション
(0) 整数を入力してください 7
(1) 整数を入力してください 5
(2) 整数を入力してください 4
(3) 整数を入力してください 3
(4) 整数を入力してください 2
(5) 整数を入力してください 1
(6) 整数を入力してください 0
ローテーション前 7 5 4 3 2 1 0
ローテーション後 1 0 7 5 4 3 2
課題5: キーボードから文字列を入力し,その文字列の2番目の空白の次の文字以降を表示するプログラムを作成しなさい.ただし,文字列の入力には関数 gets を用いること.
また,文字列のアクセスにはポインタを用い,関数 putchar を用いて一文字づつ表示させるようにすること.
実行結果は,学生番号,名前(英語),苗字(英語) をそれぞれスペースで区切って入力したときの結果を表示すること
実行結果例 : 学生番号0112345 氏名 田中健 の場合
文字列を入力してください。
0112345 Ken Tanaka
2番目の空白以降を出力します
Tanaka
windows vista
visual studioでのプログマミングの作成を多いと思いますがとても困っていますのでなにとぞお願いします。
補足
すいません手紙という表現が逆に伝わりにくくなってしまったようです。 手紙(情報)が0から1に行き、0に戻り2に行き、0に戻り3に行くのではなく 1通目の手紙(情報)が矢印でつながっている0番から1番と2番と3番で同時に受信できるということです。 また工程(正しくは行程)の定義もわかりやすくするため、ある地点から手紙を発信した回数を行程と定義します。 例えば、0番が手紙を送る場合、1、2、3番に手紙を同時に送るため、これを1行程とします。 次に1番が8番と4番に(これで2行) 2番が4番と5番に(これで3行) 3番が5番に(これで4行程) 手紙を送信。 8番が7(5行程) 4番が7と6(6行程) 1通の手紙を送るのに6行程 10通なら6行程*10通=60行程という値が結果として集計できるプログラムソースを書きたいと考えています。