Борода с массивом)

Тема в разделе "Pascal and Delphi", создана пользователем -, 30 мар 2010.

  1. Гость

    Задача: Для массива X из 50 элементов, имеющего положительные и отрицательные элементы, вычислить среднее арифметическое положительных элементов массива и заменить им максимальный элемент массива.

    Код (Delphi):
    program z_2;

    uses crt;

    const n=50;

    var X: array[1..n] of real;
    i, kol, max: byte;
    cp_ap, s: real;

    BEGIN
    clrscr;
    randomize;

    for i:=1 to n do
    X[i]:= 10-random(20);

    for i:=1 to n do
    writeln(X[i]:1:2);


    for i:=1 to n do
    begin
    if X[i]>0 then
    begin
    s:=s + X[i];
    kol:=kol+1;
    end;
    end;

    cp_ap:=s/kol;

    max:=1;

    for i:=1 to n-1 do
    begin
    if X[i+1] > X[i] then
    max:=i+1
    end;

    X[max]:=cp_ap;

    for i:=1 to n do
    writeln(X[i]:1:2);

    readkey;


    END.
    Проблема: Не определяет правильно максимальный элемент массива :KillMe:
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    тут ошыбка
    Код (Text):
     for i:=1 to n-1 do
    begin
    if X[i+1] > X[i] then //вы сравниваете два последовательных Х, а надо сравнивать Х и МАХ
    max:=i+1
    end;

    X[max]:=cp_ap;

    for i:=1 to n do
    writeln(X[i]:1:2);

    readkey;

    END.
    надо писать это:

    Код (Text):
    var kk:integer;
    ...
    ...
    ...
    max:=x[1];
    for i:=1 to n do
    if X[i] > max then
    begin
    max:=x[i];
    kk:=i;
    end;
    X[kk]:=cp_ap;
    for i:=1 to n do
    writeln(X[i]:8:2);
    readln;

    END.
     
  3. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    В принципе да, но какая разница?
    результат такойже.
     
  4. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Бесполезный проход цикла. Лишняя трата времени, памяти. Не рационально.
     
  5. Гость


    Здесь все вроде правильно.
    Например массив будет выглядеть так: 5 8 6 3 9 тогда
    max=1
    X[2]>X[1]? да! тогда max=2
    X[3]>X[2]? нет! тогда max не изменяется
    X[4]>X[3]? нет! тогда max не изменяется
    X[5]>X[4]? да! тогда max=5
    В итоге X[max] -это X[5] т.е. 9, а 9 самое большое число...
    Я так понимаю. Обьясните!!!
     
  6. Гость

    Спасибо забыл сказать))) Спасибо всем кто ответил!!!
     
  7. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    сказал тот, кто на моей памяти свой код не показывал ни разу=))
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    sax_ol - секретчик????)

    Добавлено: или даже так:
    sax_ol - секретчик????, etc.)))
     
  9. Гость

    Так...давайте не будем дискутировать на отвлеченные темы, а поможем нубу!!!
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    так вроде же всё сказали. Док вроде правильно написал, и ребята пояснили)
    А что за бред в посте #6?
    а например, массив будет выглядеть так: 5 8 6 3 4 тогда X[5]>X[4]? да! тогда max=5
    В итоге X[max] -это X[5] т.е. 4, а 8 самое большое число...

    Добавлено: так понятней?
     
  11. Гость

    Ага, теперь понял. Спс))
     

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