• 締切済み

pascal言語

pascal言語のプログラミングについて質問があります。 repeat文やwhile文を用いて数値を入力するとき、その文の中で入力された数値を比較して最大値や最小値を出す方法が分かりません。数値の比較ですと配列以外に思い浮かばないのですが、配列を用いない場合どのようにすれば良いのでしょうか? よろしくお願いします。

  • diva7
  • お礼率33% (3/9)

みんなの回答

noname#194317
noname#194317
回答No.1

今ひとつ、何がやりたいのかが伝わってこないんですが、最大最小が解ればいいんだったら、変数を二つ用意して(nmax,nminとでもしますか)、これをゼロで初期化しておきます。そしてループの中で入力された数値と、nmax,nminを比較し、nmaxより大きければnmaxを更新、nminより小さければnminを更新します。これでループを抜けた時には、この二つの変数に最大値と最小値が入っています。 入力される数値の範囲が解らない場合は、ゼロで初期化しただけだとまずいです。なぜかと言うと、もし1~9が入力されたら、欲しい最小値は1ですが、ゼロで初期化するとゼロの方が小さいため、最小値がゼロにされてしまうからです。また、入力値が全部マイナスの場合、今度は最大値で同様の問題を起こします。なので、ループの一回目だけは無条件にnmax,nminに入力された値をセットする方が安全でしょう。

関連するQ&A

  • pascal言語

    pascal言語のことで質問があります。 いくつかの整数を入力した際に、その数字が入力された 回数を記憶しておくプログラムを書きたいのですが、全く分かりません。配列を使えばいいのでしょうか? 教えてください。

  • pascal

    pascalのプログラミングの質問なんですが・・・ 何個かの点数のデータをもらって、その平均、総和、最大値、最小値、標準偏差を計算するプログラムを教えてください。お願いします。

  • pascal言語

    最大 20個までの正の実数値を入力する。 入力値の個数が 20個未満の場合は 0 を入力することで入力完了を指示する。 数値入力が完了したら、 「 average 」または「 domain 」の文字列を入力して、 出力結果の種別を指示する。 ここでaverage は入力値の平均を求めること、 domain は入力値が取った範囲を求めることの指示とする。なお、種別選択指示を受ける文字列変数の最大長は 10文字とすること。 この問題で{数値入力が完了したら、 「 average 」または「 domain 」の文字列を入力して、 出力結果の種別を指示する。}と {種別選択指示を受ける文字列変数の最大長は 10文字とすること。} の問題の意味がわかりません。 「 average 」または「 domain 」の文字列つまり、average : packed array [1 .. 20] of real;というふうにしなさいと言うことですか?また、入力値が取った範囲を最大値・最小値もしくは、比較 (値の交換swap)で範囲を出力したら、この問題の答えとして間違っていますか? 誰かこの問題を初心者でもわかるように解説してくれませんか。お願いします。

  • C言語 最大値と最小値を求めて表示するプログラム

    はじめまして。 C言語を学習中です。 下記の問題演習の解答として記載されているプログラムがどうしても理解できません。 特にプログラムの最後の方のwhile文で最大値と最小値の判定をしているのかと思いますが、どのような計算をして判定しているのでしょうか。 while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; 具体的に教えてください。 よろしくお願い致します。 ●問題 0~100の範囲で入力された複数の数値の中から、 最大値と最小値を求めて表示するプログラムを作成せよ。 -1が入力された場合は入力の終わりと判定する。 ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。 また、入力された数値を記憶する配列の要素数は10とし、 それ以上入力された場合はエラーが起きても仕方ないこととする。 ヒント:配列の中に -1 があればデータの終わりだと判断できる。 ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。 ●解答 #include <stdio.h> void maxmin(int array[],int *max,int *min); int main(void) { int i = 0,array[10],max,min; do { printf("%d 番目の数:",i + 1); scanf("%d",&array[i]); i++; } while (array[i - 1] != -1); maxmin(array,&max,&min); printf("最大値 %d : 最小値 %d\n",max,min); return 0; } void maxmin(int array[],int *max,int *min) { int i = 0; *max = 0; *min = 100; while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; } }

  • C言語

    C言語 10進数n(0<n<256)を2進に変換させろ 配列を使うな do-whileでnを入力させることはできましたが、そこから先がわかりません。 for文を使えと言われたのですが……

  • c言語プログラミングでの質問?です。

    学校でc言語プログラミングを使って簡単なゲームを作りなさい。 という課題が出ました。 下記の条件に沿って作れとのことです。 なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね? ・scanf文を使うこと。。 ・if文を使うこと。 ・for文(while文)を使うこと。 ・rand関数を使うこと。 ・自分で定義した関数を使うこと。 ・配列または文字列を使うこと。

  • 配列を用いない最大値の求め方

    今回は配列なしで最大値を求める方法をおしえてください。もちろんfor文やwhile文の中でいろいろするのでしょうが。自分的にはどうしても、たとえばn:0~100、n=0のときにf=0となり、、n=1のときにf=5, n=2のときにf=2・・・となるようなかんすうがあるとして、for文やWhile文でどうやって最大値を新しく出てきたfの値と取り替えればいいのか、また取り替えずにそのままにしておく、すなわち判定条件のプログラミングの仕方がいまいちわかりません。どうか初心者なので丁寧に教えてください。

  • 非常に

    C言語の問題集の回答がないので困っているので誰か教えてください。 私はまだ始めたばかりなので手におえません。 今私が理解しているif文、switch文、for文、while文、do-while文、配列、を 使用してでお願いします。 「カプレカの定理」をプログラムを使って考察しなさい. 今回は4桁の場合のプログラムを作成しばさい. プログラムの仕様は以下のものとする. 4桁の入力がなされるまで,do-while文を用いてscanfを繰り返す. int型の配列 digit[4] を用意し,それぞれに1~1000の位を割り当てる. 桁の分割方法は各自考えよ. (例) 3175 digit[0] = 3 digit[1] = 1 digit[2] = 7 digit[3] = 5 配列 digit をバブルソートを用い昇順または降順に並べ,それを基に 最大の4桁と最小の4桁を算出する 実行結果例 Input -> 123 Input -> 12345 Input -> 1234 (*4桁の数が入力されるまで繰り返している。この括弧内は説明なので表示させる必要はない) 4321 - 1234 = 3087 8730 - 378 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174

  • C言語のプログラミングのある問題について・・・?

     私は、ある大学に通う二年生です。実は、授業でC言語のプログラミングの授業があるのですが、includeとか、for文とか、とにかくそこに出てくる用語も全然と言っても良いぐらい分からないし、それにその科目を教えている先生から課題が出されました。  その課題というのは、以下の問題です。誰か僕に力をください。  お願いします。   問    正の整数1から10までの範囲でパスカルの三角形を画面上に出力するプログラムを作り、さらにその三角形をもう一つ組み合わせてひし形を作り、ひし形が出力できるように補修せよ。  (注)「使用できる配列は、1次元に限る」という条件を守って作ること。

  • C言語プログラミング

    あなたは何歳ですか。 (数値を入力) 10年後は○○歳ですね。 と表示されるプログラミングをお願いします。C言語でお願いします

専門家に質問してみよう