数値しか書かれていないデータがあります.
1 23.4 12.4
2 22.1 8.9
・・・・・・・
このデータを読み込み最高と最低を表示させるにはどうしたらいいでしょうか??
途中までやったのですがバグった感じになってしまいます.
このからどーしたらいいかもわかりません.
教えてください.
#include<stdio.h>
#include<stdlib.h>
main(int ac,char *av[]){
FILE *fp;
int n[10];
int a=0;
int i;
double low[10],high[10];
double low1;
double high1;
fp = fopen(av[1],"r");
if(fp == NULL){
printf("%sファイルが開けません\n",av[1]);
exit(1);
}
while((fscanf(fp,"%d,%lf,%lf",&(n[a]),&(low[a]),&(high[a]))) != EOF){
printf("最低気温: %lf 最高気温: %lf \n",low[a],high[a]);
a++;
}
fclose(fp);
}
構造体を使ったファイルの入出力
Re: 構造体を使ったファイルの入出力
while((fscanf(fp,"%d %lf %lf",&(n[a]),&(low[a]),&(high[a]))) != EOF)
にかえればOK牧場。データの間のスペースが全角だったので、上のコードの
スペースも全角スペースです。もしデータのスペースが半角スペースだったら
上記コードのスペースも半角にしなきゃいけません
にかえればOK牧場。データの間のスペースが全角だったので、上のコードの
スペースも全角スペースです。もしデータのスペースが半角スペースだったら
上記コードのスペースも半角にしなきゃいけません
Re: 構造体を使ったファイルの入出力
「バグった感じ」がどのような状態なのか具体的に教えてください。
1 23.4 12.4
2 22.1 8.9
最高と最低を表示とは、例えば上のようなデータであれば、
最高:23.4 最低:1
という結果を出せばよいということですか?
1 23.4 12.4
2 22.1 8.9
最高と最低を表示とは、例えば上のようなデータであれば、
最高:23.4 最低:1
という結果を出せばよいということですか?
Re: 構造体を使ったファイルの入出力
とりあえず知りたい事は
>このデータを読み込み最高と最低を表示させるにはどうしたらいいでしょうか??
ですよね?
>このからどーしたらいいかもわかりません.
このから、構造体を使ったファイルの入出力に発展させるんですよね?たぶん。
でも、このからどーしたらいいかもわからない事をどうしましょうと聞かれても
うまく答える事はできません。
>このデータを読み込み最高と最低を表示させるにはどうしたらいいでしょうか??
ですよね?
>このからどーしたらいいかもわかりません.
このから、構造体を使ったファイルの入出力に発展させるんですよね?たぶん。
でも、このからどーしたらいいかもわからない事をどうしましょうと聞かれても
うまく答える事はできません。
Re: 構造体を使ったファイルの入出力
バグった感じというのは、値が-34.4325433のようなあり得ない数値を表示してしまうことです。
1 23.4 12.4
2 22.1 8.9
最高 23.4 最低 1
となればいいです。
お願いします。
1 23.4 12.4
2 22.1 8.9
最高 23.4 最低 1
となればいいです。
お願いします。
Re: 構造体を使ったファイルの入出力
りさ さんが書きました:バグった感じというのは、値が-34.4325433のようなあり得ない数値を表示してしまうことです。
1 23.4 12.4
2 22.1 8.9
最高 23.4 最低 1
となればいいです。
なので条件文も入力しなければならないと思うのですが
どのようにつなげればいいのか教えてください。
お願いします。
Re: 構造体を使ったファイルの入出力
(あたえられた)仕様をはっきり理解されていないようです。
データは1行に、整数(たとえば日付) 実数(その日の最高気温) 実数(その日の最低気温)
で書かれています。最低、最大は気温であって、整数は対象ではないと思いますよ。
テーマから推測すると構造体を使わなくてはならない、とか
配列から推測すると最大件数は10件である、とかいろいろ
制限事項、仕様があるはずですが
本当に
>1 23.4 12.4
>2 22.1 8.9
>最高 23.4 最低 1
>となればいいです。
であればよいですか?だとすれば配列も不要で以下の様に書けます。
データは1行に、整数(たとえば日付) 実数(その日の最高気温) 実数(その日の最低気温)
で書かれています。最低、最大は気温であって、整数は対象ではないと思いますよ。
テーマから推測すると構造体を使わなくてはならない、とか
配列から推測すると最大件数は10件である、とかいろいろ
制限事項、仕様があるはずですが
本当に
>1 23.4 12.4
>2 22.1 8.9
>最高 23.4 最低 1
>となればいいです。
であればよいですか?だとすれば配列も不要で以下の様に書けます。
#include<stdio.h>
#include<stdlib.h>
main(int ac,char *av[]){
FILE *fp;
int n;
double low;
double high;
double minV=1.0E10 , maxV=-1.0E10;
fp = fopen(av[1],"r");
if(fp == NULL)
{
printf("%sファイルが開けません\n",av[1]);
exit(1);
}
while( fscanf(fp,"%d %lf %lf",&n,&low,&high) != EOF)
{
if (minV > n) minV= n;
if (minV > low) minV= low;
if (minV > high) minV= high;
if (maxV < n) maxV= n;
if (maxV < low) maxV= low;
if (maxV < high) maxV= high;
}
printf("最低気温: %lf 最高気温: %lf \n",minV,maxV);
fclose(fp);
}
Re: 構造体を使ったファイルの入出力
いろいろ言いましたが、他に問題なければ、以下で完成です。
#include<stdio.h>
#include<stdlib.h>
main(int ac,char *av[]){
FILE *fp;
int n;
double low;
double high;
double minV=1.0E10 , maxV=-1.0E10;
fp = fopen(av[1],"r");
if(fp == NULL)
{
printf("%sファイルが開けません\n",av[1]);
exit(1);
}
while( fscanf(fp,"%d %lf %lf",&n,&low,&high) != EOF)
{
//if (minV > n) minV= n;
if (minV > low) minV= low;
if (minV > high) minV= high;
//if (maxV < n) maxV= n;
if (maxV < low) maxV= low;
if (maxV < high) maxV= high;
}
printf("最高: %lf 最低: %lf \n",maxV,minV);
fclose(fp);
}