/***************************/
/* ベクトルの大きさの計算 */
/* code by Y.Suganuma */
/***************************/
#include <stdio.h>
#include <math.h>
int main()
{
double s, x[10];
int i1, max, n;
/*
初期設定
*/
max = 10;
s = 0.;
/*
データの入力
*/
printf("ベクトルの次元は? ");
scanf("%d", &n);
if (n > max)
printf("次元が大きすぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目の要素は? ", i1+1);
scanf("%lf", &x[i1]);
}
/*
計算
*/
for (i1 = 0; i1 < n; i1 = i1+1)
s += x[i1] * x[i1];
s = sqrt(s);
/*
出力
*/
printf("結果は=%f\n", s);
}
return 0;
}
/****************************/
/* ベクトルの和の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int i1, max, n;
double a[10], b[10], c[10];
/*
初期設定
*/
max = 10;
/*
入力
*/
printf("ベクトルの次元は? ");
scanf("%d", &n);
if (n > max)
printf("次元が大きすぎます");
else {
for (i1 = 0; i1 < n; i1++) {
printf("ベクトルa,bの %d 番目の要素は? ",i1+1);
scanf("%lf %lf", &a[i1], &b[i1]);
}
/*
実行
*/
printf("和は\n");
for (i1 = 0; i1 < n; i1++) {
c[i1] = a[i1] + b[i1];
printf(" %f", c[i1]);
}
printf("\n");
}
return 0;
}
/****************************/
/* 内積の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
double x, a[10], b[10];
int max, n, i1;
/*
初期設定
*/
max = 10;
x = 0.0;
/*
データの入力
*/
printf("次元は? ");
scanf("%d", &n);
if (n > max)
printf("次元が大きすぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf(" ベクトルaの %d 番目の要素は? ",i1+1);
scanf("%lf", &(a[i1]));
}
for (i1 = 0; i1 < n; i1++) {
printf(" ベクトルbの %d 番目の要素は? ",i1+1);
scanf("%lf", &(b[i1]));
}
/*
計算
*/
for (i1 = 0; i1 < n; i1++)
x += a[i1] * b[i1];
/*
出力
*/
printf("内積=%f\n", x);
}
return 0;
}
/****************************/
/* データの交換 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int a[10], b[10], c[10], d[10], i1, k, max, n, x1;
/*
初期設定
*/
k = 0;
max = 10;
/*
入力
*/
printf("データの数は? ");
scanf("%d", &n);
if (n > max)
printf("データが多すぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf("a,bの %d 番目のデータは? ",i1+1);
scanf("%d %d", &a[i1], &b[i1]);
}
/*
実行
*/
for (i1 = 0; i1 < n; i1++) {
if (a[i1] > b[i1]) {
c[k] = a[i1];
d[k] = b[i1];
x1 = a[i1];
a[i1] = b[i1];
b[i1] = x1;
k++;
}
}
/*
出力
*/
printf("操作回数=%d\n", k);
for (i1 = 0; i1 < k; i1++)
printf(" a,b %d %d\n", c[i1], d[i1]);
}
return 0;
}
/************************************/
/* 平均値の計算(平均点以下の出力) */
/* coded by Y.Suganuma */
/************************************/
#include <stdio.h>
int main()
{
double mean1, mean2, sum1, sum2, x[50], y[50];
int max, n, i1, kazu;
/*
初期設定
*/
sum1 = 0.0;
sum2 = 0.0;
max = 50;
kazu = 0;
/*
データの数の読み込み
*/
printf("人数は? ");
scanf("%d", &n);
if (n > max)
printf("人数が多すぎます\n");
/*
データの読み込み
*/
else {
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目の人の英語と数学の点は? ", i1+1);
scanf("%lf %lf", &(x[i1]), &(y[i1]));
sum1 += x[i1];
sum2 += y[i1];
}
/*
結果の計算と出力
*/
if (n <= 0)
printf("データがない!\n");
else {
mean1 = sum1 / n;
mean2 = sum2 / n;
printf(" 英語=%f 数学=%f\n", mean1, mean2);
for (i1 = 0; i1 < n; i1++) {
if (x[i1] <= mean1 || y[i1] <= mean2)
kazu++;
}
printf(" 平均点以下の人数は %d 人\n", kazu);
}
}
return 0;
}
/****************************/
/* 原点までの距離の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <math.h>
int main()
{
double mean, sum, x1, x[50], y[50], r[50];
int i1, k, max, n;
/*
初期設定
*/
max = 50;
sum = 0.0;
k = 0;
/*
データの入力と距離の計算
*/
printf("点の数は? ");
scanf("%d", &n);
if (n > max)
printf("点の数が多すぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目の点の座標は? ", i1+1);
scanf("%lf %lf", &x[i1], &y[i1]);
x1 = x[i1] * x[i1] + y[i1] * y[i1];
r[i1] = sqrt(x1);
sum += r[i1];
}
/*
計算
*/
if (n <= 0)
printf("データがありません!\n");
else {
mean = sum / n;
printf("平均距離は %f\n点の座標は\n", mean);
for (i1 = 0; i1 < n; i1++) {
if (r[i1] >= mean) {
k++;
printf("%f %f\n", x[i1], y[i1]);
}
}
printf(" 点の数=%d\n", k);
}
}
return 0;
}
/****************************/
/* 成分の%の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
double data, sum, x[10], y[10];
int max, n, i1;
FILE *in, *out;
/*
初期設定
*/
max = 10;
sum = 0.0;
n = 0;
in = fopen("input", "r");
/*
データの読み込み
*/
while (EOF != fscanf(in, "%lf", &data)) {
if (n >= max) {
printf("データが多すぎます!\n");
exit(1);
}
else {
x[n] = data;
sum += data;
n++;
}
}
fclose(in);
/*
%の計算
*/
for (i1 = 0; i1 < n; i1++)
y[i1] = x[i1] / sum * 100.0;
/*
出力
*/
out = fopen("output", "w");
for (i1 = 0; i1 < n; i1++)
fprintf(out,"%d 番目の成分 %6.2f %\n", i1+1, y[i1]);
fclose(out);
return 0;
}
RANGE NUM 0- 10 2 ** 11- 20 5 ***** ・・・・ 91-100 3 ***
/****************************/
/* グラフの出力(1) */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int i1, i2, k, r1, r2, m, n, num[10];
/*
初期設定
*/
r1 = 1;
r2 = 10;
for (i1 = 0; i1 < 10; i1=i1+1)
num[i1] = 0;
/*
入力
*/
printf("人数は? ");
scanf("%d", &n);
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目の人の点は? ", i1+1);
scanf("%d", &m);
k = (m - 1) / 10;
if (k < 0)
k = 0;
num[k] += 1;
}
/*
出力
*/
printf(" RANGE NUM\n");
for (i1 = 0; i1 < 10; i1++) {
if (i1 == 0)
printf("%3d-%3d%5d ", 0, r2, num[i1]);
else
printf("%3d-%3d%5d ", r1, r2, num[i1]);
for (i2 = 0; i2 < num[i1]; i2++)
printf("*");
printf("\n");
r1 += 10;
r2 += 10;
}
return 0;
}
*
* *
* * ・・・・・ * *
* * * * *
-------------- ・・・・・ ---------
1 2 3 ・・・・・ 11 12
/****************************/
/* グラフの出力(2) */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int i1, i2, m[12];
/*
入力
*/
for (i1 = 0; i1 < 12; i1++) {
printf("%d 月の売り上げは(0~9)? ", i1+1);
scanf("%d", &m[i1]);
}
/*
出力
*/
printf("\n");
for (i1 = 9; i1 > 0; i1--) {
for (i2 = 0; i2 < 12; i2++) {
if (m[i2] >= i1)
printf(" *");
else
printf(" ");
}
printf("\n");
}
printf("------------------------------------\n");
for (i1 = 0; i1 < 12; i1++)
printf("%3d",i1+1);
printf("\n");
return 0;
}
/****************************/
/* 売上の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int i1, k1, k2, m, mean, n, x[30];
/*
初期設定
*/
mean = 0;
m = 0;
/*
データの入力
*/
for (i1 = 0; i1 < 30; i1++) {
printf(" %d 日の売上は? ", i1+1);
scanf("%d", &x[i1]);
}
while (m < 1 || m > 30) {
printf("基準日(1から30)は? ");
scanf("%d", &m);
}
/*
計算
*/
k1 = m - 3;
if (k1 < 1)
k1 = 1;
k2 = m + 3;
if (k2 > 30)
k2 = 30;
n = k2 - k1 + 1;
for (i1 = k1-1; i1 < k2; i1++)
mean += x[i1];
mean /= n;
/*
出力
*/
printf(" 平均=%d\n", mean);
return 0;
}
/****************************/
/* 0、1、... */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
int i1, n, m, k1, kk[10];
/*
初期設定
*/
for (i1 = 0; i1 < 10; i1++)
kk[i1] = 0;
/*
入力
*/
printf("データの数は? ");
scanf("%d", &n);
for (i1 = 0; i1 < n; i1++) {
printf(" 正の整数? ");
scanf("%d", &m);
k1 = m % 10;
kk[k1]++;
}
/*
出力
*/
for (i1 = 0; i1 < 10; i1++) {
k1 = kk[i1] * 100 / n;
printf("%d %d 個 %d %\n", i1, kk[i1], k1);
}
return 0;
}
/************************************/
/* 平均点と平均点以上の人数 */
/* coded by Y.Suganuma */
/************************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i1, i2, max, mean, n, m[5], n_m, m_m, nin, ten[5][50], num[5];
/*
初期設定
*/
n_m = 5;
m_m = 50;
mean = 0;
nin = 0;
max = 0;
/*
データの入力と平均点の計算
*/
printf("クラスの数は? ");
scanf("%d", &n);
if (n > n_m)
printf("クラスの数が多すぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目のクラスの人数は ", i1+1);
scanf("%d", &m[i1]);
if (m[i1] > m_m) {
printf("人数が多すぎます!\n");
exit(1);
}
else {
nin += m[i1];
for (i2 = 0; i2 < m[i1]; i2++) {
printf(" %d 番目の人の点は? ",i2+1);
scanf("%d", &(ten[i1][i2]));
mean += ten[i1][i2];
}
}
}
mean /= nin;
/*
比較
*/
for (i1 = 0; i1 < n; i1++) {
num[i1] = 0;
for (i2 = 0; i2 < m[i1]; i2++) {
if (ten[i1][i2] > max)
max = ten[i1][i2];
if (ten[i1][i2] >= mean)
num[i1]++;
}
}
/*
出力
*/
printf("最高点=%d 平均点=%d\n", max, mean);
printf("平均点以上の人数は\n");
for (i1 = 0; i1 < n; i1=i1+1)
printf(" クラス %d 人数 %d\n", i1+1, num[i1]);
}
return 0;
}
/****************************/
/* 点間の距離の計算 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <math.h>
int main()
{
double max_r, r, r1, r2, x[10], y[10];
int k1 = 0, k2 = 0, max, n, i1, i2;
/*
初期設定
*/
max = 10;
max_r = 0.0;
/*
データの入力
*/
printf("点の数は? ");
scanf("%d", &n);
if (n > max)
printf("点の数が大きすぎます!\n");
else {
for (i1 = 0; i1 < n; i1++) {
printf(" %d 番目の点の座標は? ", i1+1);
scanf("%lf %lf", &(x[i1]), &(y[i1]));
}
/*
計算
*/
for (i1 = 0; i1 < n-1; i1++) {
for (i2 = i1+1; i2 < n; i2++) {
r1 = x[i1] - x[i2];
r2 = y[i1] - y[i2];
r = sqrt(r1 * r1 + r2 * r2);
if (r > max_r) {
max_r = r;
k1 = i1;
k2 = i2;
}
}
}
/*
出力
*/
printf("点(%f,%f)と(%f,%f)間で距離は %f\n",
x[k1], y[k1], x[k2], y[k2], max_r);
}
return 0;
}
/****************************/
/* 上位m人の平均 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
int main()
{
double data[10], mean, x;
int i1, i2, m, n, limit, num, min;
/*
初期設定
*/
limit = 10;
num = 0;
min = -1;
mean = 0.0;
/*
人数の入力
*/
printf("人数は? ");
scanf("%d", &n);
printf("上位何人? ");
scanf("%d", &m);
if (m > limit)
printf("データが多すぎます!\n");
/*
データの入力
*/
else {
for (i1 = 0; i1 < n; i1++) {
printf(" データは? ");
scanf("%lf", &x);
// m人以下のとき
if (num < m) {
data[num] = x;
if (min < 0 || x < data[min])
min = num;
}
// m人より多いとき
else {
if (x > data[min]) {
data[min] = x;
min = 0;
for (i2 = 1; i2 < m; i2++) {
if (data[i2] < data[min])
min = i2;
}
}
}
num++;
}
/*
平均値の計算
*/
if (m <= 0 || n <= 0 || num <= 0)
printf("データがない!\n");
else {
if (num < m)
m = num;
for (i1 = 0; i1 < m; i1++)
mean += data[i1];
mean /= m;
printf("\n平均値=%f\n", mean);
}
}
return 0;
}
/****************************/
/* 成分の%の計算(calloc) */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
double sum, *x;
int n, i1;
FILE *in;
/*
初期設定
*/
sum = 0.0;
in = fopen("input", "r");
/*
データ数の読み込みとメモリの確保
*/
fscanf(in, "%d", &n);
x = (double *)calloc(n, sizeof(double));
/*
データの読み込み
*/
for (i1 = 0; i1 < n; i1++) {
fscanf(in, "%lf", &x[i1]);
sum += x[i1];
}
/*
%の計算と出力
*/
for (i1 = 0; i1 < n; i1++)
printf("%d 番目の成分 %6.2f %\n", i1+1, x[i1]/sum*100.0);
free(x);
return 0;
}
/****************************/
/* 成分の%の計算(new) */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
double sum, *x;
int n, i1;
FILE *in;
/*
初期設定
*/
sum = 0.0;
in = fopen("input", "r");
/*
データ数の読み込みとメモリの確保
*/
fscanf(in, "%d", &n);
x = new double [n];
/*
データの読み込み
*/
for (i1 = 0; i1 < n; i1++) {
fscanf(in, "%lf", &x[i1]);
sum += x[i1];
}
/*
%の計算と出力
*/
for (i1 = 0; i1 < n; i1++)
printf("%d 番目の成分 %6.2f %\n", i1+1, x[i1]/sum*100.0);
delete [] x;
return 0;
}
/**********************************/
/* 平均点と平均点以下の人(calloc) */
/* coded by Y.Suganuma */
/**********************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i1, i2, **cl, mean = 0, n, nin = 0, *m;
char ***name;
/*
データの入力と平均点の計算
*/
printf("クラスの数は? ");
scanf("%d", &n);
m = (int *)calloc(n, sizeof(int)); // 各クラスの人数
cl = (int **)calloc(n, sizeof(int *)); // 点数
name = (char ***)calloc(n, sizeof(char **)); // 名前
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目のクラスの人数は ",i1+1);
scanf("%d", &m[i1]);
cl[i1] = (int *)calloc(m[i1], sizeof(int));
name[i1] = (char **)calloc(m[i1], sizeof(char *));
nin += m[i1];
for (i2 = 0; i2 < m[i1]; i2++) {
name[i1][i2] = (char *)calloc(20, sizeof(char));
printf(" %d 番目の人の名前は? ",i2+1);
scanf("%s", name[i1][i2]);
printf(" 点は? ");
scanf("%d", &(cl[i1][i2]));
mean += cl[i1][i2];
}
}
mean /= nin;
printf("平均値 %d\n", mean);
/*
比較と出力
*/
for (i1 = 0; i1 < n; i1++) {
for (i2 = 0; i2 < m[i1]; i2++) {
if (cl[i1][i2] <= mean)
printf(" %3d 点 %s\n", cl[i1][i2], name[i1][i2]);
free(name[i1][i2]);
}
free(cl[i1]);
free(name[i1]);
}
free(cl);
free(name);
return 0;
}
/*******************************/
/* 平均点と平均点以下の人(new) */
/* coded by Y.Suganuma */
/*******************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i1, i2, **cl, mean = 0, n, nin = 0, *m;
char ***name;
/*
データの入力と平均点の計算
*/
printf("クラスの数は? ");
scanf("%d", &n);
m = new int [n]; // 各クラスの人数
cl = new int * [n]; // 点数
name = new char ** [n]; // 名前
for (i1 = 0; i1 < n; i1++) {
printf("%d 番目のクラスの人数は ",i1+1);
scanf("%d", &m[i1]);
cl[i1] = new int [m[i1]];
name[i1] = new char * [m[i1]];
nin += m[i1];
for (i2 = 0; i2 < m[i1]; i2++) {
name[i1][i2] = new char [20];
printf(" %d 番目の人の名前は? ",i2+1);
scanf("%s", name[i1][i2]);
printf(" 点は? ");
scanf("%d", &(cl[i1][i2]));
mean += cl[i1][i2];
}
}
mean /= nin;
printf("平均値 %d\n", mean);
/*
比較と出力
*/
for (i1 = 0; i1 < n; i1++) {
for (i2 = 0; i2 < m[i1]; i2++) {
if (cl[i1][i2] <= mean)
printf(" %3d 点 %s\n", cl[i1][i2], name[i1][i2]);
delete [] name[i1][i2];
}
delete [] cl[i1];
delete [] name[i1];
}
delete [] cl;
delete [] name;
return 0;
}
| 菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |