x_i = cos((pi*(2i-1))/2N) (i=1,2,…,N)
という式で、N=5,9,17の時の値を求めたいのですが、うまくできません。
頑張ってN=5の式を作ってみたのですがうまくいきませんでした。
C言語、プログラミング初心者でわからないのでできるだけ丁寧に教えていただけると助かります。
自分で作ってみたプログラムを書いてみたので、どこが違うか、またどうすればいいかを教えていただきたいです。
#include <stdio.h>
#include <math.h>
#define iMAX 5
#define PI 3.1415926535
int main()
{
int i ;
int x[iMAX] ;
int n = ((PI * (2i-1) ) / 10) ;
double cos ( n ) ;
for (i = 1; i < 5; i++) {
x[i] = cos ( n );
}
for (i = 1; i<=5; i++) {
printf("x[%d] = %d\n",i,x[i]);
}
return 0 ;
}
No.2ベストアンサー
- 回答日時:
cosの結果はdouble型です。
x_i = cos((pi*(2i-1))/2N) は、コード上、正確には
x_i = cos((pi*(2*i-1))/(2*N)) です。
N=5の場合、iを1からNまで変化させればOKです。
以下のようにしてください。
#include <stdio.h>
#include <math.h>
#define N 5
#define PI 3.1415926535
int main()
{
int i;
double x_i;
for (i = 1; i <= N; i++) {
x_i = cos((PI*(2*i-1))/(2*N));
printf("x[%d] = %f\n",i,x_i);
}
return 0;
}
-----------------------
以下、実行結果です。
x[1] = 0.951057
x[2] = 0.587785
x[3] = 0.000000
x[4] = -0.587785
x[5] = -0.951057
No.3
- 回答日時:
(1)
double cos ( n ) ;
ここに書く意味がない。
というかエラー
(2)
int n = ((PI * (2 * i-1) ) / 10) ;
int x[iMAX] ;
int型の変数には整数しか入らない。
小数点以下が切り捨てられる。
(3)
int x[iMAX] ;
と配列を宣言したときに、安全に利用できるのは x[0]からx[iMAX-1]まで。
for (i = 1; i<=5; i++) {
で x[i]はどこまで使うでしょうか?
※ 元の式のNをiMAXと定義しているのだから、i<=5の5とか, / 10) の10とかもiMAXを使ったのにするのが「いいプログラム」です。
(4)
x[i] = cos ( n );
変数は、その時点での「値」だけを記憶する。
nの値は
int n = ((PI * (2 * i-1) ) / 10) ;
の時点で確定して、その後 i が変化しても n は変化しない。
(5)
printf("x[%d] = %d\n",i,x[i]);
xの型を変えたら、対応する書式も変える必要がある。
初心者なので知らないことが多くて、間違えているところを指摘していただけるととても勉強になります。
見直して、参考にさせていただきます。ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
ファイルから読みこむ方法
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
if と配列の組み合わせ
-
C#の質問
-
複数桁10進数の*桁目だけを抽出...
-
【C言語】円の面積を求めるプロ...
-
PowerShellがうまくいかない
-
ポインタによる関数への配列渡し
-
式は定数値が必要です」という...
-
C言語 エラーの原因がわからな...
-
【C++】関数ポインタの使い方
-
C言語で行列の積を計算できるよ...
-
演算子オーバーロードのプログ...
-
double型の値を、一桁ずつint型...
-
C++ グラフ作成
-
c言語の配列を使ってサイコロを...
-
因数分解を行うプログラムについて
-
課題でつまってます・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
c++でテンプレートのコードでわ...
-
(int *)の意味
-
ラップ関数とはどんなものですか?
-
数字列を3桁ごとにカンマで区切...
-
c言語のリダイレクトによる円...
-
比較回数と交換回数表示について
-
実数の整数部,小数部の取得
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
PowerShellがうまくいかない
-
c言語の配列を使ってサイコロを...
-
課題でつまってます・・・
-
C言語のサイコロシミュレート
-
エラー 添字が付けられた値が、...
おすすめ情報