Требуется помощь в решении задачи на паскале

Тема в разделе "Pascal and Delphi", создана пользователем Bibinur, 7 дек 2012.

  1. Bibinur

    Bibinur Гость

    Доброй всем ночи.
    Требуется помощь в решении задачи на паскале, задача состоит из 4х частей:
    Часть I. ПОЛУЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
    “Вычислить значения 30 элементов одномерного целочисленного массива ‹R› в интервале (-10 ,6) c использованием генератора случайных чисел”
    Часть 2. ВЫЧИСЛЕНИЕ ПАРАМЕТРА МАССИВА
    “Вычислить сумму четных по номеру элементов последней четверти массива”
    Часть 3. ОПРЕДЕЛЕНИЕ ПАРАМЕТРА МАССИВА
    “Определить наибольший элемент среди принадлежащих [a/2; b/2] элементов первой трети массива”
    Часть 4. УПОРЯДОЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
    “Упорядочить нечётные по номеру элементы второй четверти массива по возрастанию квадратов значений”
    первые 3 части решили, 4 не могу, помогите кто чем может

    Program Work_4;
    const
    N=30;
    a=-10;
    b=6;
    Var
    s,max,z:real;
    i,k,t: integer;
    R:array[1..N] of Real;
    Begin
    s:=0;
    Randomize;
    for i:=1 to n do
    R:=a+Round((b-a)*Random(100)/100);
    Writeln('vyvod elementov massiva:');
    for i:=1 to N do Write(R:4);
    Writeln;
    k:=trunc(N/4);
    k:=N-k;
    for i:=k to N do
    if (i mod 2=0) then
    s:=s+R;
    writeln ('s=',s);
    t:=trunc(N/3);
    max:=-999999;
    for i:=1 to t do
    if (R>=(a/2)) and (R<=(b/2)) and (R>max) then
    max:=R;
    if max<>-999999 then
    for i:=1 to t do
    if r=max then
    begin
    writeln ('i=',i,' max=',max);
    break;
    end;

    end.
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Вот. Первые 3 я тоже подправил. Там несоответствия с условием задания. (см. комментарии)
    Код (Delphi):
    program Work_4;

    const
    N = 30;
    A = -10;
    B = 6;
    var
    s,max,min, z,z2: Integer;
    i,j,k,k2: integer;
    R: array[1..N] of Integer; //!! В задании был ЦЕЛОЧИСЛЕННЫЙ массив !!
    begin
    Writeln('***** Programma obrabotki odnomernogo massiva ********');
    Writeln('  *****  iz ',N,' celochislennyh elementov  *****');
    Writeln;

    { Часть I. ПОЛУЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
    30 элементов одномерного целочисленного массива ‹R› в интервале (-10 ,6)
    c использованием генератора случайных чисел  }


    Randomize;
    Writeln('Vyvod elementov massiva:');
    z := B - A; // вычисляем диапазон генерации случайных чисел (длина отрезка)
    // Random будет выдавать от 0 до 16

    for i:=1 to N do
    begin
    R[i] := Random(z) + A; //Вычисляем элемент (смещение +A дает нам интервал от -10 до 6)

    if (i mod 5 = 0) then  // Выводим (по 5 элементов в строку, через знак табуляции #9)
    Writeln('R[',i,'] = ',R[i],';')
    else
    Write('R[',i,'] = ',R[i],';',#9);
    end;
    Writeln;

    { Часть 2. ВЫЧИСЛЕНИЕ ПАРАМЕТРА МАССИВА
    Вычислить сумму четных по номеру элементов последней четверти массива }


    k := N div 4; //последняя четверть массива
    k := N - k;

    s := 0;
    for i:=k to N do
    begin
    if (i mod 2 = 0) then
    s := s + R[i];
    end;

    Writeln ('Summa chetnyh elementov v diapazone R[',k,'] - R[',N,'] = ',s);
    Writeln;

    { Часть 3. ОПРЕДЕЛЕНИЕ ПАРАМЕТРА МАССИВА
    Определить наибольший элемент среди принадлежащих [a/2; b/2] элементов
    первой трети массива }


    k := N div 3; // 1-я треть массива

    max := -999999;
    z := 0;
    for i:=1 to k do
    if ((R[i] >= (A/2)) and (R[i] <= (B/2)) and (R[i] > max)) then
    begin
    max := R[i]; // запоминаем максимальный элемент
    z := i;   // запоминаем индекс максисмального элемента
    end;

    if (z = 0 ) then
    Writeln ('Znacheniy udovletvoryaushih usloviyu v diapazone R[1] - R[',k,'] ne obnaruzeno')
    else
    Writeln ('Naibolshiy element v diapazone R[1] - R[',k,']: R[',z,'] = ',R[z]);
    Writeln;

    { Часть 4. УПОРЯДОЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
    Упорядочить нечётные по номеру элементы второй четверти массива
    по возрастанию квадратов значений }


    k := N div 4; // 2-я четверть массива
    k2 := N div 2;

    Writeln ('Znacheniya nechetnyh elementov v diapazone R[',k,'] - R[',k2,'] do sortirovki:');
    Writeln ('*Element*',#9,'*kvadrat znacheniya*');
    for i:=k to k2 do
    if (i mod 2 <> 0) then
    Writeln('R[',i,'] = ',R[i],#9,(R[i]*R[i]));


    for i := k to k2-1 do  // !! до предпоследнего элемента. Он обработается во внутреннем цикле
    begin
    if (i mod 2 = 0) then // если четный элемент, переходим к следующей итерации
    Continue;

    z := 0;
    min := 10000000;      //ищем минимальный элемент
    for j := i to k2 do
    begin
    if (j mod 2 = 0) then // если четный, переходим к следующей итерации
    Continue;

    if ((R[j]*R[j]) < min) then
    begin
    min := R[j]*R[j];
    z := j;  //находим индекс минимального элемента
    end;
    end;
    s := R[i];   // временно запомнили
    R[i] := R[z]; // вставляем минимальный
    R[z] := s;   // текущий на его место
    end;

    Writeln;
    Writeln ('Znacheniya nechetnyh elementov v diapazone R[',k,'] - R[',k2,'] posle sortirovki:');
    Writeln ('*Element*',#9,'*kvadrat znacheniya*');

    for i:=k to k2 do
    if (i mod 2 <> 0) then
    Writeln('R[',i,'] = ',R[i],#9,(R[i]*R[i]));

    Writeln;
    Write('Zakonchili. Nazmite <ENTER> dlya vihoda iz programmy');
    Readln;
    end.
     
Загрузка...
Похожие Темы - Требуется помощь решении
  1. MissPersefona
    Ответов:
    0
    Просмотров:
    797
  2. piranya85
    Ответов:
    0
    Просмотров:
    1.844
  3. panda8
    Ответов:
    0
    Просмотров:
    1.276
  4. Andrey Kha
    Ответов:
    0
    Просмотров:
    28
  5. vsetkin
    Ответов:
    0
    Просмотров:
    61

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