Cに投稿されたコード一覧

C SFLでのSDRAMコントローラ

/*
	SDRAM Controller 2007/2/14

	IS42S16400
		1M Words x 16 bits x 4 Banks (64Mbit)

	clock 50 MHz
		bank<2> adrs<20> data<16>

	QuartusII 7.2 177LC 125DLR
*/

circuit sdram_ctrl
{
	output CSn, RASn, CASn, WEn;
	output LDM, HDM;
	output DEn; // Write data output enable
	output BA<2>, A<12>;
	input Din<16>;
	output Dout<16>;

	instrin write(adrs, wdata);
	input wdata<16>, adrs<22>;
	instrin read(adrs);
	output rdata<16>, ack;

	output err;
	reg_wr err_reg;

	reg_wr BA_reg<2>;
	reg_ws A_reg<12>;
//	reg_ws LDM_reg, HDM_reg;
	reg_ws RASn_reg, CASn_reg, WEn_reg, DEn_reg;

	reg_ws reset;
	reg_wr init_count<16>; // use <14>
	reg_wr adrs_reg<22>, rdata_reg<16>, wdata_reg<16>;

	instrself com_NOP, com_PRE, com_REF, com_MRS, com_ACT, com_WRITE, com_READ;

	stage_name init { task do(); }
	stage_name refresh { task do(); }
	stage_name refresh_cnt { task do(); }
	stage_name swrite { task do(adrs_reg, wdata_reg); }
	stage_name sread { task do(adrs_reg); }

	par{
		if(reset){
			reset := 0b0;
			generate init.do();
		}

		ack = ^(init.do | sread.do | swrite.do);

		CSn = 0b0;
		LDM = 0b0; // LDM_reg;
		HDM = 0b0; // HDM_reg;
		RASn = RASn_reg;
		CASn = CASn_reg;
		WEn = WEn_reg;
		DEn = DEn_reg;
		BA = BA_reg;
		A = A_reg;

		Dout = wdata_reg;

		rdata = rdata_reg;

		init_count++;
	}

	instruct read par{
		generate sread.do(adrs);
	}

	instruct write par{
		generate swrite.do(adrs, wdata);
	}

	instruct com_NOP par{
		RASn_reg := 0b1;
		CASn_reg := 0b1;
		WEn_reg  := 0b1;
	}

	// Trp 20 ns
	instruct com_PRE par{
		RASn_reg := 0b0;
		CASn_reg := 0b1;
		WEn_reg  := 0b0;
	}

	// Trc 70 ns
	instruct com_REF par{
		RASn_reg := 0b0;
		CASn_reg := 0b0;
		WEn_reg  := 0b1;
	}

	// Trc 10 ns
	instruct com_MRS par{
		RASn_reg := 0b0;
		CASn_reg := 0b0;
		WEn_reg  := 0b0;
	}

	// Trcd 20 ns
	instruct com_ACT par{
		RASn_reg := 0b0;
		CASn_reg := 0b1;
		WEn_reg  := 0b1;
	}

	instruct com_WRITE par{
		RASn_reg := 0b1;
		CASn_reg := 0b0;
		WEn_reg  := 0b0;
	}

	instruct com_READ par{
		RASn_reg := 0b1;
		CASn_reg := 0b0;
		WEn_reg  := 0b1;
	}

	stage init {
		state_name st_PON,st_PALL,st_wPALL1,st_wPALL2,st_REF,st_wREF,st_MRS,st_wMRS;
		first_state st_PON;
		state st_PON par{
			com_NOP();
			if(init_count<14>) goto st_PALL;
		}
		state st_PALL par{
			com_PRE();
			A_reg := 0b010000000000; // All banks
			goto st_wPALL1;
		}
		state st_wPALL1 par{
			com_NOP();
			goto st_wPALL2;
		}
		state st_wPALL2 par{
			com_NOP();
			if(/&init_count<5:0>) goto st_REF;
		}
		state st_REF par{
			if(init_count<2:0>==0b000) com_REF();
			else com_NOP();
			if(/&init_count<5:0>) goto st_wREF;
		}
		state st_wREF par{
			goto st_MRS;
		}
		state st_MRS par{
			com_MRS();
			BA_reg := 0b00;
			A_reg := 0b00000 || 0b010 || 0b0000; // CAS 2 Burst 1
			goto st_wMRS;
		}
		state st_wMRS par{
			com_NOP(); // 4回以上
			if(init_count<3>) relay refresh_cnt.do();
		}
	}

	stage swrite {
		state_name st_ACT, st_WRITEA, st_w1;
		first_state st_ACT;
		state st_ACT if(^refresh.do){
			com_ACT();
			BA_reg := adrs_reg<21:20>;
			A_reg := adrs_reg<19:8>;
			DEn_reg := 0b0;
			goto st_WRITEA;
		}
		state st_WRITEA par{
			com_WRITE();
			A_reg := 0b0100 || adrs_reg<7:0>;
			goto st_w1;
		}
		state st_w1 par{
			com_NOP();
			DEn_reg := 0b1;
			goto st_ACT;
			finish;
		}
	}

	stage sread {
		reg_wr ap;
		state_name st_ACT,st_READA,st_w0,st_w1,st_w2;
		first_state st_ACT;
		state st_ACT if(^refresh.do){
			com_ACT();
			BA_reg := adrs_reg<21:20>;
			A_reg := adrs_reg<19:8>;
			goto st_READA;
		}
		state st_READA par{
			com_READ();
			A_reg := 0b0100 || adrs_reg<7:0>;
			goto st_w0;
		}
		state st_w0 par{
			com_NOP();
			ap := ^ap;
			if(ap) goto st_w2; // オートプリチャージ
		}
		state st_w2 par{ // CL 2
			rdata_reg := Din;
			goto st_ACT;
			finish;
		}
	}

	stage refresh_cnt {
		reg_wr refresh_time<7>;
		reg_wr notused;
		state_name st1,st2;
		first_state st1;
		if(notused) finish;
		state st1 if(^refresh.do){
			refresh_time++;
			if(/&refresh_time) goto st2;
		}
		state st2 if(^(sread.do | swrite.do)){
			generate refresh.do();
			goto st1;
		}
	}

// read と refresh が同時に起動しても refresh を優先
	stage refresh {
		reg_wr refresh_A<14>;
		state_name st_ACT, st_PRE, st_wPRE;
		first_state st_ACT;
		state st_ACT par{
			com_ACT();
			BA_reg := refresh_A<1:0>;
			A_reg := refresh_A<13:2>;
			goto st_PRE;
		}
		state st_PRE par{
			com_PRE();
			A_reg := 0b010000000000;
			refresh_A++;
			goto st_wPRE;
		}
		state st_wPRE par{
			com_NOP();
			goto st_ACT;
			finish;
		}
	}

}

