• 締切済み

プログラム

#include "CScreen.h" #include <math.h> //定数定義 #define LAST_PAS_X (30) void main(void) { float sam=3.1415926f; float jim,zak=0,dom=12; int x=40,y=12,X,Y; CUROFF(); for(jim=1.0f;jim<dom;jim+=0.035f) //ループ開始 { X=(int)(x+cos(zak)*jim*2); Y=(int)(y+sin(zak)*jim); LOCATE(X,Y); COLOR(rand()%7+1); //色の処理 { printf("**"); //**入力 } WAIT(10); zak+=0.1F; while(zak>=sam*2) //*ループ { zak-=sam*2; } } //ループ終了 LOCATE(1,24); } 関数ヘッダとはなんですか。 どこに関数ヘッダを書けばいいのですか?  詳しく教えてください。

みんなの回答

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.1

提示されているコードと質問がどのように関連するのかよくわかりませんが、関数ヘッダとは関数の説明のようなものだと思います。ですから、 /* ===sub2の関数ヘッダ===(関数の機能や、入力データの説明や、戻り値の説明を書く) */ int sub2 (void) { /*関数sub2のコード*/ } /* ===sub1の関数ヘッダ=== */ int sub1 (void) { /*関数sub2のコード*/ sub2 () ; } int main (void) { /*関数mainのコード*/ sub1 () ; } のように各関数の先頭に付加するものと考えますけど。

