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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 21:38   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию Одномерный массив Delphi

Всем доброго времени суток! Помогите пожалуйста исправить ошибки.

Условие.
В одномерном массиве, состоящем из n вещественных элементов вычислить:
1) Сумма отрицательных элементов массива.
2) Произведение элементов массива расположенных между max и min элементами.
3) Упорядочить элементы массива по возрастанию методом простого выбора.


Код:
   1: begin
       s:=1;
       for i:=1 to n do
       if a[i]=0 then
       s:=s+a[i];
       writeln('s=',s)
      end;

   2: begin
       max:=a[1];
       min:=a[1];
       for i:=2 to n do
       if a[i]>max then max:=a[i];
       if a[i]<min then min:=a[i];
       p:=1;
       for i:=1 to n do
       if (a[i]>min) and (a[i]<max) then
       p:=p*a[i];
       writeln('p=',p)
      end;

   3: begin
       for i:=1 to n do
       if (a[i]<a[i+1]) and (a[i+1]<a[n]) then
       writeln('a[i]<a[i+1]<a[n]');
       writeln(a[i]<a[i+1]<a[n])
      end;
Начинающий програм вне форума Ответить с цитированием
Старый 14.12.2011, 21:43   #2
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:
1: begin
       s:=0;
       for i:=1 to n do
         if a[i]<0 then
           s:=s+a[i];
       writeln('s=',s)
      end;
viron вне форума Ответить с цитированием
Старый 14.12.2011, 21:48   #3
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:
2:
var
  maxIndex, minIndex: Integer;
begin
       max:=a[1];
       min:=a[1];

       for i:=2 to n do
       begin
         if a[i]>max then 
          begin
             max:=a[i]; 
             maxIndex:= i;
          end;
         if a[i]<min then 
            begin
                min:=a[i];  
                minIndex:= i;
            end;
       end;

       p:=1;
      
       if minIndex < maxIndex then
         for i:=minIndex to maxIndex do
           p:=p*a[i]
       else
          for i:=maxIndex to minIndex do
            p:=p*a[i]

       writeln('p=',p)
end;

Последний раз редактировалось viron; 14.12.2011 в 21:53.
viron вне форума Ответить с цитированием
Старый 14.12.2011, 21:50   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
  writeln(a[i]<a[i+1]<a[n] )
шо за бред?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 15.12.2011, 00:35   #5
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

знаю что бред, я просто не знаю как сделать 3 вариант. Подскажите пожалуйста как?
Начинающий програм вне форума Ответить с цитированием
Старый 15.12.2011, 00:45   #6
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Содя по коду
3.
Код:
begin
 for i:=0 to n do
  writeLn(a[i]),' ');
end;
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 15.12.2011, 05:04   #7
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Цитата:
3) Упорядочить элементы массива по возрастанию методом простого выбора.
Нашел один простенький алгоритм сортировки:

1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.

2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.

3. И так далее до предпоследнего элемента.

Код:
const
  SIZE = 10;

var
  Form1: TForm1;
  A: array[1..SIZE] of Integer;
  min: Integer;
  i, j: Integer;
  temp: Integer;
  Str: String;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Str:= '';

  // Запонение массива случайными числами
  for i:= 1 to SIZE do
    A[i]:= RandomRange(10, 90);

  for i:= 1 to SIZE do
    Str:= Str + IntToStr(A[i]) + '  ';

  Str:= Str + IntToStr(A[i]) + #13;

  for i:= 1 to SIZE-1 do
  begin
    min:= i;

    { Поиск минимального элемента в части от A[i+1] до A[SIZE]}
    for j:= i+1 to SIZE do
      if A[j] < A[min] then
        begin
          temp:= A[j];
          A[j]:= A[min];
          A[min]:= temp;
        end;

  end;


  for i:= 1 to SIZE do
    Str:= Str + IntToStr(A[i]) + '  ';

  Label1.Caption:= Str;

end;

end.

Последний раз редактировалось viron; 15.12.2011 в 05:10.
viron вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив Delphi Op1nG.Spark Помощь студентам 2 04.12.2011 13:00
Одномерный массив (Delphi) Fratello Помощь студентам 5 30.11.2011 23:42
одномерный массив в delphi d3[Z.oRg] Помощь студентам 7 18.06.2011 15:04
Delphi. Одномерный массив. Broken Angel Помощь студентам 2 09.04.2011 00:04
Delphi: Одномерный массив Sorinka Помощь студентам 3 28.04.2009 22:19