C 2つ以上が1ならNG

// 2つ以上でBAD
sel maps<12>;
maps = map_wram || map_ppu1 || map_apu || map_pad || map_ppu2 || map_dma || map_rom || map_cowram || map_sram20 || map_sram21 || map_dsp || map_reserve;
if(^(
(maps==0b100000000000) |
(maps==0b010000000000) |
(maps==0b001000000000) |
(maps==0b000100000000) |
(maps==0b000010000000) |
(maps==0b000001000000) |
(maps==0b000000100000) |
(maps==0b000000010000) |
(maps==0b000000001000) |
(maps==0b000000000100) |
(maps==0b000000000010) |
(maps==0b000000000001) )) halt(0xD2);

C munou

/********************************************************/
/*                                                      */
/*対話エージェントを組み込んだチャットサーバその1      */
/*起動すると80番ポートで接続を待ち受けます              */
/*使い方                                                */
/*ctrl-cキーの入力でプログラム停止                      */
/*                                                      */
/*                                                      */
/********************************************************/
/*ヘッダファイルのインクルード                          */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
//#include <sys/socket.h>
//#include <arpa/inet.h>
//#include <unistd.h>
#pragma warning(disable:4996)
#pragma warning(disable:4244)

/*記号定数の定義*/
#define SERVERPORTNUM 81 /*サーバのポート番号*/
#define MAXNUM 10/*最大接続数*/
#define MSGLENGTH 256 /*メッセージの最大長*/
#define SEED 32767/*乱数の種*/
#define LINES 15/*チャットの保存行数*/
#define MAXS 65535/*法要例文の最大数*/
#define CHARS 4/*例文検索キーのバイト数*/
#define OUTPUTFILE "2gram.txt"/*学習結果の出力ファイル*/

