Очень нужна помощь....

Тема в разделе "Информатика", создана пользователем KreV, 9 мар 2010.

  1. KreV

    KreV New Member

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

    Не совсем то выводит, и модуль может как-то через abs надо.

    program proizvedenie;
    var q,z,w,i,n,i1,i2:integer;
    a:array[1..1000] of real;
    amin,amax,pr:real;
    begin
    assign (input,'input.txt');
    assign (output,'output.txt');
    reset (input);
    rewrite (output);
    readln(n);
    for i:=1 to n do read (a);
    amin:=a[1];
    for i:=1 to n do
    begin
    if a<amin then
    begin
    amin:=a;
    i1:=i;
    end;
    end;
    amax:=a[1];
    for i:=1 to n do
    begin
    if a > amax then
    amax:=a;
    i2:=i;
    end;
    if i2>i1 then begin
    q:=i1;
    w:=i2;
    end
    else begin
    q:=i2;
    w:=i1;
    end;
    if (w-q)>1 then begin
    pr:=1;
    for z:=q to w do
    pr:=pr*a[z];
    end
    else write (0);
    close (input);
    close (output);
    end.
     
  2. Boozy_Woozy

    Boozy_Woozy New Member

    Не гарантирую, что нет иных ошибок, но:
    for z:=q to w do
    pr:=pr*a[z];
    в этом случае перемножаются максимальный и минимальные элемент тоже. нужно
    for z:=q + 1 to w - 1 do
    pr:=pr*a[z];

    и, да, нужно с модулем
    if abs(a)<abs(amin) then
    begin
    amin:=a;

    if abs(a) > abs(amax) then
    а здесь где begin???
    amax:=a;
    i2:=i;

    и где вывод ответа?
     

Поделиться этой страницей

Наша группа