Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2013, 00:33   #1
kolia_y
 
Регистрация: 05.10.2013
Сообщений: 4
По умолчанию Составить программу массива: Найти наименьшее из четных и произведение нечетных чисел, входящих в последовательность

Дано натуральное число n, действительные числа аn,...,аn. Найти наименьшее из четных и произведение нечетных чисел, входящих в последовательность а1,...,аn.

За помощь буду благодарен!!!
kolia_y вне форума Ответить с цитированием
Старый 05.10.2013, 00:41   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Показывайте свои наработки. Какие у Вас конкретно вопросы?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.10.2013, 07:28   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
действительные числа аn,...,аn. Найти наименьшее из четных и произведение нечетных чисел
Опять очередной преподаватель отличился?!
Условия задачи НЕ КОРРЕКТНЫ!
Понятие "чётности"/"нечётности" допустимо только для ЦЕЛЫХ чисел.

Всё остальное (если допустить, что даны всё таки целочисленные значения) очень просто. При чём лёгко решается вообще без массива (в процессе ввода чисел). Но, если стоит задача использовать массив, то можно и массив использовать.
И, если уж использовать массив, то, при поиске минимального из чётных рекомендую запоминать не саму величину, а индекс найденного минимума.
Для накопления суммы можно действительно использовать переменную действительного типа (произведение чисел очень быстро растущая величина. см. для сравнения факториал)
Выглядеть основная часть программы может примерно так:
Код:
 IndexMin := -1; {ещё нет чётных элементов, берём заведомо несуществующий индекс}
 MultiPlier := 1.0 ; {начальное присвоение накопителя произведения. переменная MultiPlier действительная }

 for i:=1 to N do
   if odd(A[i]) then MultiPlier := MultiPlier * A[i] {если нечётное число}
   else begin {чётное число}
      if (IndexMin = -1) then {не было ещё чётных чисел, поэтому индекс первого из чётных чисел
                                       запоминаем в качестве индекса минимального...}
             IndexMin := i
      else  {были ранее чётные числа. сравним текущее число с ранее найденным минимальным}
          if A[i]< A[IndexMin] then  IndexMin := i;  {если меньше, запоминаем его индекс}
  end;
Или, если непонятно, что я выше написал, тогда давайте начнём с того, что Вы покажете свой код, как Вы вводите значения массива...

Последний раз редактировалось Serge_Bliznykov; 05.10.2013 в 07:37.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2013, 11:03   #4
Evorty
 
Регистрация: 04.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от kolia_y Посмотреть сообщение
Дано натуральное число n, действительные числа аn,...,аn. Найти наименьшее из четных и произведение нечетных чисел, входящих в последовательность а1,...,аn.

За помощь буду благодарен!!!
Впринципе решается все очень просто:
Код:
var Mas: array[1..50] of integer; {Объявляем массив чисел}
     i, min, res, first, a, b: integer;
begin
     randomize; {В случае с рандомными числами запускаем генератор случайных чисел}
     min := 100; {Задаем минимальное число}
     res := 0; {Пока что у нас произведение равно 0}
     first := 1; {То есть у нас пока что умножение не проводилось}
     a := 0; {Счетчик четных чисел}
     b := 0; {Счетчик нечетных чисел}
     for i := 1 to 50 do
       begin
            Mas[i] := random(100) + 1; {Заполняем массив случайными числами от 1 до 100}
            Write(Mas[i], ' '); {И тут же их выводим в строку}      
       end;   
     for i := 1 to 50 do
       begin
            if Mas[i] mod 2 = 0 then {Признак четности}
            begin
                 if Mas[i] < min then min := Mas[i]; {Если значение меньше минимума, то делаем его минимумом} 
                 a := a + 1; {Повыщаем кол-во четных чисел на 1}         
            end
            else
            begin
                 if first = 1 then {Если умножение еще не производилось}
                    begin
                         res := res + Mas[i]; {то прибавляем к произведению значение ячейки массива i}
                         first := 2; {Говорим, что первое нечетное число найдено}
                    end
                 else
                    begin
                        res := res * Mas[i]; {Если же умножение уже проводилось, то умножаем}
                        b := b + 1; {Увеличиваем кол-во нечетных чисел на 1}
                    end;
            end;  
       end;  
       writeln('Четных чисел в массиве ', a); {Выводим результаты}
       writeln('Нечетных чисел в массиве ', b);
       writeln('Наименьшее из четных ', min);
       writeln('Произведение четных равно ', res); 
readln;
end.
Сорри за такое кривое оформление....
Не проверял, но должно работать
Не стал запариваться насчет нуля, доработать можно

P. S. Не надо агра, если что-то не так

Последний раз редактировалось Stilet; 05.10.2013 в 11:35.
Evorty вне форума Ответить с цитированием
Старый 05.10.2013, 12:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Evorty, если не секрет, чем не устроил мой код, приведённый выше?
То, что они слишком простой?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2013, 14:45   #6
Evorty
 
Регистрация: 04.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Evorty, если не секрет, чем не устроил мой код, приведённый выше?
То, что они слишком простой?
Против вашего кода ничего не имею, но он может быть не всегда понятен новичкам. Я же постарался написать так, как написал бы любой новичок, максимально все разжевав и почти положив в рот.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Выглядеть основная часть программы может примерно так
Плюс, как видите у меня здесь не основная часть программы, а вся программа от начала и до конца
Когда то ходил на курсы по Pascal. Дак вот, там именно так и учили все разжевывать. А так же я мог позабыть, как с ним работать, т. к. работаю в среде ООП Delphi По-этому и говорю, что работать должно, но не уверен. Протестить не могу, т. к. у меня нет хотябы элементарного Free Pascal'я, а качать ради одного раза мне лееньь
Evorty вне форума Ответить с цитированием
Старый 05.10.2013, 15:33   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Протестить не могу, т. к. у меня нет хотябы элементарного Free Pascal'я, а качать ради одного раза мне лееньь
Вас спасет или консольнйы режив в Дельфи, либо ideone.com
Poma][a вне форума Ответить с цитированием
Старый 05.10.2013, 16:01   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у меня здесь не основная часть программы, а вся программа от начала и до конца
Жаль что автору это не поможет по причине, указанной Сержем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2013, 09:39   #9
Evorty
 
Регистрация: 04.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Вас спасет или консольнйы режив в Дельфи, либо ideone.com
Тааакк, что-то я не подумал
Evorty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
11. Найти произведение элементов нечетных строк массива. Вывести сам массив и произведение. p-6 Паскаль, Turbo Pascal, PascalABC.NET 1 29.11.2012 23:37
определить количество четных чисел и количество нечетных чисел массива, которые вводятся в МЕМО, вывести в поле компонента Edit. Pyxy Помощь студентам 2 21.03.2012 23:24
произведение четных и нечетных leilochka777 Паскаль, Turbo Pascal, PascalABC.NET 2 24.10.2011 14:33
вычислить произведение четных чисел в каждой строке массива. Oliver Sykes Паскаль, Turbo Pascal, PascalABC.NET 5 09.10.2008 03:43