Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с массивами

86K
21 ноября 2013 года
AZelensky
11 / / 14.11.2013
Задана последовательность из N вещественных чисел. Определить порядковый номер того из них, которое ближе всего к заданному числу.

Количество чисел в массиве и максимальное число в массиве нужно задать через write или writeln
72K
27 ноября 2013 года
GNDragonfly
16 / / 24.05.2012
Вот консольная программа, написанная в Delphi 2010. На чистом Pascal (Turbo, Borland 7.0) не проверял, но 99,9%, что заработает с небольшими изменениями (убрать подключение модуля SysUtils и удалить ключневые слова блока try..except). Если не нравится работать с динамическим массивом - описывайте статический
Код:
program PrgIndex;
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  a: array of real; // динамический массив
  count, max, index: integer; // Кол-во чисел и макс число в массиве, порядковый номер
  r, rr: real; // заданное число, близкий к заданному числу элемент массива
  i: integer;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    randomize;
    write('Vvedide kol-vo elementov massiva: ');
    readln(count);
    SetLength(a, count);
    write('Vvedite max chislo v massive: ');
    readln(max);
    for i := 0 to count - 1 do
    begin
      if random(10) < 5 then
        a[i] := (random(max) + random) * (-1)
      else
        a[i] := random(max) + random;
    end;
    write('Vvedite zadannoe chislo: ');
    readln(r);
    writeln('Sozdannii massiv:');
    for i := 0 to count - 1 do
      write(a[i]:10:3);
    rr := a[0];
    index := 0;
    for i := 1 to count - 1 do
      if abs(a[i]-r)<abs(rr-r) then
      begin
        rr:= a[i];
        index:=i;
      end;
    writeln('');
    writeln('naibolee blizkoe chislo s indeksom: ',index);
    readln;
  except
    on E: Exception do
      writeln(E.ClassName, ': ', E.Message);
  end;

end.
Помните. Динамический массив начинается с 0, и вывод индекса числа в массиве в данном случае тоже в начинается с 0.
Если хотите, чтобы начальный элемент был первым, а не нулевым, то вывод можно написать в виде
 
Код:
writeln('naibolee blizkoe chislo s indeksom: ',index+1);
Также учтите, что элементы массива всегда будут меньше максимального (введенного вами) числа., т.к. 0<=random(const)<const и 0<=random<1.
Плюс к этому вряд ли вы когда-нибудь увидите целое число - в основном только дробные.
Нет в программе и защиты "от дурака". Если пользователь ввел 0 элементов массива и т.п.
Но доработать, чтоб было на 10 с плюсом - домашнее задание. Надо же, чтобы и вы что-нибудь делали, а не только выдающиеся отметки получали ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог