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

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

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

#1

投稿記事 by 獅音 » 6年前

C言語の勉強をしています。
ですが、プログラムや勉強法がいまいち分からなくて、プログラムの作成をしたいのですが、
出来なくて困っています。
今しているのは、一次元配列を用いたプログラムを作れるようにと、学校で言われたのですが、
どうゆう書き方なのかが分かりません。
申し訳ないのですが、プログラムの作成例を載せていただけないでしょうか?
よろしくお願いします。

●一次元配列を用いたプログラム
一次元配列を用いて、プログラム内に用意した1年分の気温データについて、平均気温を算出するプログラムを作りなさい。
平均気温の表示は、小数点以下2桁とする。
なお、配列の変数名はondoとして、以下の[各月の気温データ]を用意すること。
他の変数は、カウンタi、温度の合計(平均気温)はmeanとすること。
(用いる変数は、ondo[],i,meanだけで間に合う)

[各月の気温データ]
1月:12.1 2月:12.2 3月:15.2 4月:20.3 5月:24.3 6月:28.1 7月:30.6 8月:32.1 9月:27.9 10月:21.3 11月:17.0 12月:13.1

non
記事: 1097
登録日時: 9年前

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

#2

投稿記事 by non » 6年前

検索すれば、簡単なサンプルはすぐ見つかりますよ。
http://katahiromz.web.fc2.com/c/array.html
non

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 6年前

コードはなく勉強法・考え方が知りたければ、ここで質問してくださいね。
ここでは課題の丸投げ質問はご遠慮頂いております。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プログラムA

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

#4

投稿記事 by プログラムA » 6年前

1. 自分で組んでみる.できなければ,既にどこかに答え(ソース)があるので,それをそのまま組んでみる.
2. それの中身を理解,もしそれもできなければ,理解出来ない箇所をネットや本で調べる.
3. それでも分からなければ,分からない箇所を含む,別のプログラムを組む.
以後解決するまで,これらを繰り返してください.
1つ1つ疑問を突き詰めていけば,理解できます.

シオン

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

#5

投稿記事 by シオン » 6年前

