スキップしてメイン コンテンツに移動

投稿

2022の投稿を表示しています

三角関数のグラフ <C言語>

C言語には三角関数を計算する関数が用意されています。 したがって、y = sinxの正弦曲線を簡単に書くことができます。 <書式> #include <math.h> double sin(double x) 0度から360度までを20度刻みで sin関数の引数に渡しています。 ただし、渡す値は度数ではなくラジアンです。 度数×円周率÷180 の計算式で、度数をラジアンに変換しています。 円周率はヘッダファイル(math.h)にM_PIとして定義されていることが多いです。 定義されていない場合はマクロで定義してください。     17          for (int i = 0; i <= 360; i = i+DEG){     18                  radian = i*M_PI/180;     19                  tmp = sin(radian);     20     21                  y = (int) (tmp*10);     22     23                  locate(x, 10-y);     24                  printf("%s", "+");     25     26                  x = x+2;     27          } サンプルコード      1  #include <stdio.h>      2  #include <stdlib.h>      3  #include <math.h>      4      5  #define locate(x,y)     printf("\e[%d;%dH", y+1, x+1)      6  #define DEG             20      7      8  int main(void){      9     10          double radian = 0.0;     11          double tmp = 0.0;     12          int x = 0;     13 

行番号をつけてファイル出力 <C言語>

fopne()でファイルをオープンします。 fnameが示すファイルを指定したモードでオープンします。 モードは、"r"でread、"w"でwrite、"a"でappend、"w+" と ”r+”でupdateです。 戻り値はFILE構造体のポインタを返します。オープンに失敗するとNULLを返します。 <書式> #include<stdio.h> FILE * fopen(char * fname, const char * mode)     11:         FILE * fp = NULL;     12:         fp = fopen(argv[1],"r");     13:         if (fp == NULL){     14:                 fprintf(stderr,"Can't opne File\n");     15:                 return 1;     16:         } fgets()でfpが示すファイルストリームから改行、またはbsize - 1までの1行分の文字列をbuffが示す領域に読み込みます。 戻り値はbuffのポインタを返します。読み込みに失敗したりEOFを検出するとNULLを返します。 <書式> #include<stdio.h> char * fgets(char * buff, int bsize, FILE * fp)     21:         while((fgets(buff,bsize,fp)) != NULL){     22:                 printf("%6d:   %s", i++, buff);     23:         } fclose()でファイルをクローズします。 戻り値は成功時に0を返します。失敗したらEOFを返します。 <書式> #include<stdio.h> int fclose(FILE *fp)     25:         if (fclose(fp) != 0){     26: 

乱数の生成 <C言語>

time()でtime_t型の整数値を取得します。 <書式> #include<time.h>               time_t time(time_t *timer); time_t timer; time(&timer); time_t型の整数値を符号なし整数型にキャストして乱数系列を初期化するseed値とします。 unsigned int seed; seed = (unsigned int) timer; srand()で乱数系列を初期化します。 <書式> #include <stdlib .h>                void srand (unsigned int seed); srand(seed); rand()で0からRAND_MAXの範囲内の擬似乱数を生成します。 <書式> #include <stdlib .h> int rand (void); printf("%d\n", rand()); サンプルコード #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){         time_t timer;         time(&timer);         unsigned int seed;         seed = (unsigned int) timer;         srand(seed);         int i;         printf("0~%dまでの乱数\n", RAND_MAX);         for(i = 0; i < 3; i++){                 printf("%d\n", rand());         }         printf("1~100までの乱数\n");         for(i = 0; i < 3; i++){                 printf("%d\n", rand() % 100 + 1);