KirjuLLIa 0 / 0 / 0 Регистрация: 06.07.2015 Сообщений: 4 |
||||
1 |
||||
Найти наименьший нечетный элемент в одномерном массиве06.07.2015, 23:36. Показов 7167. Ответов 1 Метки нет (Все метки)
Вот что у меня получилось
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
07.07.2015, 09:16 |
2 |
|||
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;
}
Что тут не верно?Помогите исправить пожалуйста.Не серчайте,я только учусь работать с массивами…Задача всё ещё не решена.
var a:array [1..100] of integer; min,i,n,s:integer; begin write('Введите размер массива от 1 до 100 n='); readln(n); writeln('Введите элементы массива, целые числа'); for i:=1 to n do readln(a[i]); min:=0; for i:=1 to n do if odd(a[i])then begin if min=0 then min:=a[i] else if a[i]<min then min:=a[i]; end; if min=0 then write('Нечетных элементов нет') else write('Минимальный нечетный=',min); end.
На чтение 4 мин.
Условие задачи: Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный. (Язык Pascal)
Сложность: легкая.
Содержание
- Решение задачи
- Начнем мы с каркаса нашей программы
- Всё решение задачи Pascal
Решение задачи
Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.
Для того чтобы решить задачу нам понадобятся следующие переменные:
- Переменная mass — для массива
- Переменная i — для цикла for
- Переменная min — для минимального нечетного элемента
- Переменная count — для кол-ва элементов массива
Начнем мы с каркаса нашей программы
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) включили генератор случайных чисел , подробнее (тут), ну и попросили пользователя ввести кол-во элементов массива.
Теперь давайте заполним наш массив случайными числами с помощью цикла for и выведем все его элементы, цикл должно у нас быть от 1 до количества элементов, чтобы заполнить весь массив, пишем:
1 2 3 4 5 |
|
Для того чтобы найти минимальный элемент делается следующее, для начала задаётся начальное значение переменной min, обычно это первое значение массива, дальше оно уже сравнивается со всеми остальными элементами массива и если какое-то меньше min, то уже оно становится минимальным, но также надо не забыть проверить на нечетность.
1 2 3 4 5 |
|
i = 2 , потому что первый элемент у нас уже известен min := mass[1] смысла сравнивать первый элемент с первым нету.
После этого цикла у нас должен быть найден наименьший нечетный элемент, но может быть такая ситуация что начальное значение переменной min и есть наименьший элемент, т.е. все остальные элементы больше начального значения, в этом случаи нам надо проверить и его на нечетность:
1 2 3 4 |
|
Т.е. если последнее число которое содержится в переменной min нечетное то мы его и выводим, иначе говорим что в массиве нет нечетных элементов.
Всё решение задачи Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Условие задачи: Массив задан датчиком случайных чисел на интервале [-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. Определить, являются ли все цифры пятизначного числа четными.