ページ 1 / 1
宿題をやっておりまして・・・・・。
Posted: 2008年12月31日(水) 23:48
by 孫
はじめまして、孫です。
宿題のことで分からないところが出てきてしまって、
途中までやって見たのですが、先生の話が飛びすぎてて、まだわからないところが出てしまい、
知ってる物の中で頑張ってはいるのですが、やはりわからなくてみなさんに、
力を貸していただこうと、来たわけです。
その宿題がこれです。
入力された2つの実数を比較し、大きい値を返す関数(関数名 fmax)を使ったプログラムを作成しなさい。
#include<stdio.h>
①_______ fmax(②_______,③_______);
void main(void)
{
double a,b,max;
printf("2つの実数を入力してください");
scanf("④_______",⑤_______,⑥_______);
max=fmax(⑦_______,⑧_______);
printf(" %fのほうが大きい。\n",⑨_______);
}
double fmax(⑩_______ x,⑪_______ y);
{
double z;
if(⑫_______){
⑬_______;
}
else
⑭_______;
⑮_______ z;
}
①void ②double
③double ④%f,%f
⑤&a ⑥&b
⑦a ⑧b
⑨max ⑩double
⑪double ⑫max<z
⑬max=max+z ⑭?????
⑮return
①~⑨はこれでいいと思うのですが、⑩~⑮があまりに分からないので、
分からないなりに描いてみたのですが、どうでしょうか。
どうかお力を貸していただけないでしょうか。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 00:33
by lbfuvab
すいませんが
double fmax(⑩_______ x,⑪_______ y);
{
double z;
if(⑫_______){
⑬_______;
}
else
⑭_______;
⑮_______ z;
}
このあたり打ち間違えてますよね。多分。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:00
by 孫
double(⑩_______ x,⑪_______ y);
ではなく
double(⑩_______ x,⑪_______y)
でしたすいません。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:06
by SCI
①から順番に見直してみた方がよさそうです。
宿題ということなので、あえて答えは書きませんが・・・
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:15
by 孫
そうですか。最初っからですか。
自分の宿題なんで、
一から頑張ります
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:19
by box
>①_______ fmax(②_______,③_______);
このプロトタイプ宣言と
>double(⑩_______ x,⑪_______y)
この実体定義において、関数名、戻り値の型、全引数の型が
一致している必要があります。よって、
>①void
これは正しくありません。
>④%f,%f
double型の入力を受け取る書式文字列は、%fではありません。
似てますけれど。
>⑫max<z
>⑬max=max+z
fmax関数では、maxという変数は定義していません。
引数で受け取ったx, yの大小を比べて、大きい方をzに代入してください。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:20
by SCI
ヒントとかなら(笑)
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:24
by 木霊
まだ見てますかね?
関数部分のヒント。
とりあえず、今のままでは関数fmaxが2種類あることになります。・・・1番
そして、その関数fmax内にはmaxという変数は存在していません。・・・12、13番
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:47
by kazuoni
・プロトタイプ宣言(関数原型宣言)
・有効範囲
などをググると参考になるかと思います。
今は条件演算子なんて流行ではないのですかね^^;
自分たちの大学では特別授業で扱いませんでしたが。
あ、明けましておめでとうございます。
今年もよろしくお願いします。
管理人さんの安否が心配です・・・。
ページ更新してる場合じゃ・・・^^;
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:50
by SCI
> 今は条件演算子なんて流行ではないのですかね^^;
三項演算子のことですか?あれは賛否両論ですよね。
ところでスレ主さん
ちょっと添付ファイルを見てくださいな
べ、別に私はツンデr(ry
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:54
by Dixq (管理人)
あけましておめでとうございます^^
>kazuoniさん
ご心配おかけしました,生きておりますw
>孫さん
コンパイラはパソコンに入っていますか?
宿題を紙の上だけで解こうとしていませんか?
わからないことがあればとにかくプログラムを実行させてみることです!
また,とけそうにない問題も少しずつ分解してとくことで解ける事が多いです。
変数の中身を表示するプログラム
さらにキーボードから変数の中身を入力させるプログラム
さらにこれらの変数の大小を比較するプログラム
さらに大小を比較する部分を関数分けして書いたプログラム
そんな感じで少しずつ作っていけば作れると思います。
とりあえず,宿題の事はおいておいて,
「入力された2つの実数を比較し、大きい値を表示するプログラム」を作ってみてはどうでしょう?
できたら,答えにあうようにプログラムを変形してはどうでしょう?
その方がより解りやすいのではないかと思います。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 01:59
by 孫
①dounle ②double
③double ④%lf,%lf
⑤&a ⑥&b
⑦a ⑧b
⑨max ⑩double
⑪double ⑫x<y
⑬z=y ⑭z=x
⑮return
でどうでしょうか。
多分⑩⑪のところは先生の印刷ミスだと思います。
なので
double(⑩_______ a,⑪_______ b)
{
double z;
if(⑫_______){
⑬_______;
else
⑭_______;
⑮_______ z;
}
こういうことだと思います。
また指摘してくれると助かります。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 02:06
by SCI
解答は合ってます。
が、コードが間違っています。おそらく印刷ミスはないので、先生を信用しましょう。
(最初の「セミコロン」はタイプミスでしょう)
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 02:10
by Dixq (管理人)
あ,先に答えおわかりになったのですね。素晴らしいです。
しかし答えはあっているようですが,括弧の対応がちょっとおかしいです。
これ手打ちでしょうか?
コンパイルしてみました?
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 02:16
by 孫
いえ。
うちには、コンパイラが入っていないので、
でも、xがaの代わりになるんですね。
学校では、同じ文字を使っていたんで、こんな方法があることを知りませんでした。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 02:21
by Dixq (管理人)
紙の上じゃ,プログラムの勉強は難しいです。
プログラムの勉強の第一歩は自分のPCにコンパイラを入れることなので,
是非次の課題の時はコンパイルしてみてください。
http://www.microsoft.com/japan/msdn/vst ... fault.aspx
(VC++2008)
フリーで手に入ります。
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 02:25
by kazuoni
代わり・・・なんだか微妙なニュアンスですが^^;
もう少し関数について勉強されたほうが良いかもしれませんね。
>(ry
(ryって(ryakuの略だったんですね。
最近こういうのについていけませんw
orzも「オーズ」なんて読んで意味も理解してませんでしたorz
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 12:04
by たかぎ
> 入力された2つの実数を比較し、大きい値を返す関数(関数名 fmax)を使ったプログラムを作成しなさい。
標準関数にも、同名、同機能の関数が存在しますが、それを自分で実装しようということでしょうか?
Re:宿題をやっておりまして・・・・・。
Posted: 2009年1月01日(木) 13:52
by non
たかぎさんへ
> 標準関数にも、同名、同機能の関数が存在しますが
いつのまにか、標準関数になっているのですね。知らなかった。
課題を出した先生もきっと知らなかったというのが答えでしょう。
孫さんへ
単純な入力ミスです。
>①dounle
間違ってはいませんが、合っていると断定もできません。課題では不明なので。
>④%lf,%lf