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

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

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

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

377閲覧

エクセルから読み込んだ配列の最小値を書き込む

cyclekaba01

総合スコア8

C

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2018/05/07 02:09

編集2018/05/07 02:40

エクセルから5個の数字のデータ2列を読み取り、各配列の最小値を別のエクセルファイルに書き込みたいのですが、どのようにすればできるでしょうか?
最大値は書き込むことができて、最小値は符号を変えればいいと思ったのですが、符号を変えてもうまくいかないです。

変数の定義はたぶんちゃんとできてます。

#include<stdio.h> #include<stdlib.h> #define _USE_MATH_DEFINES #include<math.h> #define MaxN 100 FILE *fp1; FILE *fp2; int main() { double x[MaxN] = { 0.0 }; double y[MaxN] = { 0.0 }; int i; int N; i = 0; double maxx = x[i]; double maxy = y[i]; double minx = x[i]; double miny = y[i]; fopen_s(&fp1, "data.csv", "r"); fopen_s(&fp2, "task3.csv", "w"); while (fscanf_s(fp1, "%lf,%lf", &x[i], &y[i]) != EOF) { printf("%d %lf %lf\n", i + 1, x[i], y[i]); fprintf(fp2, "%d,%lf,%lf\n", i + 1, x[i], y[i]); if (maxx < x[i]) { maxx = x[i]; } if (maxy < y[i]) { maxy = y[i]; } if (minx > x[i]) { minx = x[i]; } if (miny > y[i]) { miny = y[i]; i++; } fclose(fp1); fprintf(fp2, "最大値,%lf,%lf\n最小値,%lf,%lf\n", maxx, maxy, minx, miny); fclose(fp2); return 0; }

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

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

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

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

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

MMashiro

2018/05/07 02:15 編集

ソースコードを見る感じC++なのでC#のタグは外したほうが良いと思います。 あとソースコードは ``` で括ってください
y_waiwai

2018/05/07 02:19

うまくいかないとはどうなる?
cyclekaba01

2018/05/07 02:29

初期値で与えた0になります。初期値を変えた場合、その変えた数字になりました。
ttyp03

2018/05/07 06:01

Excel?ただのCSVファイルでは?
guest

回答2

0

初期値の問題かな

maxx=many=0;
minx=miny=INT_MAX;

をwhileの前に入れてみよう


doubleだった。。

maxx=many=DBL_MIN;
minx=miny=DBL_MAX;

だねー

ちなみに、

double maxx = x[i]; double maxy = y[i]; double minx = x[i]; double miny = y[i];

の代入は意味ありません。
みんな0が入るだけです

投稿2018/05/07 02:23

編集2018/05/07 03:31
y_waiwai

総合スコア87774

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

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

0

ベストアンサー

最小値の初期値として0を与えてしまうと、0より小さい値が出てこない限り最小値が更新されなくなります。
DBL_MAXに設定するか、最初に読み込んだ値を設定しましょう。
なお、実は最大値にも同様の問題がありますが、おそらく読み込んでいるデータの中に0以上のものがあるため、問題がないように見えています。最小値と同様に、DBL_MINを設定するか、最初に読み込んだ値を設定したほうがいいでしょう。

また、printf系関数の書式に%lfは使わないほうがいいです。元々%lfという書式はなかったけれども、scanf系と混同して%lfを使う人が多かったために、規格の方が折れた(%fと同じとされた)ので。

投稿2018/05/07 03:13

m-take

総合スコア249

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問