kadai56a.c |
/* ** プログラム名: kadai56a ** 動作: ボール投げ(メイン) ** 作者: 自分の名前、学籍番号 ** 日付: 今日の日付 */ #include <stdio.h> #include "kadai56.h" #define LENGTH 100 int width; int main(void) { int i; do { printf("高さを入力してください(1〜%dの間):", MAXWIDTH); scanf("%d", &width); } while (width < 1 || width > MAXWIDTH); for (i = 0; i < LENGTH; i++) { printf("%s*\n", bar(bound(i))); } return 0; } |
kadai56b.c |
/* ** プログラム名: kadai56b ** 動作: ボール投げ(サブ) ** 作者: 自分の名前、学籍番号 ** 日付: 今日の日付 */ #include "kadai56.h" #define G 0.5 /* 加速度 */ #define D 0.9 /* 減衰率 */ /* ** 位置を計算する */ float bound(int i) { static float v0 = 1.0; /* 初速度 */ static int t0 = 0; /* 基準時間 */ float t = (i - t0) * 0.1; float x = (v0 - 0.5 * G * t) * t; if (x < 0.0) { v0 *= D; t0 = i; x = 0.0; } return x; } /* ** 長さ x 文字の棒グラフを作成する */ char *bar(float x) { static char line[MAXWIDTH]; /* 空白を格納する配列 */ int n = x * width + 0.5; /* 小数点以下を四捨五入 */ int i; for (i = 0; i < n; i++) { line[i] = '='; } line[i] = '\0'; /* 文字列の最後 */ return line; /* 文字列のポインタを返す */ } |