• ベストアンサー

プログラミングについて!!大至急m。_。m

3つの数字の最大値を求めるプログラミングと配列での平均値をだすやつを授業でやったんですが、 doubleとmaxの根本的違いを教えてください。 お願いします。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.8

doubleというのは、double float型の略のことで、 以下のように使います。 double data1; こうすると、data1の領域に小数点を含む数値を格納できます。 一方 float data2;とすると これもdata2の領域に小数点を含む数値を格納できますが、格納できる数値の範囲が、double型より小さくなります。水割りをダブルで下さいというと、水割りの量が倍になってきますよね。それと一緒ですよ。ダブルは、float型の倍の大きさなんです。 maxというのは、2つの数字の大きい方を取ってくる関数です。 int a= 10; int b= 20; int c;のとき c = max(a,b);とすると 20は10よりおおきいですね。 だからcには大きい方の値の20がセットされます。 maxというのは、「最大」という意味です。 では映画のマッドマックスというとマッドが最大ということかというと、どうもそうではなくて人の名前のようですね。その辺、誤解の無いようにして下さい。

その他の回答 (7)

  • lawson
  • ベストアンサー率44% (29/65)
回答No.7

本気で、分りたいなら、基礎的な入門書から。 やったほうがいいです。 適当にやって単位をとりたいだけなら。 だれかの答案とか編集して、単位とってください。 ↑の質問をしている時点であんまり興味がある とは思えません。 回答する側も回答の余地があまりないです。 よく、ネットの世界では、質問者本人のほうで、 調べたり、努力も せず、一方的に無理な質問ばかりして、 最後に、逆切れしながら、 「これだからオタは~なんだよ」みたい な捨てセリフを残して去っていく人間がしばしば 見受けられます。 はっきり、言って気分悪いです。 mezamasi8さんが必ずしもそうだとは 言いませんが・・・。 質問する以前に自分自身もわかろうとする努力が 欲しいところです。 あと、回答に対するお礼などをできるだけしましょう。 以上です。

mezamasi8
質問者

お礼

すいませんでした。 アドバイスありがとうございました。

  • Soli
  • ベストアンサー率11% (7/61)
回答No.6

一番最初の方が仰っていることが理解できないのならば 質問を改めるべきですね。 「変数と関数の違いってなんですか?」 とか。 「根本的違い」と問われたら「変数と関数」としか答えられませんよ。 相当不親切な先生ならばこういう基礎をすっ飛ばして いきなり解らないこと教えるでしょうけど、 今回のはさすがに貴方の勉強不足でしょう。 質問前に調べました?教科書や参考書に載っていますよ。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

突き放しっぱなしも何なので... doubleは他の回答にもあるように型名であり、キーワードです。longと組み合わせてlong double型になることもあります。 maxはC言語の標準仕様にはありません。 以下はC++の場合です。 std::maxは2つの引数を比較し、大きい方の参照を返す関数、または第1、第2引数を第3引数で指定した関数またはファンクタを用いて比較し、大きい方の参照を返す関数です。 std::numeric_limits<type>::maxは算術型typeの最大値を返す関数です。 処理系によっては独自にmaxという名の関数やマクロ、あるいはその他を定義している可能性がありますが、これらについては処理系を特定しない限り、何ともいえません。 分からないようなら、基礎から勉強しなおしてください。

mezamasi8
質問者

お礼

わざわざありがとうございます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> doubleとmaxの根本的違いを教えてください。 根本的な違いといっても、そもそもが全く違うものです。例えて言うなら「お金」と「電卓」ぐらい違います。こんなに違うものを比較することはできません。

noname#30727
noname#30727
回答No.3

doubleは「型」。maxは「マクロまたは関数」。それが根本的な違いです。 double x = 1.0; double y = 2.0; double z = max(x, y); 上の場合、x, y, z はdouble型の変数です。 zの初期値はmaxによってxとyの大きい方の値、つまり2.0になります。

  • k_riv
  • ベストアンサー率57% (105/183)
回答No.2