/*関数のプロトタイプの宣言*/
void startserver(int *serversocket);/*サーバを起動します*/
void sendtext(int cs,char *msg);/*返答メッセージの送信*/
void sendmes(int cs,char msgs[LINES][MSGLENGTH]);/*返答メッセージ作成*/
void sendhead(int cs);/*ヘッダ等の送付*/
void sendtail(int cs);/*htmlを完結させる*/
void sendbox(int cs);/*テキストボックスの送信*/
void getmes(int cs,char msgs[LINES][MSGLENGTH]);
                        /*ブラウザから入力処理*/
void decoder(char msg[],char sjismsg[]);/*漢字コードを取り出す*/
void agent(char megs[LINES][MSGLENGTH]);
                        /*対話エージェントの処理*/
int getreplydata();/*応答例文の初期化*/
void learn(char msgs[LINES][MSGLENGTH]);/*2-gramの学習*/
void searchword(int *i,char word[]);/*2-gram集から単語を探す*/
int cont(char msg[MSGLENGTH],int start);/*字種による分割*/
int iskanji(char chr);/*sjis漢字1byte目の判定*/

int rnd(int n);/*n以下の乱数を返す*/

/*外部変数*/
char reply[MAXS][MSGLENGTH];/*2-gram集*/
int replyno;/*単語数*/
/******************/
/*   main()関数   */
/******************/
int main()
{
	int serversocket;/*サーバ用ソケットディスクリプタ*/
	int clientsocket;/*クライアント用ソケットディスクリプタ*/
	struct sockaddr_in client;/*クライアントのアドレス*/
	unsigned int cl;/*クライアント処理に必要な変数*/
	char msgs[LINES][MSGLENGTH]={""};/*チャットのメッセージ*/
	WSADATA wsaData;
    SOCKET sock;

    WSAStartup(MAKEWORD(2,0), &wsaData);
	/*応答例文の初期化*/
	replyno=getreplydata();

	/*乱数の初期化*/
	srand(SEED);

	/*サーバ側のソケット準備*/
	startserver(&serversocket);

	/*クライアントからの呼び出しへの対応*/
	while(1){
		cl=sizeof(client);
		if((clientsocket
			= accept(serversocket,(struct sockaddr *) &client,(int *)&cl))<0){
				fprintf(stderr,"accept()呼び出しエラー\n");
				exit(1);/*失敗*/}

		/*ブラウザからの入力処理*/
		getmes(clientsocket,msgs);

		/*対話エージェントの処理*/
		agent(msgs);

		/*返答メッセージの処理*/
		sendmes(clientsocket,msgs);

		/*接続終了*/
		closesocket(clientsocket);

		/*学習結果の出力*/
		if(strlen(msgs[1])>0)/*直前のメッセージが空ではない*/
			learn(msgs);/*学習処理*/
	}
	WSACleanup();
}
/***********************/
/*     learn()関数     */
/*2-garmの学習         */
/***********************/
void learn(char msgs[LINES][MSGLENGTH])
{
	FILE *fp;/*出力ファイルのファイルポインタ*/
	int start,end,i;/*配列の処理位置*/
	char word[MSGLENGTH];/*処理用文字列*/

	/*ファイル出力の準備*/
	if((fp=fopen(OUTPUTFILE,"a"))==NULL){
		fprintf(stderr,"fopen()呼び出しのエラー\n");
		exit(1);/*ファイル書き込みに失敗*/
	}

	/*2-gramを作成して学習する*/
	start=0;
	printf("学習単語\n");
	while(start<strlen(msgs[1])){
		end=cont(msgs[1],start);
		for(i=0;i<end-start;++i)/*単語のコピー*/
			word[i]=msgs[1][start+i];
		word[i]='';/*単語の終わり*/
		fprintf(fp,"%s\n",word);/*ファイル出力*/
		printf(" word:%s\n",word);
		/*内部状態の更新*/
		if(replyno<MAXS-1){
			++replyno;
			strcpy(reply[replyno],word);
		}
		start=end;/*次の単語*/
	}
	/*区切り記号を出力*/
	fprintf(fp,"\n");
	strcpy(reply[++replyno],"");
	/*出力終了*/
	fclose(fp);
}

