データの読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jtptmjtk

データの読み込み

#1

投稿記事 by jtptmjtk » 3週間前

sドライブのjmpフォルダにあるファイル(s.c)の最初にその後のデータの個数nを表す整数値がテキストとして記録されており、データは浮動小数点値でn個記録されている。また全てのデータの間にスペース文字が入っている。n個全てのデータを配列に格納して分散y^2を求め、表示しなさい。というプログラムの書き方がわからないのですがどう書いたらよいのでしょうか、、

Math

Re: データの読み込み

#2

投稿記事 by Math » 3週間前

ほぼ見当はつくけれども、これだけでは他人には正確には伝わらないと思うの
ここrulesをよく読んで
頑張って他人に理解できる形にしてみてください。
例えば下記のように
----------------------------------------------------------------------------------------------
どう質問していいか解らない時は、以下のテンプレをコピペして、

各項目に対して答える形で記載して下さい。

[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか

[2] 環境  
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々

[3] その他
 ・どの程度C言語を理解しているか
 ・ライブラリを使っている場合は何を使っているか
----------------------------------------------------------------------------------------------

jtptmjtk

Re: データの読み込み

#3

投稿記事 by jtptmjtk » 3週間前

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
Int
main()
{
FILE *fp;
char buf[48];
double l,m,n;
int i;
if((fp=fopen(“s.c”,”r”))==NULL){
perror(“read open file”);
exit(1);
}
l=0;
m=0;
n=0;
while(fgets(buf,48,fp)!=NULL){
sscanf(buf,”%lf”,&x);
l+=n
m+=n*n;
i++;
}
l/=i;
m/=i;
m-=l*l;
printf(“%f\n”,m);
fclose(fp);
return 0;
}
というとこまでできているのですがあっているのかの自信がありません

Math

Re: データの読み込み

#4

投稿記事 by Math » 3週間前

この
#include <stdlib.h>
Int
はなにですか?

OS : Windows, Linux等々
コンパイラ名
は何ですか?

C言語の経験は?
ファイル s.c は本当に拡張子が .c ?
そして内容の例は?

そして学校の課題から?
 
rules落ち着いてよく読んでください。

Math

Re: データの読み込み

#5

投稿記事 by Math » 3週間前

それからプログラムにはなにをしようとしているのコメント文を主要な行に書いてください。

Math

Re: データの読み込み

#6

投稿記事 by Math » 3週間前

分散とは
https://sci-pursuit.com/math/statistics/variance.html

平均との差分の二乗平均だから 変数の意味を書けばそんなに面倒でもないとおもいますよ。

かずま

Re: データの読み込み

#7

投稿記事 by かずま » 3週間前

jtptmjtk さんが書きました:
3週間前
というとこまでできているのですがあっているのかの自信がありません
できているのですか?
コンパイルしていないのですか?
どんなデータでテストしようとしていますか?

問題をちゃんと読んでいますか?

「sドライブのjmpフォルダにあるファイル(s.c)」ですから、
パス名は s:\jmp\s.c ですよね
C の文字列だと "s:\\jmp\\s.c" と書かなければなりませんが、
Windows はパス名の区切りに '/' も使えるので
fopen("s:/jmp/s.c", "r") と書いても OK です。

「最初にその後のデータの個数nを表す整数値がテキストとして記録されており、
データは浮動小数点値でn個記録されている。また全てのデータの間にスペース
文字が入っている。」
例えば, { 31.4, 15.9, 26.5, 35.8, 97.9 } の 5個のデータがあったとすれば、
ファイルの中身は、5 31.4 15.9 26.5 35.8 97.9 のはずです。
fgets と 1個の sscanf の組み合わせでは読み込めないでしょう。
fscanf を使うにしても、整数値を読み込む書式 "%d" と
浮動小数点値を読み込む書式 "%lf" の 2つの fscanf が必要でしょう。

「n個全てのデータを配列に格納して」

コード:

	fscanf(fp, "%d", &n);
	for (int i = 0; i < n; i++)
		fscanf(fp, "%lf", &x[i]);
プログラムを書き直して、分からないところを質問してください。
プログラムの提示にはコードタグを使ってください。

アバター
あたっしゅ
記事: 221
登録日時: 8年前
住所: 東京23区
連絡を取る:

Re: データの読み込み

#8

投稿記事 by あたっしゅ » 3週間前

質問主は、

>この
>#include <stdlib.h>
>Int
>はなにですか?

Math さんの書き込みの意味が、わかっていますか ?
「C/C++ 言語では、"int" と "Int" すなわち、大文字小文字の違いで、別の意味になります」という趣旨です。
手提鞄あたっしゅ、[MrAtassyu] http://atassyu.rosx.net/
手提鞄屋魚有店(てさげかばんやうおありてん)
2019(H31)-05-12 Comitia 128 青海新会場

返信

“C言語何でも質問掲示板” へ戻る