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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2012, 13:39   #1
GreenMan
 
Регистрация: 16.02.2012
Сообщений: 7
Вопрос задание про одномерный массив!

Задание:
Дан одномерный массив, состоящий из N вещественных элементов. Найти произведение элементов массива, расположенных между максимальным и минимальным элементами.
Формат входных данных:
В первой строке входного файла содержится число N (диапазон значений: от 1 до 100 включительно). Во второй строке даны N вещественных чисел через пробел. Гарантируется, что среди них только одно максимальное и одно минимальное.
Формат выходных данных:
Выведите в выходной файл искомое произведение с знаками после десятичной точки или , если между максимальным и минимальным элементом нет других элементов.

Примеры:
Вход
5
-3.12 -5.25 2.5 1.2 6
Выход
3.000
Вход
2
1.24 5.36
Выход
0.000
____________________________
Код:
var a:array[1..100] of real;
z,q,w,n,nomin,nomax,i:integer;
min,max,pr:real;
begin
  assign(input,'input.txt');
  assign(output,'output.txt');
  reset(input);
  rewrite(output);
  max:=a[1];
  min:=a[1];
  nomax:=1;
  nomin:=1;
  pr:=1;
  readln(n);
  for i:=1 to n do
    begin
      read(a[i]);
      if a[i]>max then
        begin
          max:=a[i];
          nomax:=i;
        end;
      if a[i]<min then
        begin
          min:=a[i];
          nomin:=i;
        end;
    end;
  if nomax>nomin
    then
    begin
      q:=nomin;
      w:=nomax;
    end
    else
    begin
      q:=nomax;
      w:=nomin;
    end;
  if (w-q)>1
    then
    begin
      for z:=q to w do
        begin
          read(a[q]);
          pr:=pr*a[q];
        end
    else
    write(0);
  close(input);
  close(output);
end.

_________________________________

Итак, сначала я читаю из файла количество чисел в массиве. Затем, под количество этих элементов создаю цикл, где каждое элемент массива сравниваю с максимальным или минимальным значением: если значение больше максимального, тогда я максимальному значению присваиваю это значение, а номеру максимального элемента - номер данного элемента. Почти так же с минимальным значением.
Мы узнали индекс максимального и минимального элементов. q - наименьший индекс по значению, w - максимальный. Если между этими элементами нет чисел, то мы пишем 0... А дальше у меня ступор... Как создать цикл, который будет читать элементы между q и w? Нужно каким-то образом вернуться в начало строки, чтобы заново начать читать. Как это сделать? Вот это место у меня неправильно:
for z:=q to w do
begin
read(a[q]);
pr:=pr*a[q];
end
Как его переделать? Заранее спасибо



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.02.2012 в 13:59.
GreenMan вне форума Ответить с цитированием
Старый 16.02.2012, 16:13   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
for z:=q to w do
begin
read(a[q]);
pr:=pr*a[q];
end
Как его переделать? Заранее спасибо
Вот так
Код:
pr:=1;
for z:=q to w do
  pr:=pr*a[z];
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 16.02.2012, 17:48   #3
GreenMan
 
Регистрация: 16.02.2012
Сообщений: 7
Печаль Спасибо!

Спасибоо... Я тормоз...
GreenMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler: задание про две строки Spay Помощь студентам 0 17.06.2011 19:27
задание про перемишение 2х кнопок TR1BUNAL Общие вопросы Delphi 5 08.06.2011 09:28
Задача про одномерный массив klaster Помощь студентам 6 14.01.2011 00:36
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
задачка про одномерный массив masil Паскаль, Turbo Pascal, PascalABC.NET 8 26.11.2008 21:05