解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。

Slides:



Advertisements
Similar presentations
構造体 構造体とは? 複数のデータをパックしたもの。 新しい “ 型 “ として使用できる. 構造体 キーワード struct strcut は構造体を宣言する命令。 struct { double x,y; }a,b,c; ↑ ここまでが宣 言 ← この形式で、構造体 a,b,c, を定 義.
Advertisements

プログラミング演習( 1 組) 第 6 回
プログラミング演習( 2 組) 第 9 回
次ページに関数の解答例 課題12-1 (問題と解答) 複素数xとして, 実部を入力してください.10 虚部を入力してください.20
プログラミング演習(1組) 第7回
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
関数 C 言語では、関数を組み合わせてプログラムを構成する
プログラミング入門2 第10回 動的な領域確保 情報工学科 篠埜 功.
第12回新しい型と構造体.
第13回構造体.
構造体(struct) 配列では、複数のデータをひとまとまりにして操作する ことが出来る。しかし、それぞれのデータは同じ型(例えば
課題解説: 関数の引数にポインタを使って2数を入れ替える
第12回構造体.
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング演習(2組) 第12回
問題 1 フィボナッチ数列 xn は次で定義される。
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第7回 条件による繰り返し.
プログラミング入門2 第5回 関数(1) 芝浦工業大学情報工学科 青木 義満
プログラミング演習 バージョン1 担当教員:綴木 馴.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
第10回関数 Ⅱ (ローカル変数とスコープ).
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
プログラミング序論 2. n人のインディアン.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
高度プログラミング演習 (03).
今までの練習問題の復習.
第7回 条件による繰り返し.
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
プログラミング入門2 第11回 情報工学科 篠埜 功.
高度プログラミング演習 (08).
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
第11回 プログラミングⅡ 第11回
高度プログラミング演習 (05).
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
疑似乱数, モンテカルロ法によるシミュレーション
プログラミング序論演習.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング序論演習.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
モバイルプログラミング第2回 C言語の基礎 (1).
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
プログラミング演習I 補講用課題
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。 #include <stdio.h> struct complex { double real, imag; }; typedef struct complex Complex; Complex cmult(Complex, Complex); main() { Complex x = {1.0, 1.0}; Complex y = {1.414, 1.414}; Complex z; z = cmult(x,y); printf(“z = %f + %fi\n”, z.real, z.imag); } Complex cmult(Complex a, Complex b) { Complex c; c.real = a.real*b.real - a.imag * b.imag; c.imag = a.real*b.imag + a.imag * b.real; return c;

解答 2 3次元での座標(x、y、z)ベクトルを構造体で定義し、二つの点の 間の距離を計算する関数distanceを定義せよ。 この関数を使って、(1、1、1)と(0、1、0)の距離を求める プログラムを作成せよ。 #include <stdio.h> #include <math.h> struct vector { double x, y, z; }; typedef struct vector Vector; double distance(Vector, Vector); main() { Vector x = {1.0, 1.0, 1.0}; Vector y = {0.0, 1.0, 0.0}; double d; d = distance(x,y); printf(“distance = %f”, d); } double distance(Vector a, Vector b) { double d; d = (a.x-b.x)*(a.x -b.x)+(a.y-b.y)*(a.y-b.y) + (a.z - b.z)*(a.z - b.z); d = sqrt(d); return d;

解答 1 #include <stdio.h> #include <math.h> main() { char bun[100]; int n,j; char c; printf(“文章を入力”);scanf(“%s”, bun); n = strlen(bun); for(j = 0; j < n; j++) { c = bun[j]; if(c >= ‘a’ && c <= ‘z’) { c = c + 3; if(c > ‘z’) c = c - ‘z’ + ‘a’; } if(c >= ‘A’ && c <= ‘Z’) { if(c > ‘Z’) c = c - ‘Z’ + ‘A’; printf(“暗号文は%s\n”, bun);

解答 2 正の整数nに対して、nの約数の和(1を含みnを含まない 約数の和)を返す関数を作れ。これをもとに、1以上 10000以下の友愛数を求めるプログラムを作成せよ。 #include <stdio.h> int yakusuu(int n) { int i,m=0; for(i = 1; i < n; i++) if(n % i == 0) m = m + i; return m; }

解答 2(続き) 正の整数nに対して、nの約数の和(1を含みnを含まない 約数の和)を返す関数を作れ。これをもとに、1以上 10000以下の友愛数を求めるプログラムを作成せよ。 #include <stdio.h> int yakusu(int); main() { int i,m,n; for(i = 1; i < 10000; i++){ m = yakusu(i); n = yakusu(m); if(n == i) printf(“%d and %d は友愛数¥n”, i, m); }

解答 3 #include <stdio.h> double func(double,double[],int); main() 解答 3  #include <stdio.h> double func(double,double[],int); main() { double f[] = {-3,1,3,0,0,1}; double a = 2.0; int n; double s; n = sizeof(f)/sizeof(double); s = func(a, f, n); printf(“関数の値は%f\n”, s); } double func(double a, double f[], int n) { int I; double s=0; for(I = 0; I < n; I++) { s = s*a + f[n-I-1]; return s;

解答 4 平面での座標ベクトル(x、y)を構造体として定義し、 2点間の距離を求める関数をプログラムせよ。 また、この関数を用いて与えられた3点を頂点とする 三角形の面積を求めるプログラムを作成せよ。 #include <stdio.h> #include <math.h> struct point { double x,y; }; typedef struct point Point; double distance(Point, Point); Double helon(double, double, double); main() { Point A = {1,0}; Point B = {0, 1};  Point C = {1,1}; double a, b, c, s; a = distance(A,B); b = distance(B,C); c = distance(C,A); d = helon(a,b,c); printf(“面積は%d\n”, d); }

解答 4(続き) double distance(Point a, Point b) { double d; d = (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); return sqrt(d); } double helon(double a, double b, double, c) { double s; s = (a+b+c)/2; S = s*(s-a)*(s-b)*(s-c); return sqrt(s);

解答 5 正の実数を入力し平方根を計算するプログラム。ただし、負の実数を入力した場合は、その旨表示するよう気配りすること。 #include <stdio.h> #include <math.h> main() { double d, s; printf(“正の実数を入力せよ”); scanf(“%lf”, &d); if(d > 0) { s = sqrt(d); printf(“%fの平方根は%fです\n”, d, s); } else { printf(“正の実数じゃないとだめ\n”); }

解答 6 キーボードから 10 人の成績(100 点満点の整数値)を配列に読み込み、最高点、最低点及び 平均点を表示するプログラム #include <stdio.h> main() { int d[10]; int j; double av, amax, amin; for(j = 0; j < 10; j++) { printf(“学籍番号 No. %d の成績”); scanf(“%d”, &d[j]); } amax = amin = d[0]; if(amax < d[j]) amax = d[j]; if(amin > d[j]) amin = d[j]; av = av+ d[j]; av = av/10; printf(“最高点は%d点です\n”, amax); printf(“最低点は%d点です\n”, amin); printf(“平均点は%d点です\n”, av); % ./a.out 学籍 No. 0 の成績:80 学籍 No. 1 の成績:70 学籍 No. 2 の成績:95 ... 学籍 No. 9 の成績:40 最高点は 100 点です。 最低点は 10 点です。 平均点は 55.3 点です。 %

解答 7 下のような模様を出力するプログラムをつくれ。 %./a.out 文字は何にする?# 最大の個数は?5 ##### #### ### #include <stdio.h> main() { char c; int n; int I,j; printf(“文字は何にする”); scanf(“%c”, &c); printf(“最大の個数は”); scanf(“%d”, &n); for(I = 0; I < n; I++) { for(j = 0; j < n-I;j++) putchar(‘ ‘); for(j = 0; j < n-I, j++) putchar(c ); }

解答 8 ユークリッドの互除法を用いて、入力した 2 つの自然数の最大公約数を求めるプログラムを作れ。 #include <stdio.h> main() { int n,m; int a, b,r; printf(“自然数を二つ入力せよ:”); scanf(“%d %d”, &a, &b); if(a <= 0 || b <= 0) { printf(“入力エラー\n”); exit(1); } n = a; m = b; while(m != 0) { r = n % m; n = m; m = r; printf(“%d と %d の最大公約数は%dです。\n”, a, b, m);

解答 9 の解を求める方法にニュートン法がある。 適当な初期値 から始めて、 を順に求めていくと、 は解に近づいていく。                    の解を求める方法にニュートン法がある。 適当な初期値  から始めて、 を順に求めていくと、     は解に近づいていく。 #include <stdio.h> #include <math.h> main() { double x,y,c; c = 2.0; y=1.0; do { x = y; y = (2*x+c/(x*x))/3.0; } while(fabs(x-y) > 0.0001); printf(“sqrt(%lf) = %lf¥n”, c, y); }