//変数は,型の定義をしないと使えません。 //そこで,変数xをダブル型で定義します。 double x; //最大値の計算をするときには, //最大値を計算する関数を呼び出します。 x=max(配列変数); //これは,配列変数を引数にして, //max()関数を呼び出し, //その配列変数の中から最大値を見付けて //戻り値をダブル型の変数xに代入する。 //変数xに最大値が代入される。 //と言う事です。

  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

double :浮動小数点型の宣言 max:  最大値を求める関数(マクロだったっけ)

mezamasi8
質問者

補足

だからどーゆうことなんですか?

関連するQ&A

  • javaプログラミングについて!

    ただいまjavaプログラミングの勉強をしております。 そこで数字を複数回入力させ、-1を入力すると終了し、その数字の最大、最小、平均を出力するプログラムを作っているのですが、 public static void main(String[] args) { int max = 0; int min = 100; int sum = 0; int count = 0; Scanner sc = new Scanner(System.in); System.out.println("正の整数を入力してください"); int n = sc.nextInt(); while (num01 != -1){ System.out.println("正の整数を入力してください"); sum += n; n = sc.nextInt(); count++; if(max < n) max = n; if(min > n) min = n; } System.out.println("入力された整数の最大は" + max); System.out.println("入力された整数の最小は" + min); System.out.println("入力された整数の平均は" + sum/count); } } このようなプログラミングが作れたのですが、たとえば30と10を入力したときに 最大10 最小-1 平均20 と表示されてしまいます。色々試行錯誤してみたのですが、改善されなかったため質問させて頂きました。原因と解決方法を教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • プログラミングが分かりません。

    プログラミングが分かりません。 プログラミングの授業ではなくデータベースデザインの授業をとっていますがプログラミングに関係していると思いこのカテゴリーで質問させてもらいます。 具体的なC言語を使ってプログラミングはしてませんが構造化プログラムについて授業内で勉強しています。そこでこんな問題が出てきました。 一人のユーザーから適当な数を1つずつ与えられて最後に平均を出す(例えば、5,8,2,3,1,1 と数を一つずつ言ってその時の平均の値を求める) BEGIN SUM = COUNT = 0 DOWHILE There are more numbers in the set ACCEPT NUM FROM USER     SUM = SUM + NUM COUNT = COUNT + 1 ENDDO AVG = SUM/COUNT PRODUCE AVG TO USER END コレをヒントに一つ宿題が出されました。       Aさん 6 8 4 Bさん 9 7 6 Cさん 8 8 5 というように一人三種類の数字がありそれぞれA、B、Cさんの合計を出して一番数字が多い人を決める この場合Bさん(合計22) 最初に示したヒントから考えてどのようにすればBさんを答えとして導くことができますでしょうか? 最初に示した感じでどなたか教えていただけますか?よろしくお願いします。具体的なC言語も指定しないと説明しづらいと思いますのでそのときはこのカテゴリーで質問させてもらった通りにVisual Basic で答えて下さってもかまいません。 自分で考えたのも載せますがやっぱり途中で分からなくなってしまいました。 COUNT = 0, MAX = 0, SUM = 0 DOWHILE there are more people DOWHILE there are more numbers in the set  ACCEPT NUM FROM USER  SUM = SUM + NUM  COUNT = COUNT + 1

  • プログラミング 関数の問題について

    どうもお世話になってます。プログラミングの問題ですが問題を見てもよく分らないので答えを教えてください。 double型の数値を引数にして呼び出されたら、それまでに渡された数値の最大値を返す関数 double maxd(double)を完成しなさい。 (1)maxd((2) x) {(3) int i=0; (4)double max; if((5)){ (6); (7); }else if((8))(9); return((10)); } 知り合いに聞いてみたところ (1)double(2)double(3)static(4)static(5)i=0(7)max = x(8)max < x(9)max = x(10)max と言われて説明してもらったのですが、説明してもらってもよく分りませんでした・・・。(そもそもプログラミング分かってないのですが・・・。) 答えだけ聞くのは本末転倒なのですが、上の答えで合っているのでしょうか?もし違っていたら申し訳ないですが正しい答えを教えてください。よろしくお願いします。

  • Javaプログラミングの配列について

    ・前と同じような質問になってしまうのですが… 下のプログラミングで配列の最大値を求める場合のアルゴリズムは少し わかるのですが… それをJavaプログラミングで表記することができません! 下の場合の配列の最大値を求めるJavaプログラミングの表記方法を教えてください。 public class PrintMaxData{ public static void main(String[] args){ int[] numberDate={15,46,88,56,17,93,22,75,58,77}; //配列中の最大値を求める //出力 System.out.println("最大値は"+maxData+"です。"); } }

  • プログラミング

    c言語プログラミングについて教えてください。 2次元配列で以下の様に数字の昇順(渦巻き状に)にアクセスするにはどうしたらいいでしょうか? 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

  • プログラミングについて質問です。

    キーボードから配列に代入された10個の実数データの平均,最大値,最小値を求め,表示するソースプログラムを作成したいです.また、平均値,最大値,最小値はそれぞれを計算する関数を作り,求めたいです。 このプログラムをわかりやすいように簡単なコードで作ってくれませんか?

  • プログラミング 問題 java

    大学のプログラミングの授業でjavaを勉強しています。 先週課題が出たのですが書き方がわかりません。 4×4の形の二次元配列Aの内容を準備し、同じく4×4の形の二次元配列Bに、下図のように90度回転するようにして移すプログラミングを作るという問題です。 わかる方いたら回答お願いします(>_<)

  • プログラミングの乱数

    c言語、c++の乱数rand()の使い方がよくわかりません。わかりやすい説明をお願いします。 あと、プログラミングが得意な方にお願いです。 [0,1]乱数で平均と分散を求めるプログラムを配列なしで作ってください。

  • C言語から質問です。

    C言語から質問です。 /* main関数の中で初期化した配列 data[10]={60,30,70,25,20,9,92,55,20,10}; を関数 keisan() に引数として渡して、関数keisan()内で 平均値、最大値,最小値 を求め、その結果をmain関数に戻し、main関数内で 平均値、最大値,最小値を表示させるプログラムを作成せよ。 int keisan(const int data[], int data_kosuu, double answer[]) { return 0; } とする。 (注) プロトタイプ宣言を用いよ。 ヒント:平均値,最大値,最小値の3つの値を main関数に戻すやり方として、配列answer[]を使うとよい。 data_kosuu は、配列の要素数を与えるものです。 ヒント: (int型の変数)/(int型の変数)=int型の値です。 int型同士の割り算の答えANSWERをdoubleにしたい場合は、  ANSWER=(double)(int型の変数)/(int型の変数);    と(double) キャストという操作をする必要がある */ #include <stdio.h> int keisan(const int data[], int data_kosuu, double answer[]); int main(void) { int i; int a[10]={60,30,70,25,20,9,92,55,20,10}; // この値を使ってください double ans[3]; keisan(a,10); /* keisan関数に配列と配列要素数を引数で与える */ for(i=0; i<10 ; i++) printf("a[%d]=%d\n",i,a[i]); printf("平均=%lf 最小値=%d 最大値=%d\n",ans[0],ans[1],ans[2]); return 0; } /* 合計・最大値・最小値を求める関数 */ int keisan(const int data[], int data_kosuu, double answer[]) { int i; int sum; int min,max; min=10; /* min の初期化 */ max=10; /* max の初期化 */ sum=0; /* 合計値の初期化 */ for (i=0; i<10 ; i++){ sum = sum+data[i]; if(data[i] > max) max=data[i]; if(data[i] < min) min=data[i]; } sum=sum/10; answer[0]=sum; answer[1]=min; answer[2]=max; } エラー error C2198: 'keisan' : 呼び出しに対する引数が少なすぎます。 とでて先に進めません。 教科書などを見ても間違いがわかりません; 虫食いになってるところを自分なりにやってみたため、 根本的に間違ってるかもしれませんが、 どうかアドバイスや指摘などをお願いします。

  • awkを使いプログラミングを始めたばかりの初心者です。

    プログラミングを始めたばかりの初心者です。 awkを使い以下のような値の平均値、最大値を表示する プログラム作りたいのですがうまくいきません。 値1   値2   値3 2546 2543 6535 5345 6355 3547 32 43 44 23547 57625 66426 出力イメージは以下のような感じです。     値1    値2   値3 平均  ****   ****   **** 最大値 ****   ****   ****

専門家に質問してみよう