#include<stdio.h>
int main(void)
{
int i;
double ondo[12]={12.1,12.2,15.2,20.3,24.3,28.1,30.6,32.1,27.9,21.3,17.0,13.1};
for(i=1;i<13;i++)
{
printf("%d月:%4.1f\n",i,ondo[i-1]);

return 0;
}

調べて、このプログラムをubuntuで行ったら、
c:9: error: stray ‘\357’ in program
:9: error: stray ‘\275’ in program
:9: error: stray ‘\235’ in program
:11: error: expected declaration or statement at end of input
と表示されました。
どうすればこのエラーを解決できますか?

non
記事: 1097
登録日時: 9年前

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

#6

投稿記事 by non » 6年前

見た目ではまずわかりませんでした。
やむを、得ず、コピペしてコンパイルしたらすぐわかりましたが。
全角文字があります。
non

獅音

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

#7

投稿記事 by 獅音 » 6年前

全角は直したので、実行したんですが、4月ごとに区切る必要があるのと、
温度の合計(平均気温)の変数meanを入れていなかったので、
表示されませんでした。
どこに入れればいいでしょうか?
質問が多くてすみません><

KORYUOH
記事: 44
登録日時: 7年前

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

#8

投稿記事 by KORYUOH » 6年前

合計でしたら配列の中身をすべて足し合わせればいいですよね?
ヒント
今の合計=今までの合計+今の気温

平均を出すにはそれを割ってあげれば・・・
C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。 C++を使えばそのような間違いを犯しにくくなる。しかし、やってしまったときには足全体が無くなる。

獅音

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

#9

投稿記事 by 獅音 » 6年前

mean =ondo[12]+今の気温(?)/2ですよね?
あとは、printf("平均気温:mean =ondo[12]+今の気温(?)/2¥n");
でしょうか?^^;

獅音

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

#10

投稿記事 by 獅音 » 6年前

ここからがどうしても分からないので、スミマセンが答えていただけないでしょうか?
#include<stdio.h>
int main(void)
{
int i;
double ondo[12]={12.1,12.2,15.2,20.3,24.3,28.1,30.6,32.1,27.9,21.3,17.0,13.1};
for(i=1;i<13;i++)
{
printf("%d月:%4.1f\n",i,ondo[i-1]);

return 0;
}

①4月ごとに区切る方法
②平均気温の入力
③meanをどこに入れるか

教えてもらった後で、しっかり復習・理解するので、申し訳ありませんが
教えてもらえないでしょうか。
よろしくお願いします。

box
記事: 1745
登録日時: 9年前

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

#11

投稿記事 by box » 6年前

獅音 さんが書きました:mean =ondo[12]+今の気温(?)/2ですよね?
正しくありません、と申しておきます。
提示されている12個の気温のデータから平均値を『プログラムではなく手で』計算するとき、
質問者さんはどのような手順を踏まれますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#12

投稿記事 by softya(ソフト屋) » 6年前

基本的にヒントでお答えします。
合計を求めるにはforを使います。
①4ヶ月毎に区切るなら4で割った余りが3で区切れば良いと思います。 【追記】これ最初の条件に書いてないけど?
②合計から平均します。
③meanを変数宣言してください。

>教えてもらった後で、しっかり復習・理解するので、申し訳ありませんが教えてもらえないでしょうか。
変数宣言もわからないとすると理解するのは困難だと思いますので、今勉強しましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

獅音

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

#13

投稿記事 by 獅音 » 6年前

12月分の気温を合計して、÷12をします。
どうプログラムで表すか分からないんです・・・。><

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#14

投稿記事 by softya(ソフト屋) » 6年前

獅音 さんが書きました:12月分の気温を合計して、÷12をします。
どうプログラムで表すか分からないんです・・・。><
for文や配列の使い方が分からないと言うことでしょうか?
「配列(array)」
http://www.cc.kyoto-su.ac.jp/~yamada/pr ... array.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

non
記事: 1097
登録日時: 9年前

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

#15

投稿記事 by non » 6年前

non さんが書きました:検索すれば、簡単なサンプルはすぐ見つかりますよ。
http://katahiromz.web.fc2.com/c/array.html
一番最初に、平均を求めるサンプルプログラムを紹介したのに、見てないのですか?
non

獅音

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

#16

投稿記事 by 獅音 » 6年前

すみません。
URLのを参考にして、作成した実行結果が
12月:13.1
平均気温 = 0.000000
になってしまいます。
どこかを変えるのでしょうか?
#include<stdio.h>
int main(void)
{
int i;
double ondo[12]={12.1,12.2,15.2,20.3,24.3,28.1,30.6,32.1,27.9,21.3,17.0,13.1};
double mean;
for(i=1;i<12;i++)
mean= (double)ondo[12]/i ,mean;
{
printf("%d月:%4.1f\n",i,ondo[i-1]);
printf("平均気温 = %f\n",mean);
}
return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#17

投稿記事 by softya(ソフト屋) » 6年前

> mean= (double)ondo[12]/i ,mean;

・この式のカンマ演算子はなんのために使っていますか?
・あと平均の求め方を理解していますか? 日本語で書いてみてください。ondo[12]/iって、その日本語と同じですか?
・ondoはdoubleなのでキャストがいりません。キャストの使い所が違います。
・あとfor文の直後に入っているので、for分の効果範囲がmean= (double)ondo[12]/i ,mean;までと成っています。これは間違いです。

【追記】
・for文のあとは必ず{}にしたほうが初心者は安全です。
・合計を求めるループと表示するループは分けてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1565
登録日時: 6年前

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

#18

投稿記事 by usao » 6年前

ここまでのやりとりを見た感じだと
掲示板でやり取りするよりも「C言語 入門」みたいな類の本なりWebサイトなりを
とりあえず2~3時間程度見てきたほうが早いように見受けます.

>12月分の気温を合計して、÷12をします。
>どうプログラムで表すか分からないんです・・・。><
とりあえず素直に書いたらいいんじゃないですか?
mean = ( ondo[0]+ondo[1]+ondo[2]+...+ondo[11] ) / 12.0;

#失礼な物言いになってしまうかもしれませんが,
 Cでの四則演算の書き方も把握できていない状態なのであれば
 「問題が出されたけどできません」とか人に頼る前に最低限やるべきことがあると思います.

hatuo

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

#19

投稿記事 by hatuo » 6年前

#include<stdio.h>
//#include<stdlib.h>

int main(void)
{
int i;
double ondo[12]={12.1,12.2,15.2,20.3,24.3,28.1,30.6,32.1,27.9,21.3,17.0,13.1};
double mean=0;
for(i=0;i<12;i++){
mean += ondo;
printf("%d月:%4.1f\n",i+1,ondo);
}
printf("平均気温 = %4.1f\n",mean/12);
return 0;
}


ほい、がんばれよ

配列は[0]から入ることと、mean=0;したりすればいいとおもう

アバター
usao
記事: 1565
登録日時: 6年前

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

#20

投稿記事 by usao » 6年前

>printf("平均気温 = %4.1f\n",mean/12);
些細なことですが
>平均気温の表示は、小数点以下2桁とする。
という指定があるようです.

獅音

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

#21

投稿記事 by 獅音 » 6年前

長期放置してしまい、大変申し訳ありませんでした。
一応、訂正して、出力ができたので、載せておきます。

コード:

#include<stdio.h>
int main(void)
{
int i;
double ondo[12]={12.1,12.2,15.2,20.3,24.3,28.1,30.6,32.1,27.9,21.3,17.0,13.1};
for(i=1;i<13;i++)
{
printf("%d月:%4.1f\n",i,ondo[i-1]);
}
return 0;
}
ご迷惑をおかけして、すみませんでした。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#22

投稿記事 by softya(ソフト屋) » 6年前

これ、平均気温が無いんでソースが違うのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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