/**********************/
/*     cont()関数     */
/*字種による分割      */
/**********************/
int cont(char msg[MSGLENGTH],int start)
{
	int i;
	int state;

	state=iskanji(msg[start]);/*字種の設定*/
	for(i=start+2;i<strlen(msg);i+=2)
		if(state!=iskanji(msg[i]))break;
	return i;
}

/*************************/
/*     iskanji()関数     */
/*sjis漢字1byte目の判定  */
/*************************/
int iskanji(char chr)
{
	if((unsigned char)chr>=0x88)return 1;
	else return 0;
}

/******************************/
/*     getreplydata()関数     */
/*応答例文の初期化            */
/******************************/
int getreplydata()
{
	int lineno=0;/*読み込んだ行数*/
	int chrno=0;/*書き込んだ文字の位置*/
	int chr;/*読み込んだ文字*/

	while(((chr=getchar())!=EOF)&&(lineno<MAXS)){
		if(chr=='\n')/*改行*/
			chr='';/*文字列の終わりとする*/
		reply[lineno][chrno]=chr;/*文字をセット*/
		++chrno;/*次の文字*/
		if(chrno>(MSGLENGTH-10)){/*長さを超過*/
			reply[lineno][chrno]='';
			chrno=0;
			++lineno;
		}
		else if(chr==''){/*文字列が終端*/
			chrno=0;
			++lineno;
		}
	}
	reply[lineno][chrno]='';
	if(lineno==0){/*2-gram集がない*/
		fprintf(stderr,"2-gram集がありません。\n");
		exit(1);
	}
	printf("単語集%d\n",lineno);

	return lineno;/*2-gram集の例文数を返す*/
}
/**************************/
/*     setreply()関数     */
/*応答処理                */
/**************************/
void setreply(char msgs[LINES][MSGLENGTH])
{
	static int i=0;/*例文を選択するための変数*/
	int ptr;/*文字の位置*/
	int length;/*直前の発話の長さ*/
	char word[MSGLENGTH];/*直前の発話から切り出した単語*/
	int counter;/*例文検索の回数を数える変数*/

	/*直前の発話から適当な部分を切り出す*/
	ptr=rnd(strlen(msgs[1]))/2*2;/*切り出し位置決定*/
	strncpy(word,&(msgs[1][ptr]),CHARS);/*単語の切り出し*/
	word[CHARS]='';/*文字列の終わり*/
	/*2-gram検索のためのキーワードを表示*/
	printf("keyword:%s\n",word);

	/*2-gram集から、上記を含む文を探す*/
	strcpy(msgs[0],">");
	searchword(&i,word);
	strcat(msgs[0],word);/*出力文字列の単語を連結*/
	if(strlen(reply[i])<=0)return;/*空の単語*/

	/*2-gramの連鎖処理*/
	while(strlen(msgs[0])<MSGLENGTH){
		printf("連鎖処理 msgs[0]:%s reply[]:%s\n",msgs[0],reply[i]);
		strcat(msgs[0],reply[i]);/*出力文字列に連鎖する単語を連結*/
		strcpy(word,reply[i]);
		++i;if(i>replyno)i=0;
		if(strlen(reply[i])<=0)break;/*空の単語*/
		searchword(&i,word);/*次の連鎖を検索*/
	}
}

/**************************/
/*     searchword関数     */
/*2-gram集から単語を探す  */
/**************************/
void searchword(int *i,char word[])
{
	int counter;/*例文検索の回数を数える変数*/

	/*2-gram集から、上記を含む分を探す*/
	counter=0;
	while(counter<=replyno){
		if(strstr(reply[*i],word)!=NULL){
			strcpy(word,reply[*i]);
			++(*i);/*次の検索に備える*/
			return;/*単語が見つかった*/
		}
		++(*i);
		if(*i>replyno)*i=0;
		++counter;
	}
	/*なければ、適当に単語を返す*/
	*i=rnd(replyno-1);
	strcpy(word,reply[*i]);
	++(*i);/*次の検索に備える*/
}

