質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

2回答

708閲覧

n 多角形の線分の座標データを作成するプログラム

Air_29

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/07/04 01:53

前提・実現したいこと

質問です。C言語の勉強をしていたのですが、どうしても分からない問題があり、どなたか教えて貰ってもよろしいでしょうか?

問題
n 多角形の線分の座標データを作成するプログラムを作成し,出力データを Excel 等のグラフソフトで表示し
なさい.キーボードから,n 多角形の n を入力後,対応する X と Y 座標値をキーボード入力すると,各線分の座 標値を外部ファイルに出力する.PC 上の黒い画面には各線分の式を表示しなさい.各線分の分割数は 10 として, 計算を行いなさい.
外部ファイルで出力する際は,ファイル名を「●●.csv」とすると良い.「.csv」は,各項目のデータを「,」を 使って区切るファイル形式である.

###試したこと
出来る限り自分でも解いてみたのですが
途中までしか解けませんでした…↓

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N
int main(void){
int i, n;
double A[2][100];
FILE *fp;
fp = fopen("output.csv", "w");

scanf("頂点の数を入力 %d", &n);

FILE *fp = fopen("output.csv", "w");

for (i = 0; i < n; i++){

printf("座標%d:",i+1);
scanf("%lf %lf", &A[0][i],&A・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2019/07/04 02:10

「何が」分からないのかを明確にされては如何でしょう. CSV でしょうか, ファイルへの書き込みでしょうか, 何かの計算式でしょうか, 複数座標の入力でしょうか... また, 入力と出力を具体例からはっきりさせると良いかと思います. 例えば, 五角形を表示させる場合は, どのような値を入力してどのような output.csv が作られ, 「PC 上の黒い画面には」どのような式が表示される "べき" なのでしょうか.
fana

2019/07/04 02:14

> n 多角形 というのは,「正n角形」とかのことでしょうか? nの後に入力されるXとYは何に使うのでしょう?
Air_29

2019/07/04 02:16

正n角形のことです! nの後のX,YはX座標,Y座標のことです。
Air_29

2019/07/04 02:17

座標の入力について がわかってません…。
fana

2019/07/04 02:22

いやだから,そのX座標とY座標ってのは,何の座標なの?っていう話なんですが. 図形の中心座標ですか? それともどこかの頂点の座標なんですか? その他? あと,図形の向きはどうでも良い感じでしょうか?(例えば三角形の場合,▲でも▼でもその他の向きでもOK?)
jimbe

2019/07/04 02:24 編集

「n角形の各頂点のX,Y座標を配列 A([0]がX,[1]がY)に入力する」部分が分からないということでしょうか.
Air_29

2019/07/04 02:24

そうです!説明が下手ですいません…。
fana

2019/07/04 02:28

要は,n個の頂点座標が入力されるから,それぞれの辺上の点の座標を10個求めろって話ですか. (各頂点の座標を外から指定するなら 「正」n角形 という話ではないですね)
Air_29

2019/07/04 02:29

そうです!
guest

回答2

0

各辺に関しては,頂点2個があれば仕事ができるから,
こんな感じにすればどうでしょう?

//頂点座標の入力 void InputVtx( double *pX, double *pY ) { scanf("%lf %lf", pX,pY); } //2頂点 (X0,Y0)と(X1,Y1) により定義される辺上の点群座標を求めてファイルに出力する //線分の式も表示する void Work( double X0, double Y0, double X1, double Y1, ファイル関係で必要な引数(省略) ) { ...(省略) } //main int main(void) { int i; int n; double X0,Y0; double X[2]; double Y[2]; 頂点数nの入力(省略) //最初の頂点座標の入力 InputVtx( &X0, &Y0 ); ここらで出力用ファイルのオープン(省略) X[0]=X0; Y[0]=Y0; for( i=0; i<n-1; ++i ) { //次の頂点の座標を入力 InputVtx( &X[1], &Y[1] ); Work(X[0],Y[0], X[1],Y[1], 略); X[0]=X[1]; Y[0]=Y[1]; } Work(X[0],Y[0], X0,Y0, 略); 出力用ファイルのクローズ(省略) return 0; }

投稿2019/07/04 02:48

fana

総合スコア11663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「n角形の各頂点のX,Y座標を配列 A([0]がX,[1]がY)に入力する」
不足部分のみ穴埋めしますと以下になるかと思います.

c

1for (i = 0; i < n; i++){ 2 printf("座標%d:",i+1); 3 scanf("%lf %lf", &A[0][i], &A[1][i]); 4}

投稿2019/07/04 02:31

jimbe

総合スコア12659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問