複数の引数について
Re: 複数の引数について
返答する前に、まず質問させてください。
OPさんは何をされたいんでしょう?
どういう結果を望んでいるのでしょうか?
OPさんは何をされたいんでしょう?
どういう結果を望んでいるのでしょうか?
Re: 複数の引数について
引数がどのように入っているのかがわからないのでしょうか…
計算そのものがわからないのでしょうか…
なぜ数値が出力(表示)されるかがわからないのでしょうか…
上記のどれがわかりませんか?
[追記]
sum関数が何を行っている関数かわからないという意味ならば
min~maxまでの和を求める関数ですね
計算そのものがわからないのでしょうか…
なぜ数値が出力(表示)されるかがわからないのでしょうか…
上記のどれがわかりませんか?
#include <stdio.h>
int sum(int,int);
int main(void)
{
sum(50,100); // ←ここで第1引数に50、第2引数に100を入力
return 0;
}
// mainで呼び出す際にsum(50, 100)としているので
// min = 50, max = 100が入る
int sum(int min,int max)
{
printf("%d\n",(min + max) * (max - min + 1) / 2);
// (50+100)×(100-50+1)÷2=150×51÷2=3825
// "%d\n"←符号付10進数+改行
return 0;
}
sum関数が何を行っている関数かわからないという意味ならば
min~maxまでの和を求める関数ですね
最後に編集したユーザー 沖 滉均 on 2011年8月31日(水) 16:46 [ 編集 1 回目 ]
Re: 複数の引数について
多分、
min + (min+1) + (min+2) + ・・・・・ + (max-1) + max
を求めてます。
50 + 51 + 52 + ・・・・・ + 99 + 100 = 3825
になります。
min + (min+1) + (min+2) + ・・・・・ + (max-1) + max
を求めてます。
50 + 51 + 52 + ・・・・・ + 99 + 100 = 3825
になります。
Re: 複数の引数について
書き込んでいくらなんでもこれはないだろうと思って調べてみたら
http://homepage3.nifty.com/mmgames/c_guide/11-02.html
に同じコードがのっていました。
http://homepage3.nifty.com/mmgames/c_guide/11-02.html
に同じコードがのっていました。
Re: 複数の引数について
解決にチェックされていますが、ちょっと待ってください。
そもそも、疑問点がよくわかりません。
今回に限らず、本当に理解できたのだろうか?
と心配になります
元の疑問点(わからないこと)について、どのように解決したのかを書くようにしていただけないでしょうか?
そもそも、疑問点がよくわかりません。
最初の質問に書かれたコードの時点で3825になっています。OP さんが書きました:3825になりました!!minとmaxの代入を間違ってたみたいです!!
今回に限らず、本当に理解できたのだろうか?
と心配になります
元の疑問点(わからないこと)について、どのように解決したのかを書くようにしていただけないでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数の引数について
私もOPさんは中途半端な理解のまま進んでいる気がしていたので、ちゃんと説明するクセを付けたほうが良いと思います。
出来るだけ最初の状況と解決に至った状況を細かく説明してみてください。
出来るだけ最初の状況と解決に至った状況を細かく説明してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数の引数について
ここで分からないポイントは、OPさんにとって何なのかを説明してください。
あと何が分かったんでしょうか? 分かったというのは他の人に説明できる状態のことを言います。今その状態ですか?
それと前に提案した日本語に書き換える法は実践していないのですか?その形で書いてもらってもかまいませんよ。
あと何が分かったんでしょうか? 分かったというのは他の人に説明できる状態のことを言います。今その状態ですか?
それと前に提案した日本語に書き換える法は実践していないのですか?その形で書いてもらってもかまいませんよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 複数の引数について
先ほどあげた内容ですが、この質問には答えられますか?沖 滉均 さんが書きました:引数がどのように入っているのかがわからないのでしょうか…
計算そのものがわからないのでしょうか…
なぜ数値が出力(表示)されるかがわからないのでしょうか…
上記のどれがわかりませんか?
四則演算の順序がわからないですとか、+-*/などの記号の意味が分からないですとか色々ありますよね
Re: 複数の引数について
代入しているわけではありません。OP さんが書きました:sumがminとmaxに代入しているのかどうかわからなかったんだと、思います。
「また、わからなかったんだと思います」ということは「何がわからなかったのかわかりません」ということでしょうか?
また、こちらについても説明してみてください。softya(ソフト屋) さんが書きました:最初の状況と解決に至った状況を細かく説明してみてください
現状は解決に至った状況は何も書かれていません。
Re: 複数の引数について
う~ん・・・まずいまだにわからないことを説明したいと思います。
こんなところでしょうか。ちょっとわからないところはありますが・・・・。
#include <stdio.h> //ここは<stdio.h>を含むということでしょうか。
int sum(int,int); //わかりません…
int main(void) //わかりません…
{
sum(50,100); min,maxに50と100を渡している二でしょうか?
return 0;
}
int sum(int min,int max) //minとmaxを使いますよーという宣言でしょうか?
{
printf("%d\n",(min + max) * (max - min + 1) / 2); //文字列を表示 ここはちゃんと計算できました。
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数の引数について
つまり、分かったという話は計算が分かったと言うことでしょうか?
あと分からないと書かれていることは1章と11章に全て書かれています。
もう一度読みなおして日本語化を丁寧にやってみてください。
説明済みの部分も説明がすごく不足しています。
例えば
//minとmaxを使いますよーという宣言でしょうか?
型はなんでしょうか?
普通の変数宣言となにが違うのでしょうか?
あるいは、
sum(50,100); min,maxに50と100を渡している二でしょうか?
sumについての説明は?
もし、int sum(int min,int max)がint sum(int max,int min)ならどうなりますか?
あと分からないと書かれていることは1章と11章に全て書かれています。
もう一度読みなおして日本語化を丁寧にやってみてください。
説明済みの部分も説明がすごく不足しています。
例えば
//minとmaxを使いますよーという宣言でしょうか?
型はなんでしょうか?
普通の変数宣言となにが違うのでしょうか?
あるいは、
sum(50,100); min,maxに50と100を渡している二でしょうか?
sumについての説明は?
もし、int sum(int min,int max)がint sum(int max,int min)ならどうなりますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数の引数について
いえ、全然違います。
その上説明が消えている所があります。
その上説明が消えている所があります。
#include <stdio.h> ←説明がありません。
int sum(int,int); //sum関数のint型の変数intに数値を格納 ←プロトタイプ宣言に関する説明を確認。
int main(void) ←1章を確認。
{
sum(50,100); //後のminとmaxに50と100を代入 ← かなり説明不足です。
return 0;
}
int sum(int min,int max) //後の計算にminとmaxを使うということを宣言 ← 説明に成っていません。あと私の書いた「たとえば」、「あるいは」の答えがありません。
{
printf("%d\n",(min + max) * (max - min + 1) / 2); //ここは普通に計算、3825に ← 計算順番についてもっと説明してください。printfについても書いてください。
return 0;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 複数の引数について
次の質問を書かれていますが、ここはこのままで良いのでしょうか?
softyaさんの最後の質問にも答えておりませんね。
それとも諦めてしまったのですか?
早く先に進みたいのはわからなくもありません
そして、しつこく説明してくださいと言われるのも気持ちの良いものではないでしょう
ですが、質問する→なんか解決したと思う→次やってみよう
これではいつまで経ってもOPさんがCを覚えることはできません
softyaさんの最後の質問にも答えておりませんね。
この答えは出たのでしょうか?OP さんが書きました:私はまだ質問するにまでも知識が達していなかったみたいです…。
みなさんの返信をもとにもう少しsum関数やmain関数を調べてこようと思います。
それとも諦めてしまったのですか?
早く先に進みたいのはわからなくもありません
そして、しつこく説明してくださいと言われるのも気持ちの良いものではないでしょう
ですが、質問する→なんか解決したと思う→次やってみよう
これではいつまで経ってもOPさんがCを覚えることはできません
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 複数の引数について
int sum(int,int);
で書いている説明が逆です。
これはプロトタイプ宣言と言って、こういう関数がプログラム内にありますよーという宣言です。
実際に定義しているのは
int sum(int min,int max)
からの部分ですね。
これはmain関数よりsum関数が下にあるから必要になる物です。
sum関数とmain関数を逆に書いてみて下さい。プロトタイプ宣言は必要ありません。
また、必要無くてもあって差支えないものなので、このファイルにはこんな関数がありますよ、ということを示すためにプロトタイプ宣言をまとめて最初に書いたりします。
そして「sum関数のint型の変数intに数値を格納」となっていますが、intは予約語なので、変数名に使えません。
int, intなのですから、カンマがついており、意味が区切られています。変数名が省略してあるだけで、int型の変数が存在するということを示しています。
#include <stdio.h>
の説明は今の時点では難しいようなので、「C言語の書き初めに書くおまじない」位の解釈でも良いと思いますが、
他の基本的なことは、沖さん達も言っているようにきちんと一つ一つ確実に抑えて行かないと、この先ずっと困る事になってしまいます。
頑張って分からないことをつぶしていきましょう。
で書いている説明が逆です。
これはプロトタイプ宣言と言って、こういう関数がプログラム内にありますよーという宣言です。
実際に定義しているのは
int sum(int min,int max)
からの部分ですね。
これはmain関数よりsum関数が下にあるから必要になる物です。
sum関数とmain関数を逆に書いてみて下さい。プロトタイプ宣言は必要ありません。
また、必要無くてもあって差支えないものなので、このファイルにはこんな関数がありますよ、ということを示すためにプロトタイプ宣言をまとめて最初に書いたりします。
そして「sum関数のint型の変数intに数値を格納」となっていますが、intは予約語なので、変数名に使えません。
int, intなのですから、カンマがついており、意味が区切られています。変数名が省略してあるだけで、int型の変数が存在するということを示しています。
#include <stdio.h>
の説明は今の時点では難しいようなので、「C言語の書き初めに書くおまじない」位の解釈でも良いと思いますが、
他の基本的なことは、沖さん達も言っているようにきちんと一つ一つ確実に抑えて行かないと、この先ずっと困る事になってしまいます。
頑張って分からないことをつぶしていきましょう。