/*************************/
/*      agent()関数      */
/*対話エージェントの処理 */
/*************************/
void agent(char msgs[LINES][MSGLENGTH])
{
	int i;
	int select;

	/*msgs[][]の更新*/
	for(i=LINES-1;i>0;--i)strcpy(msgs[i],msgs[i-1]);
	/*発話*/
    if(strlen(msgs[1])>0){/*直前のメッセージが空でない*/
		setreply(msgs);
		printf("%s\n",msgs[0]);
	}
}

/****************************/
/*       getmes()関数       */
/*ブラウザから入力処理      */
/****************************/
void getmes(int cs,char msgs[LINES][MSGLENGTH])
{
	char prev1,prev2,prev3;/*リクエスト終了判定用変数*/
	char msg[MSGLENGTH];/*メッセージのバッファ*/
	int i;

	prev1=prev2='';
	i=0;
	while(((recv(cs,&msg[i],1,0))>0)&&(i<MSGLENGTH-1)){/*1文字ずつ読み取る*/
		if((msg[i]=='\n')&&(prev1='\r'))break;
		                       /*改行が送られてきたら読み取り終了*/
		prev2=prev1;prev1=msg[i];/*判定の準備*/
		++i;
	}
	msg[i]='';/*文字列の終わり*/
	if(strchr(msg,'=')!=NULL){/*入力文字列が送られてきた*/
		/*msgs[][]の更新*/
		for(i=LINES-1;i>0;--i)strcpy(msgs[i],msgs[i-1]);
		decoder(strchr(msg,'='),msgs[0]);
		printf("%s\n",msgs[0]);/*サーバ画面に文字列を出力*/
	}

	prev1=prev2=prev3='';
	while(((recv(cs,msg,1,0))>0)&&(i<MSGLENGTH-1)){
		                         /*1文字ずつ読み取る*/
		if((msg[0]=='\n')&&(prev1=='\r')&&(prev2=='\n'))break;
		                         /*空行が送られてきたら読み飛ばし終了*/
		prev3=prev2;prev2=prev1;prev1=msg[0];/*判定の準備*/
	}
}
/*************************/
/*    decoder()関数     */
/*漢字コードを取り出す   */
/*************************/
void decoder(char msg[],char sjismsg[])
{
	int i=1,j=0;
	char hexch[3];/*2行の16進数(文字表現)*/

	while(msg[i]!=' '){/*エンコードされたsjisコードを取り出す*/
		if(i>MSGLENGTH-2)break;/*文字列の長さの上限*/
		else if(msg[i]=='+'){
			sjismsg[j]=' ';/*半角空白*/
			++i;
		}
		else if(msg[i]=='%'){/*エンコードされた全角文字*/
			++i;
		hexch[0]=msg[i];
		hexch[1]=msg[i+1];
		hexch[2]='';
		sjismsg[j]=strtol(hexch,NULL,16);
		++i;++i;
		}
		else {/*エンコードされていない文字*/
			sjismsg[j]=msg[i];
			++i;
		}
		++j;
	}
	sjismsg[j]='';/*文字列の終わり*/
}

/*************************/
/*     sendmes()関数     */
/*返答メッセージ作成     */
/*************************/
void sendmes(int cs,char msgs[LINES][MSGLENGTH])
{
	int i;

	/*htmlのヘッダ等の送付*/
	sendhead(cs);

	/*テキストボックスの送信*/
	sendbox(cs);

	/*これまでのデータ送信*/
	for(i=0;i<LINES;++i){
		sendtext(cs,msgs[i]);
		sendtext(cs,"<br>\r\n");
	}

	/*htmlを結合させる*/
	sendtail(cs);

}

/*************************/
/*     sendbox()関数     */
/*テキストボックスの送信 */
/*************************/
void sendbox(int cs)
{
	sendtext(cs,
		"<form action=\"cgi\"method=\"get\">");
	sendtext(cs,
		"<input type=\"submit\"value=\"send\">\r\n");
	sendtext(cs,
		"<input type=\"text\"name=\"text\"size=\"80\"maxlength=\"60\">\r\n");
	sendtext(cs,"</form>\r\n");
}

