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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 15:57   #1
миляуша2013
Пользователь
 
Аватар для миляуша2013
 
Регистрация: 11.03.2013
Сообщений: 10
По умолчанию Turbo Pascal

Разработка в среде Turbo Pascal программы поиска двух ближайших элементов в массиве.
Дан целочисленный массив размера N.
1. Найти номера двух ближайших элементов из этого массива (то есть элементов с наименьшим модулем разности) и вывести эти номера в порядке возрастания.
2. Упорядочить нечетные по значению элементы второй четверти массива по убыванию обратных значений.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.

Буду очень признательна за помощь..

Последний раз редактировалось миляуша2013; 11.03.2013 в 19:11.
миляуша2013 вне форума Ответить с цитированием
Старый 11.03.2013, 20:25   #2
PavelDD
Пользователь
 
Регистрация: 15.02.2013
Сообщений: 35
По умолчанию

У Вас что-нибудь есть по этой задаче?

Вот первая часть:

Код:
     write('Введите размер массива:  ');read(n);
     for i:=1 to n do begin
         a[i]:=random(100);
         write(a[i]:4);
     end;
     k:=abs(a[1]-a[2]);
     for i:=1 to n-1 do
         if k>(a[i]-a[i+1])then k:=a[i]-a[i+1];
     writeln;
     write('Номера: ',i,', ',i+1);
А со вторым объясните по подробнее.

Последний раз редактировалось Stilet; 11.03.2013 в 21:53.
PavelDD вне форума Ответить с цитированием
Старый 11.03.2013, 20:48   #3
миляуша2013
Пользователь
 
Аватар для миляуша2013
 
Регистрация: 11.03.2013
Сообщений: 10
По умолчанию

к сожалению у меня кроме этих данных больше ничего нет..а что со второй частью?и как эту задачу понимать?объясните пожалуйста,если не сложно..
миляуша2013 вне форума Ответить с цитированием
Старый 11.03.2013, 20:52   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Наверное, всё-таки так :
Код:
    ReadLn (n);

        for i := 1 to n do
                Read (a[i]);

        p := 1;
        for i:=1 to n-1 do
                if k < a[i]-a[i+1] then begin
                        k:=a[i]-a[i+1];
                        p := i
                end;

        WriteLn (p, ' ', p+1)
Poma][a вне форума Ответить с цитированием
Старый 11.03.2013, 20:59   #5
миляуша2013
Пользователь
 
Аватар для миляуша2013
 
Регистрация: 11.03.2013
Сообщений: 10
По умолчанию

спасибо вам большое..выручаете..
миляуша2013 вне форума Ответить с цитированием
Старый 11.03.2013, 21:07   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Давайте разбираться с заданием #2..
Цитата:
Упорядочить нечетные по значению элементы второй четверти массива по убыванию обратных значений.
Тоесть : надо упорядочить числа от i := n div 4 до n div 2
Обратные значения это (как я понял) -1*a[i]
Ну а нечетные - это if Odd (i) then ...

Попробуйте сделать хоть что-то сами, а мы с радостью Вам поможем
Poma][a вне форума Ответить с цитированием
Старый 13.05.2013, 17:47   #7
миляуша2013
Пользователь
 
Аватар для миляуша2013
 
Регистрация: 11.03.2013
Сообщений: 10
Радость

в общем вот
Код:
program H_2o;
uses crt;
var
a: array[1..100] of integer;
i,j, n,x,index,del_min,del,v: integer;
begin
randomize;
write ('Введите размер массива до  100');
readln (n);
writeln ('Массив');
for i:=1 to n do
    begin
    a[i] := random(71);
    write(a[i]:4);
    end;
writeln;
index:=1;
del_min:=abs(a[1]-a[2]);
for i:=2 to n-1 do
begin
  del:= abs(a[i]-a[i+1]);
    if del < del_min then
     begin
       del_min:=del;
       index:=i;
     end;
 end;
Writeln('1)Индексы двух ближайших элементов', index:4,(index+1):4);
v:=n div 4;
for i:=v+1 to 2*v-1 do
for j:=i+1 to 2*v do
if(a[i] mod 2 =1)and(a[j] mod 2 =1)and (1/a[i]<1/a[j]) then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
Writeln('2) Массив после сортировки ');
for i:=1 to n do  write(a[i]:4);
readln ;
end.

Последний раз редактировалось Stilet; 13.05.2013 в 19:52.
миляуша2013 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
paskal abc,turbo paskal andrei57 Паскаль, Turbo Pascal, PascalABC.NET 3 08.09.2011 05:33
Free Paskal и Turbo Paskal Polly~Sunbeam Паскаль, Turbo Pascal, PascalABC.NET 7 18.04.2011 16:00
Turbo Paskal 7.0 Malvinka25 Помощь студентам 1 18.02.2010 13:03
Turbo Paskal Dimon.ru Помощь студентам 1 04.01.2009 17:54