0 / 0 / 0 Регистрация: 11.10.2012 Сообщений: 31 |
|
1 |
|
11.10.2012, 12:36. Показов 1453. Ответов 2
1.Найдите сумму положительных элементов массива,значения которых меньше 8
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
11.10.2012, 12:36 |
Ответы с готовыми решениями: Найти сумму положительных элементов массива, значения которых меньше 10 Найти сумму положительных элементов массива, значения которых меньше 10 Найти сумму элементов массива, стоящих на четных местах. Подсчитать количество элементов, значения которых меньше 1 Найти сумму положительных элементов массива, значения которых четные 2 |
Valery__ 233 / 223 / 146 Регистрация: 19.03.2012 Сообщений: 369 |
||||
11.10.2012, 13:56 |
2 |
|||
Сообщение было отмечено Памирыч как решение Решение
1 |
0 / 0 / 0 Регистрация: 11.10.2012 Сообщений: 31 |
|
11.10.2012, 14:31 [ТС] |
3 |
Спасибо!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
11.10.2012, 14:31 |
3 |
Формулировка задачи:
1.Найдите сумму положительных элементов массива,значения которых меньше 8
Код к задаче: «Найти сумму положительных элементов массива, значения которых меньше 8»
textual
Program sum_arry; Const n=5; Type mas = array[1..n] of real; Var a:mas; i:integer; sum:real; BEGIN Writeln ('Vvedite masiv chisel '); sum:=0; for i:=1 to n do begin write ('a[',i,']'); Readln (a[i]); if (a[i]>0) AND (a[i]<8) then sum:= sum + a[i]; end; Write ('Summa = ',sum); END.
Полезно ли:
8 голосов , оценка 3.875 из 5
В этой статье рассмотрены два способа нахождения минимального (максимального) элемента массива, а также задачи с применением этих способов.
1 способ
Задача 1: Дан одномерный массив, состоящий из n целых чисел. Найти минимальный элемент массива. В первой строке вводится количество чисел в массиве n. Затем выводятся сами числа, заданные случайным образом. В третьей строке выводится результат: минимальный элемент массива. | |
Исходные данные: |
Результат: |
10 |
-4 |
10 |
0 |
Считаем, что первый элемент массива – минимальный. Затем, сравниваем, начиная со второго до последнего все элементы массива с минимальным. Используем для этого цикл. Если очередной элемент на каком-то шаге цикла оказывается меньше минимального, то значение минимального изменяем, присвоив ему значение этого очередного элемента. По окончании цикла выводим результат: минимальный элемент.
program min1;
var a:array[1..100] of integer;
i,min,n:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-100,100);
write(a[i],’ ‘);
end;
//нахождение минимального элемента массива
min:=a[1];
for i:=2 to n do
if min>=a[i] then min:=a[i];
//вывод результата
writeln;
write(min);
end.
Заметим, что для нахождения максимального элемента массива достаточно заменить имя переменной min на max и знак >= на знак <=.
Задача 2: Дан одномерный массив, состоящий из n целых чисел. Найти индекс минимального элемент массива. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: индекс минимального элемент массива. |
|
Исходные данные: |
Результат: |
10 |
5 |
10 |
9 |
Если в задаче требуется найти индекс минимального (максимального), то вводим переменную imin, в которую будем запоминать индекс минимального (максимального), причем первоначально ее значение равно 1.
program min2;
var a:array[1..100] of integer;
i,min,n,imin:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-100,100);
write(a[i],’ ‘);
end;
//нахождение индекса минимального элемента массива
min:=a[1];
imin:=1;
for i:=2 to n do
if min>=a[i] then begin
imin:=i;
min:=a[i];
end;
//вывод результата
writeln;
write(imin);
end.
Если в массиве есть несколько равных между собой минимальных элементов, то данная программа найдет номер последнего (правого) элемента. Для того чтобы найти индекс первого (левого) элемента достаточно изменить знак >= на строгий знак >.
Эту программу можно оптимизировать, так как, зная индекс минимального элемента, можно найти значение минимального элемента массива. Значит, переменная min не нужна:
var a:array[1..100] of integer;
i,n,imin:integer;
Фрагмент нахождения индекса минимального элемента массива выглядит так:
imin:=1;
for i:=2 to n do
if a[imin]>=a[i] then imin:=i;
Задача 3: Дан одномерный массив, состоящий из n целых чисел. Найти количество минимальных элементов массива. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: количество минимальных элементов массива. | |
Исходные данные: |
Результат: |
10 |
2 |
10 |
3 |
program min3;
var a:array[1..100] of integer;
i,min,n,k:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-5,5);
write(a[i],’ ‘);
end;
//нахождение минимального элемента массива
min:=a[1];
for i:=2 to n do
if min>=a[i] then
min:=a[i];
//считаем количество равных элементов
k:=0;
for i:=1 to n do
if a[i]=min then k:=k+1;
//вывод результата
writeln;
write(k);
end.
Задача 4: Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 0 до 1000. Напишите программу, находящую минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на четыре. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого чётно и не кратно четырем. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на четыре. | |
Исходные данные: |
Результат: |
10 |
-6 |
10 |
-10 |
В этой задаче первый способ нахождения минимального не подойдет. Первый элемент массива может оказаться меньше, чем минимальный четный и не кратный четырем и программа выведет неверный результат. Каким должно быть начальное значение переменной min? Его нужно выбрать таким, чтобы для первого же «подходящего» элемента выполнилось условие a[i] < min, и это «временное» начальное значение было бы заменено на реальное. Такое «подходящее» обязательно будет, так как это гарантировано условием задачи. Оно должно быть большим и таким, какое не может быть по условию задачи, например, 1001.
Кроме того заметим, что задавать элементы массива нужно с клавиатуры, чтобы обеспечить условия задачи.
Итак, находим минимальный элемент вторым способом.
2 способ
Записываем в переменную min значение 1001. Затем в цикле просматриваем все элементы массива, с первого до последнего. Если остаток от деления очередного элемента на 2 равен 0 и остаток от его деления на 4 не равен нулю и значение элемента меньше, чем значение переменной min, сохраняем в переменную min значение очередного элемента массива. После окончания работы цикла выводим значение переменной min.
program min4;
var a:array[1..100] of integer;
i,min,n:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
write(a[i],’ ‘);
//нахождение минимального элемента массива
min:=1001;
for i:=1 to N do
if (a[i] mod 2=0) and (a[i] mod 4 <> 0) and (a[i]<min) then
min:=a[i];
//вывод результата
writeln;
write(min);
end.
Проверяем на тестах:
10 411 837 755 90 520 203 581 798 401 640 |
90 |
10 |
658 |
Конечно, решить эту задачу можно и первым способом, но для нахождения первого значения min нужно написать дополнительные команды поиска. Вот таким может быть решение:
program min5;
var a:array[1..100] of integer;
i,min,n,j:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
write(a[i],’ ‘);
//нахождение первого четного и не кратного 4 числа
i:=1;
while (i<=n)and not((a[i] mod 2=0) and (a[i] mod 4 <> 0)) do i:=i+1;
//в переменной i запомнился номер первого элемента, удовлетворяющего условию
//нахождение минимального, начиная со следующего за найденным
min:=a[i];
for j:=i+1 to N do
if (a[j] mod 2=0) and (a[j] mod 4 <> 0) and (a[j]<min) then
min:=a[j];
//вывод результата
writeln;
write(min);
end.
Задача 5: Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные целые значения. Напишите программу, которая находит и выводит второй максимум массива (элемент, который в отсортированном по невозрастанию массиве стоял бы вторым). | |
Исходные данные: |
Результат: |
10 |
14 |
10 |
45 |
Мы знаем, как найти первый максимум, а в этой задаче нужно найти второй по величине максимум. Попробуем это сделать это за один проход по массиву. Нам нужны две переменные, max1 (максимальный элемент) и max2 (второй максимум). Сначала выбираем максимальный из первых двух элементов и записываем его значение в max1, а второй по величине записываем в max2.
Затем в цикле перебираем все элементы, начиная с 3-го до последнего. Если очередной элемент a[i] больше, чем max1, записываем значение max1 в max2 (предыдущий максимум становится вторым), а значение a[i] – в max1. Иначе, если a[i] больше, чем max2, записываем значение a[i] в max2. После завершения цикла выводим значение переменной max2.
program min6;
var a: array [1..100] of integer;
i, k,n, max1, max2: integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(0,100);
write(a[i],’ ‘);
end;
//начальные значения max1 и max2
if a[1] > a[2] then begin
max1:=a[1]; max2:=a[2]
end
else begin
max1:=a[2]; max2:=a[1]
end;
// поиск второго максимального
for i:=3 to N do
if a[i] > max1 then begin
max2:= max1;
max1:= a[i]
end
else
if a[i] > max2 then max2:=a[i];
//вывод результата
writeln;
writeln(max2);
end.
Задача 6: Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, позволяющую найти и вывести минимальный элемент массива, шестнадцатеричная запись которого содержит ровно две цифры, причём первая (старшая) цифра больше второй (младшей). Если таких чисел нет, нужно вывести ответ 0. | |
Исходные данные: |
Результат: |
20 |
14 |
10 |
45 |
Эта задача усложнена только тем, что элементы массива должны быть в диапазоне от 16 до 255. В этом случае первая цифра находится как результат деления нацело на 16, а вторая цифра – как остаток от деления на 16.
Кроме этого здесь массив можно объявить через константу n, так как размер массива задан явно: 20 элементов.
program z6;
//объявление массива через константу
const n=20;
var a: array [1..n] of integer;
i,min: integer;
begin
//заполнение массива и вывод массива в строчку
for i:=1 to n do begin
a[i]:=random(0,10000);
write(a[i],’ ‘);
end;
writeln;
min := 10001;
for i := 1 to n do begin
//для проверки правильности программы выведем две шестнадцатеричные цифры:
//write(a[i] div 16,a[i] mod 16,’ ‘);
if (16 <= a[i]) and (a[i] < 256) and (a[i] div 16 > a[i] mod 16) and (a[i] < min) then
min := a[i];
end;
writeln;
//вывод результата
if min = 10001 then
writeln(0)
else
writeln(min);
end.
Задачи для самостоятельного решения:
- Дан целочисленный массив из n элементов. Элементы могут принимать значения от 150 до 210 – рост учащихся выпускного класса. В волейбольную команду берут тех, чей рост не менее 170 см. Напишите программу, которая определяет и выводит минимальный рост игрока баскетбольной команды. Гарантируется, что хотя бы один ученик играет в баскетбольной команде.
- Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за экзамен по информатике. Для получения положительной оценки за экзамен требовалось набрать не менее 50 баллов. Напишите программу, которая находит и выводит минимальный балл среди учащихся, получивших за экзамен положительную оценку. Известно, что в классе хотя бы один учащийся получил за экзамен положительную оценку.
- Дан целочисленный массив – сведения о температуре за каждый день октября. Элементы массива могут принимать целочисленные значение значения от -15 до 20. Напишите программу, которая находит и выводит максимальную температуру среди дней, когда были заморозки (температура опускалась ниже нуля). Гарантируется, что хотя бы один день в октябре была отрицательная температура.
- Дан целочисленный массив из n элементов, все элементы которого – неотрицательные числа, не превосходящие 10000. Напишите программу, которая находит и выводит минимальное трехзначное число, записанное в этом массиве. Если таких чисел нет, нужно вывести сообщение «Таких чисел нет».
- Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, позволяющую найти и вывести наибольший из элементов массива, шестнадцатеричная запись которого оканчивается на букву F. Если таких чисел нет, нужно вывести ответ 0.
- Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные целые значения. Напишите программу, которая находит и выводит номера двух элементов массива, сумма которых минимальна.
- Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, находящую минимальный элементов массива, шестнадцатеричная запись которого содержит ровно две цифры, причём вторая (младшая) цифра – это буква (от A до F). Если таких чисел нет, нужно вывести ответ 0.
Источники информации
- Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов/ Н.Д. Угринович. – М.:Бином. Лаборатория знаний, 2005.
- Сайт К. Полякова http://kpolyakov.spb.ru/school/ege.htm
Элементы массива, которые меньше среднего арифметического
Просмотров 5.3к. Обновлено 15 октября 2021
Найти в массиве те элементы, значение которых меньше среднего арифметического, взятого от всех элементов массива.
Алгоритм решения задачи:
- Посчитать сумму всех элементов массива. Для этого до цикла вводится переменная для суммы (например, sum). Далее в цикле перебираются элементы массива и значение каждого добавляется к этой переменной. Подсчет суммы можно выполнить в том же цикле, что и заполнение массива.
- Когда сумма элементов посчитана, находится среднее арифметическое, которое равно сумме разделенной на количество элементов массива.
- Массив перебирается в цикле, каждый элемент сравнивается с найденным средним значением. Если элемент меньше, то он выводится на экран (или сохраняется в другом массиве).
Язык Си
#include < stdio.h>
#define N 10main() {
int a[N];
int i;
float sum, avrg;
srand(time(NULL));
sum = 0;
for (i=0; i< N; i++) {
a[i] = rand() % 100;
printf("%3d", a[i]);
sum += a[i];
}
printf("n");avrg = sum/N;
printf("%.2f n",avrg);
for (i=0; i< N; i++)
if (a[i] < avrg) printf("%3d", a[i]);
printf("n");
}
38 67 71 56 34 11 17 84 92 61
53.10
38 34 11 17
Python
from random import random
N = 10
arr = [0] * N
for i in range(N):
arr[i] = int(random() * 100)
print(arr)
avrg = sum(arr)/N
print(avrg)
less = []
for i in range(N):
if arr[i] < avrg:
less.append(arr[i])
print(less)
[90, 24, 8, 0, 48, 52, 68, 38, 21, 70]
41.9
[24, 8, 0, 38, 21]
В Питоне сумму элементов списка можно найти с помощью встроенной функции sum().
КуМир
алг меньше среднего
нач
цел N = 10
цел таб a[1:N]
цел i
вещ sum, avrg
sum := 0
нц для i от 1 до N
a[i] := irand(-50,50)
вывод a[i]:4
sum := sum + a[i]
кц
вывод нс
avrg := sum/N
вывод avrg, нс
нц для i от 1 до N
если a[i] < avrg то
вывод a[i]:4
все
кц
кон
-21 42 -23 25 46 20 12 -45 -35 -45
-2.4
-21 -23 -45 -35 -45
Basic-256
N = 10
dim arr(N)
sum = 0
for i=0 to N-1
arr[i] = int(rand()*100)
print arr[i] + " ";
sum = sum + arr[i]
next i
avrg = sum/N
print avrg
for i=0 to N-1
if avrg > arr[i] then print arr[i] + " ";
next i
46 16 26 4 36 91 51 99 70 33
47.2
46 16 26 4 36 33
Pascal
const N = 10;
var
a: array[1..N] of integer;
i: byte;
avrg: real;
sum: integer;
begin
randomize;
for i:=1 to N do a[i]:=random(50)+1;
sum := 0;
for i:=1 to N do sum := sum + a[i];
avrg := sum/N;// весь массив
for i:=1 to N do write(a[i]:3);
writeln;writeln('Среднее арифм.: ',avrg:4:2);
// больше avrg
for i:=1 to N do if a[i] < avrg then write(a[i]:3);
writeln;
end.
13 23 45 2 9 28 47 30 18 12
Среднее арифм.: 22.70
13 2 9 18 12
Самый простой способ
Разумеется, проще всего получить минимальный и максимальный элементы массива с помощью функций min() и max():
$arr = [8, 4, 12, 9];
$max = max($arr); // 12
$min = min($arr); // 4
Однако на форумах часто просят написать скрипт, не использующий эти функции. Чаще всего этого требуют преподаватели учебных учреждений.
Условия задачи
1. Найти наибольший наименьший элементы в одномерном числовом массиве.
2. Определить номер минимального и максимального элементов заданного одномерного массива.
3. Найти минимальное и максимальное значение в ассоциативном массиве.
Общий принцип поиска элементов
Во всех решениях мы будем использовать одну и ту же логику.
Согласно условию, нам необходимо объявить числовой массив произвольной длины. Также объявим 4 переменные, в которые будем помещать найденные значения и их ключи:
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
Далее перебираем массив в цикле и на каждой итерации проверяем, больше ли текущее значение, чем самое большое, что мы находили до этого.
И если больше – будем записывать в $max новое максимальное значение, а в $max_key его ключ. Абсолютно также поступим и с минимальными ключом и значением.
Пример с циклом foreach:
foreach($arr as $k => $v)
{
if($v > $max)
{
$max = $v;
$max_key = $k;
}
if($v < $min)
{
$min = $v;
$min_key = $k;
}
}
На данном этапе наш код уже будет работать, но это ещё не всё. Попробуем изменить исходный массив и посмотрим на результат:
<?php
$arr = [0, -12];
$max = null;
foreach($arr as $v)
{
if($v > $max)
$max = $v;
}
var_dump($max); // -12
Максимальным должно быть число 0, но скрипт вывел -12. Дело в том, что PHP не считает истинным выражение 0 > null, поэтому ноль на первой итерации цикла не записался в переменную $max.
Для решения этой проблемы просто добавим условие, что если $max === null, т.е. если это первая итерация, то в любом случае записываем текущее значение в $min и $max:
<?php
$arr = [0, -12];
$max = null;
foreach($arr as $v)
{
if($v > $max or $max === null)
$max = $v;
}
var_dump($max); // -12
Минимальный и максимальный элементы с циклом FOREACH
Решение:
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
foreach($arr as $k => $v)
{
if($v > $max or $max === null)
{
$max = $v;
$max_key = $k;
}
if($v < $min or $min === null)
{
$min = $v;
$min_key = $k;
}
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Минимальный и максимальный элементы с циклом WHILE
Решение 1: счётчик + count()
Цикл будет выполняться до тех пор, пока значение счётчика $i не превысит количество элементов массива.
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
while($i < count($arr))
{
if($arr[$i] > $max or $max === null)
{
$max = $arr[$i];
$max_key = $i;
}
if($arr[$i] < $min or $min === null)
{
$min = $arr[$i];
$min_key = $i;
}
$i++;
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Решение 2: счётчик + isset()
Запускаем вечный цикл while и в каждой итерации цикла проверяем существование следующего элемента с помощью isset(). Если его нет – выходим из цикла оператором break:
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
while(true)
{
if(isset($arr[$i]))
{
if($arr[$i] > $max or $max === null)
{
$max = $arr[$i];
$max_key = $i;
}
if($arr[$i] < $min or $min === null)
{
$min = $arr[$i];
$min_key = $i;
}
}
else
break;
$i++;
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Решение 3: list() + each()
Функция each() возвращает ключ и значение текущего элемента массива и смещает его внутренний указатель на единицу. Функция list() используется просто для удобства – с её помощью мы превращаем массив, который возвращает функция each, в две разные переменные:
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
while(list($k, $v) = each($arr))
{
if($v > $max or $max === null)
{
$max = $v;
$max_key = $k;
}
if($v < $min or $min === null)
{
$min = $v;
$min_key = $k;
}
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Получился практически аналог foreach. Единственный минус в том, что начиная с PHP 7.2 функция each() объявлена устаревшей.
Решение 4: current() + next()
Это решение похоже на предыдущее с each(). Получаем текущий элемента массива функцией current() и смещаем внутренний указатель массива функцией next(). Получить текущий ключ массива можно с помощью функции key().
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
while($v = current($arr))
{
if($v > $max or $max === null)
{
$max = $v;
$max_key = key($arr);
}
if($v < $min or $min === null)
{
$min = $v;
$min_key = key($arr);
}
next($arr);
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Наибольший и наименьший элементы с циклом FOR
Решение 1: счётчик + count()
Вводим счётчик $i и увеличиваем его после каждой итерации. Цикл прекратится как только значение счётчика превысит количество элементов массива.
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
for($i = 0; $i < count($arr); $i++)
{
if($arr[$i] > $max or $max === null)
{
$max = $arr[$i];
$max_key = $i;
}
if($arr[$i] < $min or $min === null)
{
$min = $arr[$i];
$min_key = $i;
}
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Решение 2: счётчик + isset()
В отличие от предыдущего варианта, мы не смотрим на количество элементов массива, а запускаем вечный цикл и в каждой итерации проверяем существование следующего элемента, и если его нет – прерываем цикл командой break:
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
for($i = 0; true; $i++)
{
if(!isset($arr[$i]))
break;
if($arr[$i] > $max or $max === null)
{
$max = $arr[$i];
$max_key = $i;
}
if($arr[$i] < $min or $min === null)
{
$min = $arr[$i];
$min_key = $i;
}
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Решение 3: each() + list()
Функция each() возвращает массив с ключом и значением текущего элемента массива, а list() превращает этот массив в 2 разные переменные. После последнего элемента функция each() вернёт false и цикл прекратит работу.
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
for(; list($k, $v) = each($arr);)
{
if($v > $max or $max === null)
{
$max = $v;
$max_key = $k;
}
if($v < $min or $min === null)
{
$min = $v;
$min_key = $k;
}
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Решение 4: current() + next()
С помощью функции next() смещаем внутренний указатель массива, а функции current() и key() возвращают текущие ключ и значение. Первое и последнее выражение цикла оставляем пустыми.
<?php
$arr = [12, 4, 182, 1, 2.587];
$min = null;
$min_key = null;
$max = null;
$max_key = null;
$i = 0;
for(; $v = current($arr);)
{
if($v > $max or $max === null)
{
$max = $v;
$max_key = key($arr);
}
if($v < $min or $min === null)
{
$min = $v;
$min_key = key($arr);
}
next($arr);
}
echo "Min value: $min <br> Min key: $min_key <br>";
echo "Max value: $max <br> Max key: $max_key";
Максимальное значение в ассоциативном массиве
В ассоциативных массивах отсутствует порядок или системность в названиях ключей, поэтому циклы со счётчиками здесь недоступны.
Но мы всё ещё можем использовать цикл foreach и те решения для while и for, где используются функции each() и next(), поскольку они используют не ключи, а внутренний указатель массива.