20日までは「課題1から13までやってください」だったんです。
それが、21日から「みなさん13まではできましたね。では次は40まで…」
っておい!いきなり40かwww
しかも21日の丸一日使って14から40までの解説を一気にw
覚えられるかっちゅーねんwww
22日半日かかって14を作りました。(前半は説明をもう一度聞いていた)
で先日の23日。15を作るのにホントに丸一日かかったよw
そしてこれがモンダイの課題15。
------------------------------------
C課題15:制御構造
10個のアレーに下記のようにランダムに数
値が入っている。それを昇順に並べ変えるプ
ログラムの作成。また、ソート前のアレーとソー
ト後のアレーの内容を表示すること。
array[]={3,2,5,6,1,3,2,7,0,4}
-----------------------------------
めさ悩みました。
このへんから「ユーザー関数」が入ってくるのですが、
まずその「ユーザー関数」という存在を知りませんからね。
ちまちまちまちまmainの中で
「1個目と2個目を比較して、小さいほうを1個目の所に入れ替えれば…」
と作っていたら、ものすごゴチャゴチャしてきてワケ判らないことにw
ループを最低3つ作らなきゃいけないんですよね。
書いてる途中から
「ここのループがここに戻って、この処理が終わったらここに…戻るんだよね???」
と自分でも混乱して、どうしたらいいか判らなくなってきました。
ゴチャゴチャしすぎてて、動作と動作がうまくつながらず、暴走の嵐でw
で、考える。
「これってサブルーチン化できないのかな…?」
実はサブルーチン化、これが「ユーザー関数」です。
で、そこまでは考えついたものの、具体的にどうしたらいいかが判らないw
煮詰まって煙草休憩にw(勝手に出て行っていいんだ♪)
そこにはちょうどサボ…いや、煙草休憩していた喫煙者1/2が。
「どこまでできました?」と話題を振ってくれたので、「15で悩んでる」と言ったら
「ああ、それ僕、参考書丸写しで作りましたよwww」と。
教科書として使っている本のほかに、教室の本棚にいくつか参考書があり、
「判らない人は勝手にそれを見て調べてください」と言われるので利用してます。
で、ページを教えてもらって、同じく丸写ししましたw
で。
写したはいいが、まったく意味が判らないw
その本の解説部分を必死で読むこと数時間。
昼休憩をはさんで、本の解説は理解したが、
このプログラムの何がどう「ソート」になるのか理解する為、
「aに具体的な数字を入れてどう動くか」を紙に書くw
「おけ!把握した!」と思った時にはすでに午後3時だったぜ♪
(途中何度か寝てたのはナイショだ)
そして、上記をプログラムに追加して、テスト。
…まったく動かない…^^;
なにしろ参考書に書いてあったのは上記のプログラムのみ。
これをどうやってmainの中に組み込むか、まで書いてないんだよねw
ここからまた四苦八苦。
学校は16時30分まで。
16時20分頃まであーでもないこーでもない、とやってたんですが、
見かねた隣の席の人が「どうしたの?」と声をかけてくれました。
で。
「あ、呼び出し方が間違ってるだけですよ。
ここの変数をこうして…こうして…」と直してくれたら
まともに動くようになったぉ♪ビバ隣の人♪
完成品はこちら。
結果はこんなふうに表示されます。(点線なしね)
-------------------------------------
ソート前=3256132704
ソート後=0122334567
続行するには何かキーを押してください
-------------------------------------
ソート前の内容を表示後、関数を呼び出して演算したあと結果を表示、なだけですね。
arrayの中身を「キーボードから入力しろ」とか言われたらお手上げだが、これはとりあえず完成w
1課題1日使ってたら、課題40まで終わるのはいつになることやらw
…くそう。ここに貼り付けるとタブが表示できないからすごく見にくいw
それが、21日から「みなさん13まではできましたね。では次は40まで…」
っておい!いきなり40かwww
しかも21日の丸一日使って14から40までの解説を一気にw
覚えられるかっちゅーねんwww
22日半日かかって14を作りました。(前半は説明をもう一度聞いていた)
で先日の23日。15を作るのにホントに丸一日かかったよw
そしてこれがモンダイの課題15。
------------------------------------
C課題15:制御構造
10個のアレーに下記のようにランダムに数
値が入っている。それを昇順に並べ変えるプ
ログラムの作成。また、ソート前のアレーとソー
ト後のアレーの内容を表示すること。
array[]={3,2,5,6,1,3,2,7,0,4}
-----------------------------------
めさ悩みました。
このへんから「ユーザー関数」が入ってくるのですが、
まずその「ユーザー関数」という存在を知りませんからね。
ちまちまちまちまmainの中で
「1個目と2個目を比較して、小さいほうを1個目の所に入れ替えれば…」
と作っていたら、ものすごゴチャゴチャしてきてワケ判らないことにw
ループを最低3つ作らなきゃいけないんですよね。
書いてる途中から
「ここのループがここに戻って、この処理が終わったらここに…戻るんだよね???」
と自分でも混乱して、どうしたらいいか判らなくなってきました。
ゴチャゴチャしすぎてて、動作と動作がうまくつながらず、暴走の嵐でw
で、考える。
「これってサブルーチン化できないのかな…?」
実はサブルーチン化、これが「ユーザー関数」です。
で、そこまでは考えついたものの、具体的にどうしたらいいかが判らないw
煮詰まって煙草休憩にw(勝手に出て行っていいんだ♪)
そこにはちょうどサボ…いや、煙草休憩していた喫煙者1/2が。
「どこまでできました?」と話題を振ってくれたので、「15で悩んでる」と言ったら
「ああ、それ僕、参考書丸写しで作りましたよwww」と。
教科書として使っている本のほかに、教室の本棚にいくつか参考書があり、
「判らない人は勝手にそれを見て調べてください」と言われるので利用してます。
で、ページを教えてもらって、同じく丸写ししましたw
int sort(int a[ ], int n)(コメント欄まですべて丸写しw)
/* a=入力文字列*/
/* n=データの個数*/
{
int min;
/*最小値*/
int i,j;
/*カウンタ用の変数*/
int min_no;
/*最小値が格納されている要素番号*/
for (i=0; i<n-1;i++){
min_no=i;
/*min_noを初期化*/
min=a[min_no];
/*minを初期化*/
/*最小データを探す*/
for (j=i+1; j<n; j++){
if(a[j]<min){
min_no=j;
/*最小データを入れ替える*/
min=a[j];
}
}
/*先頭のデータと最小のデータを交換する*/
a[min_no]=a[i];
a[i]=min;
}
return (0);
}
で。
写したはいいが、まったく意味が判らないw
その本の解説部分を必死で読むこと数時間。
昼休憩をはさんで、本の解説は理解したが、
このプログラムの何がどう「ソート」になるのか理解する為、
「aに具体的な数字を入れてどう動くか」を紙に書くw
「おけ!把握した!」と思った時にはすでに午後3時だったぜ♪
(途中何度か寝てたのはナイショだ)
そして、上記をプログラムに追加して、テスト。
…まったく動かない…^^;
なにしろ参考書に書いてあったのは上記のプログラムのみ。
これをどうやってmainの中に組み込むか、まで書いてないんだよねw
ここからまた四苦八苦。
学校は16時30分まで。
16時20分頃まであーでもないこーでもない、とやってたんですが、
見かねた隣の席の人が「どうしたの?」と声をかけてくれました。
で。
「あ、呼び出し方が間違ってるだけですよ。
ここの変数をこうして…こうして…」と直してくれたら
まともに動くようになったぉ♪ビバ隣の人♪
完成品はこちら。
/*============================*
課題名:C課題15:制御構造
引数: なし
戻り値: なし
*============================*/
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define OK 0
#define NG 1
/*==============*
* ソート *
*==============*/
上記関数部分貼り付け
/*==============*
* メイン処理 *
*==============*/
int main(void)
{
int i;
int array[] = {3,2,5,6,1,3,2,7,0,4};
int n=10;
printf("ソート前=");
for(i=0; i<=9 ; i++)
/*i番地のカウンタ。iが9になるまで繰り返す*/
printf("%d",array[i]);
/*array[0]から[9]までの数値を連続表示*/
printf("10");
/*改行のみ*/
/*ソート*/
sort(array, n);
/*sort=上でつけた関数名。変数aに上記arrayの中身を代入、nに上記回数を代入*/
/*ソート終わり*/
{
printf("ソート後=");
for(i=0; i<=9; i++)
printf("%d",array[i]);
printf("10");
}
return(OK);
}
結果はこんなふうに表示されます。(点線なしね)
-------------------------------------
ソート前=3256132704
ソート後=0122334567
続行するには何かキーを押してください
-------------------------------------
ソート前の内容を表示後、関数を呼び出して演算したあと結果を表示、なだけですね。
arrayの中身を「キーボードから入力しろ」とか言われたらお手上げだが、これはとりあえず完成w
1課題1日使ってたら、課題40まで終わるのはいつになることやらw
…くそう。ここに貼り付けるとタブが表示できないからすごく見にくいw