• ベストアンサー

c言語について

身長と体重を読み込んで平均を表示するプログラムについて、 Aiba 160 59.3 KUrata 16251.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.9 とういデータがテキストファイル"hw.dat"として保存されていなければならないのですが、保存の仕方が分からず、必ずファイルをオープンできません。 どうか保存の仕方を具体的なプログラムを交えながら教えていただきたいです><

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

メモ帳で質問文のデータを打ち込んで、"hw.dat"として保存しているつもりだが、プログラムを実行するとファイルがオープンできない。 プログラムや実行方法が間違ってる訳は無いから、データが保存されていないに違いない。 …って事でしょうか? ファイルの拡張子を.datにしたつもりでも、メモ帳が親切に"hw.dat.txt"って名前で保存してくれており、Windowsは.txtを表示しない設定になってるから、その辺が確認できないとか? プログラムするのなら、今後も不便なので、登録されている拡張子もきちんと表示する設定に変更するのが良いと思います。 ファイル名拡張子を表示または非表示にする http://windows.microsoft.com/ja-jp/windows-vista/show-or-hide-file-name-extensions

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • honor
  • ベストアンサー率35% (25/71)
回答No.2

身長と体重を"読み込む"んですよね。"書き込む"のではなく。 ならばメモ帳に身長とかを書いて 名前を付けて保存>hw.dat として保存し、プログラムと同じディレクトリに置けばいいのでは。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

