Найти минимальный элемент массива

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 28 июн 2020 в 22:49.

  1. Yerabdi

    Yerabdi Гик

    • 5.10. Запрещено публиковать исходный код без BB-кода — CODE.
    Добрый день всем, самая простая задача но никак не получается определить самый минимальный элемент массива
    int arr[]={12, 15, 5, 6, 7};
    int arrMinVal,d,c;
    arrMinVal=arr[0];
    for(int i=0; i<sizeof(arr)/sizeof(int); i++)
    {
    if(arr< arrMinVal)
    {
    arrMinVal = arr;
    c=d;//минимальный ячейка массива
    }
    d++;
    }
    }
     
  2. b707

    b707 Гуру

    что такое d и нафига оно нужно. если у вас есть i ?


    если не ошибаюсь, этот код вам дали в этом форуме полгода назад. Что, полгода не хватило разобраться в 10 строчках7
     
    Последнее редактирование: 28 июн 2020 в 23:26
    Vovka и BAR__MEN нравится это.
  3. Yerabdi

    Yerabdi Гик

    Спасибо решил задачу нужно поставить знак <=
     
  4. Asper Daffy

    Asper Daffy Иксперд

    [​IMG]
     
    SergeiL и Vitaliy.20 нравится это.
  5. Vitaliy.20

    Vitaliy.20 Нуб

    1. Нужно сравнивать не указатель на начало массива (arr), а текущий элемент массива:
    Код (C++):
    if(arr[i] < arrMinVal)
    2. Переменная «d» не значит ничего, потому что ничем не инициализирована, может быть любым значением в процессе выполнения программы.
    3. Переменаня «с» НЕ содержит минимальное значение (по комментарию)
    Код (C++):
    c=d; //минимальный ячейка массива
    Если бы у «d» было бы корректное значение, то «c» содержала бы индекс элемента с минимальным значнием, но для этого можно использовать обычный индекс «i», как указал @b707.
    4. А в рамках какой задачи необходимо находить минимальный элемент?
     
  6. Yerabdi

    Yerabdi Гик

    Добрый день, значение в ячейках массива постоянно меняется минимальное значение может оказаться в 0 - ячейке массива вот по этому поставил
    знак <=
     
  7. Yerabdi

    Yerabdi Гик

    Код (C++):
    min=map_ar[0];
      ch=0;
      for (int z=0;z<5;z++)
      {
         if (map_ar[z] <= min)
           {
             min=map_ar[z];
             ch=z;  
            }

      }
     
  8. Kakmyc

    Kakmyc Нерд

    Код (C++):

    int my_arr[5]={1,2,3,4,5};

    int min_arr(int arr[]){
        int val=arr[0];
        for(int i=1;i<sizeof(arr)/sizeof(arr[0]);i++){
            if(val<arr[i])val=arr[i];
        }
        return val;
    }

    void setup(){
      Serial.begin(9600)  ;
         int val=min_arr(my_arr);
        Serial.print(val);
    }

    void loop(){    
    }
     
    Последнее редактирование: 30 июн 2020 в 18:58
  9. Kakmyc

    Kakmyc Нерд

    Или так:
    Код (C++):

    int my_arr[5]={1,2,3,4,5};

    int min_arr(int *arr,int size){
        int val=arr[0];
        for(int i=1;i<size;i++){
            if(val<arr[i])val=arr[i];
        }
        return val;
    }

    void setup(){
      Serial.begin(9600)  ;
         int val=min_arr(my_arr,sizeof(my_arr)/sizeof(my_arr[0]));
        Serial.print(val);
    }

    void loop(){    
    }