Как найти минимальный нечетный элемент массива

KirjuLLIa

0 / 0 / 0

Регистрация: 06.07.2015

Сообщений: 4

1

Найти наименьший нечетный элемент в одномерном массиве

06.07.2015, 23:36. Показов 7167. Ответов 1

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Вот что у меня получилось
Где ошибка?Или она совсем не правильная?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a:array [1..100] of integer;
min,i,n,s:integer;
begin
read(n);
s:=0;
for i:=1 to n do readln(n);
for i:=1 to n do begin
s:=a[i] mod 2;
if s=0 then min:=i;
end;
for i:=1 to n do begin
s:=a[i] mod 2;
if s=0 then begin if a[i]<min then min:=i; end;
end;
write(a[min]);
end.



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

07.07.2015, 09:16

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.



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)

Сложность: легкая.

Содержание

  1. Решение задачи
  2. Начнем мы с каркаса нашей программы
  3. Всё решение задачи Pascal

Решение задачи

Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.

Для того чтобы решить задачу нам понадобятся следующие переменные:

  1. Переменная mass — для массива
  2. Переменная i — для цикла for
  3. Переменная min — для минимального нечетного элемента
  4. Переменная count — для кол-ва элементов массива

Начнем мы с каркаса нашей программы

1

2

3

4

5

6

7

8

9

10

11

12

type

massiv = array [1..100] of integer;

var

mass : massiv;

i, min, count : integer;

begin

randomize;

write('Введите размер массива : ');readln(count);

end.

Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) включили генератор случайных чисел , подробнее (тут), ну и попросили пользователя ввести кол-во элементов массива.

Теперь давайте заполним наш массив случайными числами с помощью цикла for и выведем все его элементы, цикл должно у нас быть от 1 до количества элементов, чтобы заполнить весь массив, пишем:

1

2

3

4

5

for i:=1 to count do

begin

mass[i] := random(104) - 37;

write(mass[i], ' | ');

end;

Для того чтобы найти минимальный элемент делается следующее, для начала задаётся начальное значение переменной min, обычно это первое значение массива, дальше оно уже сравнивается со всеми остальными элементами массива и если какое-то меньше min, то уже оно становится минимальным, но также надо не забыть проверить на нечетность.

1

2

3

4

5

min := mass[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 и есть наименьший элемент, т.е. все остальные элементы больше начального значения, в этом случаи нам надо проверить и его на нечетность:

1

2

3

4

if ( min mod 2 <> 0) then

writeln('Минимальный элемент равен : ', min)

else

writeln('В массиве нет нечетных элементов!');

Т.е. если последнее число которое содержится в переменной 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

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];

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.

Условие задачи: Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный. (Язык Pascal)

Сложность: легкая.

Решение задачи

Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.

Для того чтобы решить задачу нам понадобятся следующие переменные:

  • Переменная mass — для массива
  • Переменная i — для цикла for
  • Переменная min — для минимального нечетного элемента
  • Переменная count — для кол-ва элементов массива
  • Начнем мы с каркаса нашей программы

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

    Понравилась статья? Поделить с друзьями:
  • Как найти в ивне
  • Как найти падеж в немецком языке
  • Как найти контакты собственника земельного участка
  • Как найти папки свои папки на яндексе
  • Как найти моды на гаррис мод