身長と体重を「読み込んで」平均を表示するプログラム なのにどうして「保存」の仕方を求めているのかしら?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言について

    Aiba 160 59.3 KUrata 16251.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.9 これをテキストファイルで保存し、ファイルをオープンしようとすると、何だか変な文字がズラーっと表示されてしまうのです。 どうしたらただしく表示されるでしょうか?

  • C言語に関する質問です

    入力ファイルindata.datからデータを読み込み配列に格納し同時にデータの個数を求めるプログラムを作成したいです データの個数は最大で100個扱えるようにしたいです indate.datの作成の仕方も教えて欲しいです 宜しくお願いします

  • ポインタで平均(C言語)

    こんにちは。大学のプログラミングの講義で 「4名の身長に追加する形でキーボード(標準入力)から自分の身長を入力し、計5名の身長の平均をポインタを使って求めるC言語プログラムを作成せよ」という課題が出されました。 なかなかわからず、現段階では以下のようになっていますが実行すると途中で停止し終了してしまいます。どうすれば正常に作動できますか? #include <stdio.h> void hiroko(int *height) { if(*height<180) *height=180; } int main(void) { int sato=178; int sanaka=175; int hiraki=165; int masaki=179; double my; hiroko(&masaki); puts("身長を入力\n"); printf("自分の身長:"); scanf("%f",my); printf("佐藤君の身長:%d\n",sato); printf("佐中君の身長:%d\n",sanaka); printf("平木君の身長:%d\n",hiraki); printf("真崎君の身長:%d\n",masaki); printf("5人の身長平均:%f",(my+sato+sanaka+hiraki+masaki)/5); return 0; }

  • C言語 ファイル処理に関する事

    テキストエディタで打ち込んだファイル 【hw.dat】 Akiba 160 59.3 Kurata 162 51.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.5 名前・身長・体重のデータです。 <問>   「hw.dat」から読み込んだデータを身長順にソートした上で   表示するプログラムを作成せよ。 下記のプログラムでは実行結果が何も出てきません。 入門レベルのスキルしかありません。何処が良くないのでしょうか。 教えて下さい。 [プログラム]   #include <stdio.h>   #include <string.h>   void swap_double(double *x, double *y)   {   int temp = *x;   *x = *y;   *y = temp;   }   void swap_name(char *sx, char *sy)   {   char *temp;    strcpy(temp, sx);   strcpy(sx, sy);   strcpy(sy, temp);   }   void sort(double *he, double *we, int n)   {   int i, j;    for(i = 0; i < n - 1; i++){   if(*(he - 1) > *he ){ swap_double((he - 1), he); swap_double((we - 1), we); } } }   void sort_name(double *he, char *na, int n)   {    int i, j;    for(i = 0; i < n - 1; i++){   if(*(he - 1) > *he ){ swap_name((na - 1), na); } } }  int main(void)   {    FILE *fp;    int ninzu = 0;    char *name[100];    double height, weight;    double hsum = 0.0;    double wsum = 0.0;    int i;    char *na[i];    double he[6];    double we[6];    if ((fp = fopen("hw.dat", "r")) == NULL)    printf("\aファイルをオープンできません。\n");    else{   for(i = 0; i < 6; i++){   while (fscanf(fp, "%s%lf%lf", name , &height , &weight) != EOF ){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i];   printf("%-10s %5.1f %5.1f\n", na, height, weight);   }   }   printf("------------------------\n");   printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);   }   puts("\n身長順にソートしました。");   for(i = 0; i < 6; i++){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i]; }   for(i = 0; i < 6; i++){   sort(he, we, 6);   sort_name(he, *na, 6);   printf("%-10s %5.1f %5.1f\n", *(na + i) , *(he + i), *(we + i));   }   printf("------------------------\n");   printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);  fclose(fp);   return 0;  }   

  • C言語について教えてください。

    名前、身長、体重をメンバとする構造体オブジェクトを要素とする配列を宣言・定義する。 (1)名前、身長、体重を構造体オブジェクトのメンバに格納する関数 (2)平均身長を計算する関数 (3)平均体重を計算する関数 をそれぞれ定義し、その関数の機能を確認するプログラムを作成する。 構造体オブジェクトの各メンバは以下の値をもつとする。 Name Height(cm) Weight(kg) Tom 174.2 72.3 Jerry 152.3 49.2 Spike 168.6 84.8 ただし、平均身長と平均体重は呼び出し元の関数(関数main())で表示する。 また(2)(3)については、生徒の人数が変更されても処理できる関数を作成する。 [実行結果の例] 平均身長:165.0cm 平均体重: 68.0kg [ヒント] 構造体の配列でまとめられたデータから平均身長あるいは平均体重を計算する関数 <返却値型><関数名>(構造体の配列の受け渡しに対応した仮引数の宣言、生徒の人数) この問題について教えてください。 下のプログラムは自分でつかりかけたプログラムです。 #include <stdio.h> #include <string.h> struct student { char name[6]; double height; double weight; }; struct student set_student(char *n, double h, double w) { struct student ss; strcpy(&ss.name[0], n); ss.height = h; ss.weight = w; return ss; } int main(void) { struct student seito[3]; seito[0] = set_student("Tom", 174.2, 72.3); seito[1] = set_student("Jerry", 152.3, 49.2); seito[2] = set_student("Spike", 168.6, 84.8); return 0; } (2)(3)計算の計算する関数を定義し、表示させる方法がよく分かりません。具体的に教えてもらえませんか。よろしくお願いします。

  • C言語についてです。

    EXELEファイルから値を読みこんで、各自のBMIと全体の身長・体重の平均値を求めるプログラムを作成したいんですが…C言語で…。途中までで混乱してしまい、あっているかも分からないのでお願いしたいです。よろしくお願いします。ヒントだけでもありがたいです。 下がそのファイルです。 height weight 170.7 52.9 166.8 71.3 171.4 58.5 173.4 76.7 176.1 80.2 184 89.1 179 64.7 177.2 78.5 177.7 80.7 173.8 64 167.7 60.3 181.6 72.3 162.4 53 177.4 69.6 178 76.4 174 77.2 185.4 86 172 68.5 172.7 60 166.5 62 171.3 69.6 177 79 174.8 82.6 167.5 69.2 176.8 80.1 181.5 76 177.3 76.4 169.4 51.8 165.2 73.2 175.3 72.3 181.5 72.4 171.5 68.8 176 73.2 186 99.8 167.3 65.5 176.1 78 183.3 77.2 177.5 59.5 180.3 62 171.2 74.7 175 87.2 176 80 171.8 50.6 平均身長の値を出すプログラムは出ているので…これもあわせてBMIと平均体重出してくれるとうれしいです。 /* basic claculation */ #include <stdio.h> #include <math.h> int main(void) { int i, ii; int ntotal; double sum_height; double weight[50], height[50]; double mean_height; char w[6],h[6]; FILE *fp; /* initial setting */ /* ntotal: total word number */ /* sum : total character number */ ntotal = 0; sum_height = 0; /* file open */ /* my data file is weight-height.data */ /* which is in my root directory */ fp = fopen("./weight-height.data","r"); /* skip character reading. */ fscanf(fp,"%s,%s",w,h); /* ntotal: total number */ /* sum : total value */ for (i=0;i<=47;i++) { if (feof(fp)) break; fscanf(fp,"%lf,%lf",&weight[i],&height[i]); printf(" weight = %lf height = %lf \n",weight[i],height[i]); sum_height = sum_height + height[i]; } fclose(fp); ntotal = i; printf(" 全人数 = %d \n",ntotal); mean_height = sum_height /ntotal; printf(", 平均身長 = %lf \n",mean_height); return(0); }

  • C言語(線形リスト)

    #include <stdio.h> #include <string.h> typedef struct { char name[100]; double height, weight; } HW; int main (void) { FILE *fp; int i, ninzu = 0; char name[100]; double height, weight; double hsum = 0.0; double wsum = 0.0; HW class[100]; if ((fp = fopen ("hw.dat", "r")) == NULL) { perror ("\a ファイルをオープンできません。\n"); exit (1); } else { while (fscanf (fp, "%s %lf %lf", class[ninzu].name, &(class[ninzu].height), &(class[ninzu].weight)) == 3) { ninzu++; } for (i = 0; ninzu > i; i++) { printf ("%-10s %5.1f %5.1f\n", class[i].name, class[i].height, class[i].weigh t); hsum += class[i].height; wsum += class[i].weight; } printf ("----------------------------------------\n"); printf ("平均 %5.1lf %5.1lf\n", hsum / ninzu, wsum / ninzu); fclose (fp); } return (0); } このプログラムを100人分のデータをファイルから読み込んで線形リストにするにはどのようにプログラムを改良すれば良いのでしょうか?

  • C言語について

    C言語の理解で行き詰まってしまい、ポイントを教えていただきたく質問させて頂きました。 抽象的な説明で申し訳ありません。 よろしくお願いします。 悩んでいるポイントは以下になります。 ファイルを保存してからは、プログラム内で system 関数を使って、 外部プログラムを実行する。 最初は、文字コードをEUCに変換して、ファイルに保存します。 system("nkf -e (抽出データを保存したファイル名) > data.txt"); 次に、形態素解析をして名詞などを取り出して、またファイルに格納する。 system("chasen data.txt | ./cs.pl > key.txt"); また、臨時で保存しておいたファイルを削除する。 unlink("data.txt"); 以上ですが、質問がわかりづらい場合は教えてください。 よろしくお願いします。

  • C言語のプログラムで...

    下のプログラムは参考書にあったサンプルプログラムなのですが /* 関数の宣言 */ int print_struct(struct person dat); のところはなぜint型なのですか? #include <stdio.h> #include <string.h> /* 構造体の定義 */ struct person { char name[20]; /* 名前 */ double height; /* 身長 */ double weight; /* 体重 */ int bpl; /* 最低血圧 */ int bph; /* 最高血圧 */ }; /* 関数の宣言 */ int print_struct(struct person dat); /* main関数 */ int main(void) { /* 変数の宣言 */ struct person dat; /* 構造体のメンバーに値を代入 */ strcpy(dat.name,"山田太郎"); dat.height = 173.5; dat.weight = 63.0; dat.bpl = 98; dat.bph = 113; /* struct person関数を実行 */ print_struct(dat); return 0; } /* print_struct関数 */ int print_struct(struct person dat) { /* 画面に出力 */ printf("%s\n",dat.name); printf("%f\n",dat.height); printf("%f\n",dat.weight); printf("%d\n",dat.bpl); printf("%d\n",dat.bph); return 0; }

  • C言語のプログラムについて

    リスト処理による挿入法で得点の降順に整列して表示する。また、整列する際に要素どうしを比較した回数も表示する。 このプログラムを作成したいのですが、ファイルを開いてからこの先どのように書けばいいのかわからなくなりました。分かる方教えてください。 実行例 番号 氏名      得点 1021 Machida Msao 100 1017 Nonaka Fujio 98 1011 Suzuki Kaoru 93 1006 kato Ichiro 91 1002 Inoue Yasuo 85 整列のための比較回数=○○回 ファイルを開くのはこのように書きました。 #include<stdio.h> #include<stdlib.h> int main(void) { struct GDATA{ int bango; char sei[11],mei[11]; int tokuten; }; struct GDATA seiseki; FILE *fp; if((fp=fopen("data-a.dat","r"))==NULL) { printf("data-a.dat OPEN ERROR!\n"); exit(1); }