プログラミング基礎覚え書き⑦(置き換え文マクロとソート)

参考文献:高橋麻奈著『やさしいC第5版』

マクロ
プログラムのコンパイル前に置き換えを行う機能のこと。
配列の要素の数や繰り返し回数が変更された場合、一括で変更することができる。

#define マクロ名 置換する文字列

といったようにプリプロセッサ命令から記述する。

例えば、

#define NUM 5

と、マクロを書くと、そのコードにあるNUMはすべて数字の5に置き換わる。
つまり、コード冒頭にマクロを記述すると、ある文字列を他の文字列に置き換えたくなったとき、コードにある対象の文字列を自分ですべて探し出すこともなく、自動的に置き換えることができる。

特定回数入力された整数の中での最大値を出力するコード
マクロを冒頭に宣言しているので、このNUMの値(入力回数)を好きに変えることができる(課題では入力回数は3に設定)。
マクロのNUMと、入力回数iと、入力された整数の値test[i]がこんがらがってくるけど、ちゃんとコンパイルできるっぽい。

#include
#define NUM 3

int main(void)
{
int i,max=-100000;
int test[NUM];

printf("%d個の整数を入力して下さい。\n",NUM);

for(i=0; i < NUM; i++)
//NUMは配列の要素数として設定されているので、入力回数iはi<=numにしなくてもよい(要素数は0からカウントされるので1少なくずれる!)。


{
printf("整数:");
scanf("%d", &test[i]);
}

for(i=0; i < NUM; i++)
{
if(max < test[i])
max = test[i];
}

printf("%d個の整数の最大値は%dです。\n",NUM,max);

return 0;
}

特定回数入力された整数の中での合計値と平均値を出力するコード
合計値を求める計算式がどうしてもできなかったので、∑的なやつ諦めて、すげえ単純なコードにしてしまった。

#include
#define NUM 3

int main(void)
{

int i,All;
int test[NUM];

printf("%d個の整数を入力して下さい。\n",NUM);

for(i=0; i < NUM; i++)
{
printf("整数:");
scanf("%d", &test[i]);

All = test[0]+test[1]+test[2]; //☚ギブアップした部分。※All=All+test[i];でも行けた。
}

printf("合計:%d\n",All);
printf("平均:%.2lf\n",(double)All/3);

return 0;
}

ソート
複数のデータをある規則に従って順番に並び替えること。
昇順(アセンディングソート)は小さい順もしくは古い順。降順(ディセンディングソート)は大きい順もしくは新しい順。

入力された整数を昇順に並び変えて出力するコード
①入力、②ソート、③出力という三部構成になっている。

#include
#define NUM 10

int main(void) {

int i,j,num,count=0;
int test[NUM];

//①入力編
while(1){

printf("整数を入力(負の数を入力すると終了):");
scanf("%d", &num);
if(num < 0)
break;

test[count] = num;
//入力された値NUMを[ ]の中に代入。

count++;
//さらに入力された値の回数をカウント。

}

//②ソート編
入力された複数の整数のうち、2つ(iとj)を取り出して比べっこするようになっている。
iは、最初から最後の一個手前までの数。
jは、2番目から最後までの数。
この2つの変数を順に比べていき、jよりもiの整数の方が大きかった場合は、iとjの整数を前前前世的に入れ替えさせる。

for(i=0; i < count-1; i++)
{
for(j=i+1; j < count; j++)
{
if(test[j] < test[i])
{
num = test[j];
test[j] = test[i]; //この3行が君の名は。
test[i] = num;
}
}
}

//③出力編
for(i=0; i < count; i++)
{printf("%d ",test[i]);} //スペースを入れないと、すべての数字がくっつく!

printf("\n");

return 0;
}
Calendar
<< April 2024 >>
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
282930
search this site.
tags
archives
recent comment
recent trackback
others
にほんブログ村 科学ブログへ にほんブログ村 科学ブログ 恐竜へ カウンター
admin
  • 管理者ページ
  • 記事を書く
  • ログアウト