/**************************/
/*     sendhead()関数     */
/*ヘッダ等の送付          */
/**************************/
void sendhead(int cs)
{
	sendtext(cs,
		"<html><head><title>chat server</title></head><body>\r\n");
}

/**************************/
/*     sendtail()関数     */
/*htmlを完結させる        */
/**************************/
void sendtail(int cs)
{
	sendtext(cs,"</body></html>\r\n\r\n");
}

/***************************/
/*     sendtext()関数      */
/*返答メッセージの送信     */
/*および画面表示           */
/***************************/
void sendtext(int cs,char *msg)
{
	send(cs,msg,strlen(msg),0);/*クライアントへの送信*/
}

/***************************/
/*     rnd()関数           */
/*n未満の乱数を返す        */
/***************************/
int rnd(int n)
{
	int rndno;/*生成する乱数*/

	while((rndno=(double)rand()/RAND_MAX*n)==n);

	return rndno;
}

/***************************/
/*     startserver()関数   */
/*サーバを起動します       */
/***************************/
void startserver(int *serversocket)
{
	struct sockaddr_in serveradd;/*サーバのアドレス*/

	/*サーバ側のソケットの準備*/
	if((*serversocket=
		socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))<0){
			fprintf(stderr,"socket()呼び出しのエラー\n");exit(1);
			/*準備失敗*/}
	memset(&serveradd,0,sizeof(serveradd));
	serveradd.sin_family=AF_INET;
	serveradd.sin_addr.s_addr=htonl(INADDR_ANY);
	serveradd.sin_port=htons(SERVERPORTNUM);
	if(bind(*serversocket,(struct sockaddr *)&serveradd,
		sizeof(serveradd))<0){
			fprintf(stderr,"bind()呼び出しのエラー\n");exit(1);
			/*準備失敗*/}
	/*接続を待ち受ける*/
	if(listen(*serversocket,MAXNUM)<0){
		fprintf(stderr,"listen()呼び出しのエラー\n");exit(1);
		/*準備失敗*/}
}

C 関数ジャンプテーブルサンプル

#include <stdio.h>

// 状態番号
static unsigned char sucState;
// 投入金額
static int siCharge;
// Suica残高(仮)
static int siSuica = 2000;

// 状態
enum E_STATE{
	IDLE = 0,
	POOR,
	SELECTED,
	SUFFICE,
	STATE_MAX
};
// イベント
enum E_EVENT{
	INJECT = 0,
	CHANGE,
	SUICA,
	JUICE_SELECT,
	EVENT_MAX
};

// ジュースの値段
const int JUICE_PRICE = 120;
//
const char MESSAGE[EVENT_MAX][20]= {
	"100円投入",
	"おつり返却",
	"Suicaタッチ",
	"ジュース選択"
};

// 関数ポインタの型宣言
typedef int (*JumpTable)( int* );

// ダミー関数宣言
int Dummy( int * );

// 関数宣言
int St00Ev00( int* );
int St00Ev02( int* );
int St00Ev03( int* );
int St01Ev00( int* );
int St01Ev01( int* );
int St02Ev02( int* );
int St03Ev00( int* );
int St03Ev03( int* );

// ジャンプテーブルの登録
const JumpTable fpVendingMachine[STATE_MAX][EVENT_MAX] = {
	//	100円投入	おつり返却	Suicaタッチ	ジュース選択
	{	&St00Ev00,	&Dummy,		&St00Ev02,	&St00Ev03	},	// 初期状態
	{	&St01Ev00,	&St01Ev01,	&Dummy,		&Dummy		},	// 金額不足状態
	{	&Dummy,		&Dummy,		&St02Ev02,	&Dummy		},	// ジュース選択状態
	{	&St03Ev00,	&St01Ev01,	&Dummy,		&St03Ev03	},	// 購入可能状態
};

// ダミー関数
int Dummy( int *arg ) {
	return( sucState );
}

