void main (){ init();//初期化 yokosen();//横線を引く //ゲームループ while(1){ hyouji();//表示 key_chk();//キーチェック rakka();//移動 counter();//カウンタ } }
void sort(Position *a, int left, int right){ static int tmp[3]; /* クイックソート(2次元座標) まずY座標を小さい順に上から並び替え、Y座標が同じ時はx座標が小さい方を上にする。 * a.x : ソートする配列(x) * a.y : ソートする配列(y) * left : ソートするデータの開始位置 * right : ソートするデータの終了位置 */ if (left < right) { int i = left, j = right; int pivot = med3((a + i)->s, ( a+ (i + (j - i) / 2) )->s, (a + j)->s); /* (i+j)/2ではオーバーフローしてしまう */ while (1) { /* (a+i)->s を pivot 以上と以下の集まりに分割する */ while ((a+i)->s < pivot) { i++; } /* (a+i)->s[i] >= pivot となる位置を検索 */ while (pivot < (a+j)->s) { j--; } /* (a+i)->s[j] <= pivot となる位置を検索 */ if (i >= j) { break; } hyouji(a, i, j);//表示関数 tmp[0] = (a+i)->s; (a+i)->s = (a+j)->s; (a+j)->s = tmp[0]; /* (a+i)->s[i],(a+i)->s[j] を交換 */ tmp[1] = (a+i)->y; (a+i)->y = (a+j)->y; (a+j)->y = tmp[1]; /* a[i],a[j] を交換 */ tmp[2] = (a+i)->x; (a+i)->x = (a+j)->x; (a+j)->x = tmp[2]; /* a[i],a[j] を交換 */ hyouji(a, i, j);//表示関数 i++; j--; } sort(a, left, i - 1); /* 分割した左を再帰的にソート */ sort(a, j + 1, right); /* 分割した右を再帰的にソート */ } }
void show(Neuron *n) { Neuron *ptr; ptr = n->child; if (ptr != NULL) { while (ptr != n) { while (ptr->child != NULL) { ptr = ptr->child; //子供がいる間、子供のアドレスへ移動 } hyouji(ptr); while (ptr->brother == NULL) { ptr = ptr->parent; hyouji(ptr); if (ptr == n) { break; } } if (ptr != n) { ptr = ptr->brother; } } } }
void rakka(){ if (sq.sd <= 0){ if (sq.y < 22){ sq.sd = sq.sd_S;//初期値 locate(sq.x, sq.y);//四角を画面上方に表示 printf(" ");//空白を挿入 sq.y++;//四角を下に落とす hyouji();//再び■表示 } else{ sq.x = sq.x_S; sq.y = sq.y_S; } } }
int main(int argc, const char *argv[]) { //ファイル読み出し FILE *fp; int MAX_LENGTH=256; char *fname = "/Volumes/FLASH DRIVE/students.csv"; char buf[MAX_LENGTH]; int i=0; student stu[256]; int num; int nizu; if( (fp = fopen( fname, "r+" )) == NULL ) {exit(EXIT_FAILURE);} while(fgets(buf,MAX_LENGTH,fp)!= NULL){ sscanf(buf,"%[^\n,],%[^\n,],%d,%d,%d",stu[i].ID, stu[i].name, &stu[i].eigo, &stu[i].sugaku, &stu[i].sohuto ); i++; nizu++; } nizu--; fclose(fp); printf("データベース\n"); while(1){ printf("何を実行しますか?\n"); printf("1.データ一覧の表示\n"); printf("2.データ追加\n"); printf("3.データ削除\n"); printf("4.データの検索\n"); printf("5.データのソート\n"); printf("番号を入力してください。\n"); scanf("%d",&num); while(num<1 || num>5){ printf("1~5の数字を入力してください。\n"); scanf("%d",&num); } switch(num){ case 1: hyouji(nizu,stu); break; case 2: tuika(); break; case 3: printf("データの削除\n"); sakujyo(nizu,stu); break; case 4: printf("データの探索\n"); search(people,stu); break; case 5: printf("データのソート\n"); sort(); break; default: printf("何順に整列しますか?\\n"); break; } } return 0; }