関連するQ&A

  • ハンガリアン記法

    #include "CScreen.h" #include <math.h> //定数定義 #define LAST_PAS_X (30) #define PI 3.1415926f #define HI 0.035f //メイン関数 // 引数なし // 戻り値なし void main(void) { float sam=PI; float jim,zak=0,dom=12; int x=40,y=12,X,Y; CUROFF(); for(jim=1.0f;jim<dom;jim+=HI) //ループ開始 { X=(int)(x+cos(zak)*jim*2); Y=(int)(y+sin(zak)*jim); LOCATE(X,Y); COLOR(rand()%7+1); //色の処理 { printf("**"); //**入力 } WAIT(10); zak+=0.1F; while(zak>=sam*2) //*ループ { zak-=sam*2; } } //ループ終了 LOCATE(1,24); } このプログラムの変数名をハンガリアン記法で変えたいんですがよくわかりません。 教えてください。

  • C言語の実数型の足し算

    C言語初心者です。関数の勉強していて、実数型計算に出くわしました。 #include <stdio.h> float add(float a, float b) { return a+b; } int main(void) { float x=10.5,y=20.3; printf("%f %f\n",x,y); printf("%f\n",add(x,y)); return 0; } としたら、 10.500000 20.299999 30.799999 という結果になりました。今のところint型でずーっと勉強していたので、20.3の20.299999表記が怪しく感じられ、結果も同様に怪しく感じられます。どうして、10.5+20.3=30.8とすっっきり表示してくれないのでしょうか。

  • 次のプログラムは、円周率だの近似値を求めるプログラムである。プログラム

    次のプログラムは、円周率だの近似値を求めるプログラムである。プログラム中の○に適するものを記入しなさい。 これを教えてください! C言語です #include<stdio.h> void main(void) { int sei,en; float pai,x,y,r; r=1.0; sei=0; en=0; for(x=0,1;○;x=x+0,1){ for(y=0.1;y<=1.0;○){ sei=sei+1; if((x*x+y*y)<=r*r)en=○; } } pai=(4.0*○)/(float)sei; printf("円周率=○¥n",pai); }

  • 関数の出力引数をクラスにするには?

    既出、または基礎の質問でしたらすみません。 ここでも他の検索エンジンでも見つけられなかったので。。。 C++です。 クラスを出力する関数を作りたいのですが、うまくできません。 ソースは以下のとおりです。問題は、プログラム下方のf1(),f2(),main()です。 長くて、そして見づらくてすみません・・・ //////////// #include<stdio.h> class test{ private: int num; float *vec; public: test(int n=1); //ctor ~test(); //dtor int getnum(){return num;} float* getvec(); void set(int,float*); void show(); }; test::test(int n){ num = n; vec = new float[n]; for(int i=0; i<n; i++) vec[i] = (float)i; } test::~test() {delete[] vec;} float* test::getvec(){ float *v; v = new float[num]; for(int i=0; i<num; i++) v[i] = vec[i]; return v; } void test::set(int n, float *v){ num = n; vec = new float[n]; for(int i=0; i<n; i++) vec[i] = v[i]; } void test::show(){ for(int i=0; i<num; i++) printf("%d: %g\n",i,vec[i]); } void f1(test &x, test &y){ int n; float *v; n = x.getnum(); v = x.getvec(); for(int i=0; i<n-1; i++) v[i] = 2.0*v[i]; y.set(n-1,v); } test f2(test x){ test y; //* int n; float *v; n = x.getnum(); v = x.getvec(); for(int i=0; i<n-1; i++) v[i] = 2.0*v[i]; y.set(n-1,v); return y; //** } void main(){ test x,y; int n = 4; float v[4] = {1.0,2.0,3.0,4.0}; printf("x:\n"); x.set(n,v); x.show(); printf("f1:\n"); f1(x,y); y.show(); printf("f2:\n"); y=f2(x); y.show(); } //////////// これを実行すると x: 0: 1 1: 2 2: 3 3: 4 f1: 0: 2 1: 4 2: 6 f2: 0: 7.38979e-38 1: 7.38979e-38 2: 6 となります。 関数f2がうまく動かない理由がわかりません。。。 出力引数にクラスはとれないのでしょうか?? よろしくお願いします。

  • プログラムの組み方が分かりません。

    ある課題で以下の問題が出題されました。 >>>> 2つのint型変数x,yにキーボードから値を入力し、その大小を判定する関数funcを作成せよ。この課題では、大きいと判定された数が代入された変数のアドレスがmain関数に戻されるものとする。 ============ #include<stdio.h> int *func(int *a,int *b) { /* 2つの値の大小判定を行い、アドレスを返す */ } main(void) { int x, y, *z; /* 変数 x,yにキーボードからデータを入力する */ /* 関数funcの呼び出し */ /* 変数zを用いて値の出力を行う */ } ============ <<<< 2行目の*funcというように、関数の頭に*が付くプログラムは初めてで、 どういう意味かもさっぱりわかりません。 それも含め、この問題はどういう風解けばいいのか、教えてください。 お願いします。

  • C言語のプログラムについて

    三角形を判定するプログラムを作ったのですが直角三角形ができるはずがないのに直角三角形の判定が出てしまいます。簡単なことなのかもしれませんが自分ではわからなくなってしまったのでご指摘してもらいたいです。 #include<stdio.h> void tri(int x,int y,int z) { if((x*x==y*y+z*z)||(y*y==x*x+z*z)||(z*z==x*x+y*y)) { printf("これは直角三角形です。"); printf("これは三角形です。"); }else if((x+y>=z)||(x+z>=y)||(y+z>=x)) { printf("これは三角形ではありません。"); }else{ printf("これは三角形です。"); } } int main(void) { int e1,e2,e3; printf("3辺を入力してください"); scanf("%f,%f,%f",&e1,&e2,&e3); tri(e1,e2,e3); return(0); }

  • ガンマ変換 C言語でプログラムの作成

    次式のように、原画像の任意の階調値fから、点線の矢印のようにして交換後の階調値gを決める。このような階調値の変換を表す配列 unsigned char trans[256];を用いて画像の濃度補正を行うプログラム作成せよとあるのですが、どのような計算式を用いて任意の変換の プログラムを作成してよいかわかりません。 同、問題でガンマ変換のプログラムは作成したのですが、 詳しい方で添付画像のようなプログラムを作成できる方がいましたらよろしくお願いします。 ESPライブラリを使用していますので、添付ファイルにソースとヘッダファイルと図を添付しています   プログラムの開始: sを押す         終了: xを押す --------------------------------------------------------------*/ #include <stdio.h> #include <stdlib.h> #include "mypgmesp.h" /* ESP関係の関数が定義されているヘッダファイル */ #define FINAL_LEVEL 64 //最終的な表現階調数// // 関数のプロトタイプ宣言 void gamma_histgram(void); /*************************************************************************    このプログラムを実行したとき、はじめに実行される処理を書く *************************************************************************/ void ESP_Ready(void) { ESP_Open_Window(); } /*************************************************************************    このプログラムが終了したとき、実行される処理を書く *************************************************************************/ void ESP_Finish(void) { } /*************************************************************************    startボタンが押されたときに、実行される処理を書く *************************************************************************/ void ESP_Main(void) { int ret; /* 準備 */ ESP_Prepare(); /* 画像データを image1 に読み込んで表示する */ ret = ESP_load_image_data(); if(ret){ ESP_StartMenu(); return; } /////////////////////////////////////////////////// // 以下に関数や命令を記述する gamma_histgram(); // ここまで /////////////////////////////////////////////////// /* image2 を保存し表示する */ ESP_save_image_data(); /* メッセージの表示 */ ESP_StartMenu( ); } ////////////////////////////////////////////////// // 以下の関数内にプログラムを追加する /////////////////////////////////////////////////// void gamma_histgram(void) { int i, x, y,g; /* ループ変数 */ long int target_value;//変換後の頻度の目標値// double gam = 2.0,j; unsigned char trans[256]; ESP_Printf("ガンマ補正を行う\n"); for (i = 0; i < 256; i ++){ j=i; g=255*pow(j/255.0,1.0/gam); if(g>255) { trans[i]=255; } else if (g<0) { trans[i]=0; } else { trans[i]=(unsigned char)g; } x_size2=x_size1; y_size2=y_size1; for ( y = 0; y < y_size2; y ++ ) { for ( x = 0; x < x_size2; x ++ ) image2[y][x] = trans[image1[y][x]]; } } }

  • 小さい順に並べ替えるプログラム

    コンピュータに10個のてきとうな数字を入力させ それを、小さい順に並べ替えるプログラムです。 以下のようにしたのですが、エラー0 警告0 なのに動きません。 どこが違うのでしょうか? #include<iostream> #include<cstdlib> #include<ctime> using namespace std; const int NUM_ELEMENTS=10; void sort(int*); void generation(int*); void exchange(int&,int&); void sort(int* a){ int min, locate, i, j; for(i=0; i<NUM_ELEMENTS-1; i++){ min = a[i]; locate = i; for(j=i; j<NUM_ELEMENTS; j++){ if(min > a[j]){ min = a[j]; locate = j; } } exchange(a[i],a[locate]); } } void generation(int* a){ int i; srand(time(NULL)); for(i=0; i<NUM_ELEMENTS; i++){ a[i] = rand(); } } void exchange(int& a,int& b){ int t; t=a; a=b; b=t; } int main(){ int data[NUM_ELEMENTS]; generation(data); sort(data); return 0; }

  • プログラム問題

    質問】 2つの実数xとyを入力し、xとyの値とx,yが格納されている領域のアドレスを表示するプログラムを作成します。 【プログラム作成例】 数 x と y を入力しなさい=> 2 3 数 x = 2.000000 x のアドレス = #0044 数 y = 3.000000 y のアドレス = #0048 上記の解答は下記の通りなのですが、下記以外の解答方法を教えてはいただけないでしょうか? C言語に詳しい方よろしくお願いいたします。 #include <stdio.h> void main(void) { float x, y; printf("数 x と y を入力しなさい=> "); scanf("%f %f", &x, &y); printf("数 x = %f x のアドレス = %p\n", x, &x); printf("数 y = %f y のアドレス = %p\n", y, &y); }

  • 座標値を読み込んである領域に含まれているかどうかを示すプログラム

    プログラミングで課題が出たのですがさっぱりわからないのでどなたか教えてください! 座標値 (x, y) を読み込み,点 (x, y) が 領域1または2に属すれば(境界を含む)1を出力し,それ以外(どちらの領域にも属さない)なら0を出力するプログラムを書きなさい. 領域1 7.0 ≦ x ≦ 21.2 -1.5 ≦ y ≦ 13.8 領域2 -12.4 ≦ x ≦ 10.0 -14.0 ≦ y ≦ -7.7 おそらくかなり見当違いなことをしていると思いますが、以下です。 #include <stdio.h> int main(void) { double x, y; scanf("%f%f\n",&x,&y); printf("%f\n", x >= 7.0 && x <= 21.2 && y>= -1.5 && y <= 13.8 || x >= -12.4 && x <= 10.0 && y >= -14.0 && y <= -7.7); } よろしくお願いします。