int St00Ev00( int *arg ) {
	*arg += 100;
	return( POOR );
}
int St00Ev02( int *arg ) {
	printf("Suica残高:%d円\n",*arg);
	return( sucState );
}
int St00Ev03( int *arg ) {
	printf("ジュース選択\n");
	return( SELECTED );
}
int St01Ev00( int *arg ) {
	int ret = sucState;
	St00Ev00( arg );
	if ( siCharge >= JUICE_PRICE ) {
		ret = SUFFICE;
	}
	return( ret );
}
int St01Ev01( int *arg ) {
	printf("%d円返却\n",*arg);
	*arg = 0;
	return( IDLE );
}
int St02Ev02( int *arg ) {
	int ret = IDLE;
	if ( *arg >= JUICE_PRICE ) {
		ret = St03Ev03( arg );
	}
	return( ret );
}
int St03Ev00( int *arg ) {
	*arg += 100;
	return( sucState );
}
int St03Ev03( int *arg ) {
	int ret = IDLE;
	printf("ジュース購入!\n");
	*arg -= JUICE_PRICE;
	if ( fpVendingMachine[sucState][CHANGE] != Dummy ) {
		if ( *arg < JUICE_PRICE ) {
			ret = fpVendingMachine[sucState][CHANGE](arg);
		} else {
			ret = sucState;
		}
	}
	return( ret );
}

int main( int argc, char* argv[] )
{
	int i, c, event, *p;

	// メインループ
	while( 1 ){
		// コマンド表示
		for( i = 0; i < EVENT_MAX; i++ ){
			if ( fpVendingMachine[sucState][i] != Dummy ) {
				printf("%d:%s\n", i,MESSAGE[i] );
			}
		}
		puts("");

		// コマンド入力
		scanf("%d",&c);
		fflush( stdin );
		event = ( c >= 0 && c <= EVENT_MAX )? c: EVENT_MAX;
		if ( event >= EVENT_MAX ) {
			puts("error");
			continue;
		}
		if ( event == SUICA ) {
			p = &siSuica;
		} else {
			p = &siCharge;
		}

		// 関数コール
		sucState = fpVendingMachine[sucState][event](p);
	}
	return( 0 );
}

C はろーわーるど。

#include <stdio.h>

int main(int argc, char *argv[]){

    printf("HelloWorld");

    return 0;

}

C 変数

#include <stdio.h>
#include <conio.h>

int main( void){
    int hensu;
    char moji;
    hensu=5;
    printf("hensuの値は %d  です。\n",hensu);
    hensu = hensu + 3;
    printf("hensu = hensu + 3;という処理は、数学的には間違っていますが、「hensuの値に3を加える」という意味です。\nhensuの値は %d  です。\n",hensu);
    moji = 'B';
    printf("Char型は %c のような半角一文字を格納できます",moji);
    getch();
    return 0;
}

C 変数

include <stdio.h>
#include <conio.h>

int main( void){
    int hensu;
    char moji;
    hensu=5;
    printf("hensuの値は %d  です。\n",hensu);
    hensu = hensu + 3;
    printf("hensu = hensu + 3;という処理は、数学的には間違っていますが、「hensuの値に3を加える」という意味です。\nhensuの値は %d  です。\n",hensu);
    moji = 'B';
    printf("Char型は %c のような半角一文字を格納できます",moji);
    getch();
    return 0;
}

C はーろわるーど

#include <stdio.h>    //「stdio.h」というファイルを読み込む下も同様。その内容がここに書かれたことと同じになる
#include <conio.h>

int main(void){    //intという型でmainという関数を作る。{}の中がmain関数の中身
    printf("Hello, World!");    //printf関数に文字出力をさせる
    getch();    //getch関数を呼び出し。キーボード入力があるまで待つ
    return 0;    //main関数が0という値を出して終了する。画面に0と表示されるわけではない
}

C はーろわるーど

#include <stdio.h>
#include <conio.h>

int main(void){
    printf("Hello, World!");
    getch();
    return 0;
}

C はーろわるーど

#include <stdio.h>
#include <conio.h>

int main(void){
    printf("Hello, World!");
    getch();
    return 0;
}
Total Pages: 4 / 7« 先頭...23456...最後 »

よく投稿されているコード

タグ

最近投稿されたコード