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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2011, 15:22   #1
2517
 
Регистрация: 20.06.2011
Сообщений: 4
По умолчанию Задача на поиск минимального элемента в массиве

В массиве N, состоящего из 26 элементов найти наименьший элемент и заменить его значением произведения всех элементов, следующих после него.

задача на Паскале.

Как найти наименьший элемент массива - это понятно, а вот вторую часть задачи не пойму как сделать.
2517 вне форума Ответить с цитированием
Старый 20.06.2011, 15:29   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Кроме значения элемента надо находить его индекс (в другую переменную).
и потом что-то вроде:
Код:
s:=1;
if minind+1 >= 26 then writeln что-то и т.п. //если это последний или предпоследний элемент массива
else
   for i:=minind+1 to 26 do
      s:=s+s*a[i];
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 20.06.2011 в 15:48.
Alex11223 вне форума Ответить с цитированием
Старый 20.06.2011, 15:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alex11223, +1

только в пример кода вкралась досадная опечатка!
в произведении элементов не надо ничего суммировать!

2517
примерно так:
Код:
uses Crt;
const N = 26;
var M : array[1..N] of extended;
    P  : extended;
    i, MinIndex : integer;
begin
   ClrScr; {очистим экран}

   {заполним массив сл.числами от 1 до 10}
   Randomize;
   for i:=1 to N do M[i] := Random(10)+1;

   {выведем массив}
   for i:=1 to N do Write(M[i]:1:0,' ');
   WriteLn;

   {найдём минимальный элемент}
   MinIndex := 1; {для начала считаем, что минимальный элемент - первый.}
   for i:=2 to N do
     if M[i]<M[MinIndex] then MinIndex := i;

   WriteLn('Найдено минимальное значение - M[',MinIndex,'] = ', M[MinIndex]:1:0 );

   {вычислим произведение всех элементов после минимального }
   P := 1;
   for i:=MinIndex+1 to N  do P := P*M[i];

   WriteLn('Произведение элементов после минимального равно ',P:1:0);

   {заменим минимальный элемент произведением}
   M[MinIndex]  := P;

   {выведем изменённый массив}
   WriteLn('Массив после обработки:');
   for i:=1 to N do Write(M[i]:1:0,' ');
   WriteLn;

   ReadLn; {ожидание нажатия ENTER 
                   - чтобы посмотреть результаты вывода программы}
end. {КОНЕЦ!}

Последний раз редактировалось Serge_Bliznykov; 20.06.2011 в 16:07. Причина: косметические улучшения по выводу результатов...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2011, 15:58   #4
2517
 
Регистрация: 20.06.2011
Сообщений: 4
По умолчанию

вот спасибо Вам всем огромное и человеческое!
2517 вне форума Ответить с цитированием
Старый 20.06.2011, 16:04   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Цитата:
Сообщение от 2517 Посмотреть сообщение
В массиве N, состоящего из 26 элементов...
N состоит из 26 элементов?!

А серьёзно — надо бы ещё ситуацию переполнения обработать (усёк!).

Последний раз редактировалось Sasha_Smirnov; 20.06.2011 в 16:33. Причина: усёк.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 20.06.2011, 16:09   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
N состоит из 26 элементов?!
Видимо N это имя массива.

Какого переполнения?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.06.2011, 16:14   #7
2517
 
Регистрация: 20.06.2011
Сообщений: 4
По умолчанию

Да, N - это имя массива.
Про переполнение ни слова.
2517 вне форума Ответить с цитированием
Старый 20.06.2011, 16:28   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

2Serge_Bliznykov
а если Minindex =26
то после выполнения
Код:
 P := 1;
   for i:=MinIndex+1 to N  do P := P*M[i];
p =1; что неверно!должно быть P=0; так что
я бы добавил
Код:
if MinIndex = 26 then p:=0;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 20.06.2011, 16:31   #9
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Да это я на Integer загляделся!
Цитата:
Extended (занимает 10 байт, диапазон от 3.4E-4932 до 1.1E+4932 по модулю, точность19-20 значащих цифр).
При таком размахе, конечно, переполнение маловероятно.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 20.06.2011, 16:40   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
p =1; что неверно!должно быть P=0; так что
ну, это спорно...

я бы тогда предложил сделать так:
Код:
   {заменим минимальный элемент произведением, если минимальный не последний}
   if MinIndex<N then 
        M[MinIndex]  := P;

Цитата:
Сообщение от Sasha_Smirnov
А серьёзно — надо бы ещё ситуацию переполнения обработать.
Красавчик! В корень зрите! Отлично!
А я прошляпил... в первом варианте (к счастью, он пробыл на форуме всего пару минут, поэтому его вряд ли кто-то успел увидеть) я массив сделал целочисленным.
и тут же улетел в переполнение...
А что Вы хотите, 10 в степени 15 ( это в среднем примерно) - это весьма большое число. и в Logint явно не лезет.
А если числа сделать не от 1 до 10, а до 1000 (а можно и более)... да ещё минимальное окажется первым.. 1000 ^ 25 - число с 75 нулями....
впрочем, используемый в примере тип данных extended имеет диапазон значений
Цитата:
extended 3.4e-4932..1.1e4932 19-20 0
10 в степени 4932 (этого должно хватить, если, конечно, не делать исходные числа больше 10 в двухсотой степени
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск минимального элемента в stringgrid igabenu Общие вопросы Delphi 3 27.02.2011 19:03
Поиск минимального элемента в перевернутом массиве Kovax Паскаль, Turbo Pascal, PascalABC.NET 11 27.02.2011 14:38
Поиск минимального элемента в матрице F1eCSo Помощь студентам 0 04.02.2010 17:20
Поиск минимального и максимального элемента в двухмерном массиве. Dem6 Общие вопросы Delphi 10 30.11.2009 20:22
Нахождение минимального элемента в массиве [Паскаль] pionerka Помощь студентам 4 03.11.2009 16:02