Chayka2020 0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
||||
1 |
||||
Найти минимальный нечетный элемент последовательности28.02.2019, 05:36. Показов 19988. Ответов 13 Метки python 3.7 (Все метки)
Дана последовательность из n чисел (n вводится с клавиатуры). Найти минимальное нечетное число или вывести сообщение, что нет такого.
Если делать так, то не проверено первое число.
0 |
Arsegg 3478 / 2086 / 559 Регистрация: 02.09.2015 Сообщений: 5,328 |
||||
28.02.2019, 06:31 |
2 |
|||
0 |
0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
|
28.02.2019, 08:24 [ТС] |
3 |
Спасибо, хорошее решение.
0 |
Arsegg 3478 / 2086 / 559 Регистрация: 02.09.2015 Сообщений: 5,328 |
||||
28.02.2019, 08:52 |
4 |
|||
Сообщение было отмечено Chayka2020 как решение Решение
1 |
Dax Модератор 1353 / 650 / 207 Регистрация: 23.03.2014 Сообщений: 3,054 |
||||
28.02.2019, 10:05 |
5 |
|||
Chayka2020, пойдет?
1 |
0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
|
28.02.2019, 10:30 [ТС] |
6 |
Большое спасибо за идею! Убрать бы еще и функцию…
0 |
Semen-Semenich 4465 / 3145 / 1112 Регистрация: 21.03.2016 Сообщений: 7,829 |
||||
28.02.2019, 14:19 |
7 |
|||
0 |
0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
|
28.02.2019, 14:47 [ТС] |
8 |
Увы, нет. Первое число вне цикла не обрабатывается. Вот и ломаю голову!
0 |
3478 / 2086 / 559 Регистрация: 02.09.2015 Сообщений: 5,328 |
|
28.02.2019, 15:05 |
9 |
Semen-Semenich, Не по теме: при n = 0 можно bsod словить.
0 |
SergeyDe 49 / 21 / 6 Регистрация: 16.02.2019 Сообщений: 55 |
||||||||
28.02.2019, 15:26 |
10 |
|||||||
Сообщение было отмечено mik-a-el как решение Решение
Добавлено через 8 минут
1 |
0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
|
28.02.2019, 15:48 [ТС] |
11 |
И опять не оно… У нас задачка для 7 класса. Им не важна производительность и оптимальность. Дана последовательность из n чисел (n вводится с клавиатуры). И сами числа – тоже с клавиатуры.
0 |
Arsegg 3478 / 2086 / 559 Регистрация: 02.09.2015 Сообщений: 5,328 |
||||
28.02.2019, 16:33 |
12 |
|||
Chayka2020,
1 |
0 / 0 / 0 Регистрация: 12.01.2017 Сообщений: 6 |
|
28.02.2019, 18:20 [ТС] |
13 |
Всё, я поняла, что всех достала)))
0 |
Semen-Semenich 4465 / 3145 / 1112 Регистрация: 21.03.2016 Сообщений: 7,829 |
||||||||||||
28.02.2019, 20:16 |
14 |
|||||||||||
Сообщение было отмечено Chayka2020 как решение Решение
Первое число вне цикла не обрабатывается нет оно обрабатывается но не выполняются 2 условия. это что то я упустил
то есть a всегда больше m которое равно 0 и второе
то есть 0 == False
тут правда не считается количество вводов, если будет введено больше 5ти четных чисел то ввод будет продолжаться до первого нечетного. вообщем требует доработки но суть думаю понятна
1 |
Пусть дано:Вывести номера всех минимальных нечетных элементов. Нумерация
начинается с нуля. Если таких элементов нет, то вывести сообщение об
этом.n =8 Массив =0, 5, 9, 1, 2, 7, 1, 3 Результат = 3 6
n =8 Массив= 2, 6, 10, 6, 8, 8, 8, 2 Результат = нечетных элементов нет
Вот мой вариант:
//вывести номера всех минимальных нечётных элементов массива
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int n;
cout << "Введите размерность массива - ";
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
{
cout << "a[" << i << "]= ";
cin >> a[i];
}
int min = a[0];
for (int i = 0; i < n; i++)
{
if (a[i] % 2 != 0)
{
if (a[i] < min) min = a[i];
}
else if (a[i] == min)
cout << "Номера всех минимальных нечётных элементов равна " << n;
cout << endl;
}
if (min % 2 == 0)
cout << "не чётных элементов нет/n" << endl;
cout << min << endl;
delete []a;
return 0;
}
Что тут не верно?Помогите исправить пожалуйста.Не серчайте,я только учусь работать с массивами…Задача всё ещё не решена.
This code is supposed to find the smallest odd number in given array and store it in min
but when I try to print min
it always prints 0
.
int smallestodd(int x[5]){
int j;
int k[5];
int p = 0;
int r = 0;
for(int h =0; h<5;h++){
j = x[h] % 2;
if(j == 1){
int temp =x[h];
k[p] =temp;
p++;
}
}
int min = k[0];
while(k[r] !=0){
if(k[r] < min ){
min = k[r];
r++;
}
}
return min;
}
delirium
8686 silver badges20 bronze badges
asked Jan 14, 2019 at 11:01
10
Assuming there is an odd number in the array — let’s say trying to find the minimum odd number in an array with just even numbers (or no numbers) is UB 🙂
index = 0;
while (arr[index] % 2 == 0) index++; // skip even numbers
min = arr[index++]; // first odd number
while (index < length) {
if (arr[index] % 2) {
if (arr[index] < min) min = arr[index];
}
index++;
}
answered Jan 14, 2019 at 11:18
pmgpmg
106k13 gold badges125 silver badges198 bronze badges
2
this code avoid overflow in search and return 1 when found or 0 if array has only even numbers.
int getMinOdd(int arr[], int length, int *value) {
int found = 0;
for(int idx=0; idx < length; idx++) {
if (arr[idx] % 2) {
if (!found || *value > arr[idx]) {
*value = arr[idx];
}
found = 1;
}
}
return found;
}
answered Jan 14, 2019 at 11:51
seduardoseduardo
7046 silver badges6 bronze badges
It’s quite simple actually. You need to just check 2 conditions on your array.
int smallestOdd(int arr[]){
int min = 99999; //Some very large number
for(int i = 0; i < (length of your array); i++) {
if(arr[i]%2 != 0 && arr[i] < min) { //Check if number is odd and less than the current minimum value
min = arr[i];
}
}
return min;
}
answered Jan 14, 2019 at 11:11
KaranKaran
645 bronze badges
3
Use this using statement as first :
Using System Linq;
Console.WriteLine(myArray.Where(i => i%2 == 1).Min());
answered Mar 19, 2022 at 8:13
Найти наименьший нечетный элемент в одномерном массиве. (Паскаль)
Ученик
(79),
на голосовании
7 лет назад
Голосование за лучший ответ
Александр Погребняк
Высший разум
(206904)
7 лет назад
Первое, что пришло в голову. Может и неоптимально…
1. Перед циклом будем считать минимальным нечетным любое четное число, например, 2
2. В цикле. Если min=2 и текущий элемент нечетный, то min присваиваем значение этого элемента. Иначе, если элемент нечетный и он меньше минимального, то он становится минимальным
3. После цикла проверяем: если min так и остался двойкой, то выводим сообщение, что нечетных элементов в массиве нет
Подробнее нужно – пишите на почту
Условие задачи: Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный. (Язык Pascal)
Сложность: легкая.
Решение задачи
Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.
Для того чтобы решить задачу нам понадобятся следующие переменные:
Начнем мы с каркаса нашей программы
type
massiv =
array
[
1..100
]
of
integer
;
// создаём свой тип данных для массива
var
mass : massiv;
// объявляем
i, min, count :
integer
;
// переменные
begin
randomize;
// включаем генератор случайных чисел
write
(
'Введите размер массива : '
);readln(count);
// вводим размер массива
end
.
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) включили генератор случайных чисел , подробнее (тут), ну и попросили пользователя ввести кол-во элементов массива.
Теперь давайте заполним наш массив случайными числами с помощью цикла for и выведем все его элементы, цикл должно у нас быть от 1 до количества элементов, чтобы заполнить весь массив, пишем:
for
i:=
1
to
count
do
// пускаем цикл для заполнения массива
begin
mass[i] := random(
104
) -
37
;
// присваиваем случайное число
write
(mass[i],
' | '
);
// выводим число
end
;
Для того чтобы найти минимальный элемент делается следующее, для начала задаётся начальное значение переменной min, обычно это первое значение массива, дальше оно уже сравнивается со всеми остальными элементами массива и если какое-то меньше min, то уже оно становится минимальным, но также надо не забыть проверить на нечетность.
min := mass[
1
];
// за минимальный элемент берем 1-е число, чтобы было с чем сравнивать
for
i:=
2
to
count
do
// ищем минимальный элемент
if
(mass[i] < min)
AND
(mass[i]
mod
2
<>
0
)
then
// проверяем его на условие, если прошло условие
min := mass[i];
// присваиваем новое значение
i = 2 , потому что первый элемент у нас уже известен min := mass[1] смысла сравнивать первый элемент с первым нету.
После этого цикла у нас должен быть найден наименьший нечетный элемент, но может быть такая ситуация что начальное значение переменной min и есть наименьший элемент, т.е. все остальные элементы больше начального значения, в этом случаи нам надо проверить и его на нечетность:
if
( min
mod
2
<>
0
)
then
// если вдруг минимальным остался самый первый элемент, то надо его тоже проверить на четность
writeln
(
'Минимальный элемент равен : '
, min)
else
writeln
(
'В массиве нет нечетных элементов!'
);
Т.е. если последнее число которое содержится в переменной min нечетное то мы его и выводим, иначе говорим что в массиве нет нечетных элементов.
Всё решение задачи Pascal
type
massiv =
array
[
1..100
]
of
integer
;
// создаём свой тип данных для массива
var
mass : massiv;
// объявляем
i, min, count :
integer
;
// переменные
begin
randomize;
// включаем генератор случайных чисел
write
(
'Введите размер массива : '
);readln(count);
// вводим размер массива
for
i:=
1
to
count
do
// пускаем цикл для заполнения массива
begin
mass[i] := random(
104
) -
37
;
// присваиваем случаное число
write
(mass[i],
' | '
);
// выводим число
end
;
min := mass[
1
];
// за минимальный элемент берем 1-е число, чтобы было с чем сравнивать
for
i:=
2
to
count
do
// ищем минимальный элемент
if
(mass[i] < min)
AND
(mass[i]
mod
2
<>
0
)
then
// проверяем его на условие, если прошло условие
min := mass[i];
// присваиваем новое значение
writeln
;
// для красоты переносим строку
if
( min
mod
2
<>
0
)
then
// если вдруг минимальным остался самый первый элемент, то надо его тоже проверить на четность
writeln
(
'Минимальный элемент равен : '
, min)
else
writeln
(
'В массиве нет нечетных элементов!'
);
readln;
// чтобы программа не закрывалась
end
.
Предыдущая
ПрограммированиеЗадачи по Pascal. Найти произведение элементов, кратных 3 в массиве.
Следующая
ПрограммированиеЗадачи по Pascal. Определить, являются ли все цифры пятизначного числа четными.