|
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. Определить, являются ли все цифры пятизначного числа четными.
