出産前後の痔にはご注意!

#include <stdio.h>
int main() {

int array[10] = { 8, 6, 4, 2, 0, 9, 7, 5, 3, 1 };


int small = array[0];
for (int i = 1; i < 10; i++) {
if (small < array[i]) {
small = array[i];

}
}

printf("%d\n", small);





return 0;
}
は最小値を求めるはすが、最大値を求めるプログラムになります。
何がいけないのでしょうか?
ある方からif (small < array[i]) {
は、
if (small > array[i]) {
の間違えです。
と言われのですが、なぜsmall>で最小値が求まるのでしょうか?

A 回答 (4件)

>なぜsmall>で最小値が求まるのでしょうか?



目で見た印象の問題かもしれませんね。

if (array[i] < small)

こう書いてみるとわかりやすいのではないでしょうか?
「もし、今比較しようとしているarray[i]の値が、これまで見つけた最小値smallよりも小さいならば」
という意味に理解しやすくなります。

2値の大小関係だけの問題であるととらえる以前に、書いてある文字を左から読んだ印象から誤解も恐れず読み取ろうとする人であれば、こういった書き方をする方がわかりやすくなる場合があります。
    • good
    • 1

>なぜsmall>で最小値が求まるのでしょうか?


ノートを用意して
そこには int small 、int i の値を書きながら、質問者さんが
 人間コンピュータになってプログラムを実行
すればすぐにわかりますよ

はじめは、 small = array[0]; 
 なので、int small に値8を書き込みます
つぎにfor (int i = 1; i < 10; i++) {
 なので、 int i に値1を書き込みます
  :
    • good
    • 0

> なぜsmall>で最小値が求まるのでしょうか?



小さいものを選んで変数smallに保存しているからです。

> if (small < array[i]) { small = array[i];

と、大きい方を選んでいたら、変数名がsmallであろうと、最大値が求まります。
    • good
    • 2

if (small < array[i]) { smallよりもarray[i]が"大きければ"


 small = array[i];  smallにarray[i]を代入
}

if (small > array[i]) { smallよりもarray[i]が"小さければ"
 small = array[i];  smallにarray[i]を代入
}

違いが分かりますか?
    • good
    • 0
この回答へのお礼

えと、後者のプログラムが正しいと思います。

お礼日時:2019/08/25 15:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング