• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ошибки в программе

  • Автор темы Автор темы vitjok
  • Дата начала Дата начала

vitjok

Новые
Регистрация
29 Сен 2012
Сообщения
72
Реакции
0
Баллы
0
Ошибки в программе

Помогите Пожалуйста(((
Код:
program hj;
uses crt;
const
 n=10;
Type
 Tvect=array [1..n] of integer;
var
 V_max,V_min,i, j, n_min1, n_min2, temp :integer;
 vector:Tvect;
 b:boolean;
 arifmet:real;
 min1, min2, arifm, shift :real;

Procedure Arif(nn:integer; AA:Tvect; var arifm:real; var ar_b:boolean);
var
 i,min1,min2,max1,n,max2:integer;
 Sum:real;
begin
 n:=0;
 Sum:=0;
 for i:=1 to nn do
   begin
    Inc(n);
    Sum:=Sum+AA[i];
   end;
 if n=0 then
  begin
   arifm:=0;
   b:=false;
  end
 else
  begin
   arifm:=Sum/n;
   b:=true;
  end;
end;
begin
min1:=abs(vector[1] - arifmet);
 n_min1:=1;
 For i:=2 to n do
  begin
    shift:=abs(vector[i] - arifmet);
    if (shift < min1)
      then
        begin
          min2:=min1;
          n_min2:=n_min1;
          min1:=shift;
          n_min1:=i;
        end;
  end;
 For i:=1 to n do
   begin
     if ((vector[i] > min1) AND (vector[i] < min2))
       then
         min2:=vector[i];
   end;
              if (n_min1=(n_min2+1)) or (n_min1=(n_min2-1))
                then
                 writeln('there are no values between ', vector[n_min1] , ' AND', vector[n_min2] ,' to sort!' )
                else
                begin
                  begin
                    if n_min1>n_min2
                      then
                        begin
                        for i:=(n_min1-1) downto (n_min2+2) do
                          for j:=(n_min2+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                        end;
                    if n_min1<n_min2
                      then
                        for i:=(n_min2-1) downto (n_min1+2) do
                          for j:=(n_min1+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                  end;
                  end;


Begin
 Randomize;
 Writeln('Diapazon slych chisel:');
 Write('V_min= ');
 readln(V_min);
 Write('V_max= ');
 readln(V_max);
 writeln('______________________________');
 writeln;
 For i:=1 to n do
  begin
   vector[i]:=Random(V_max-V_min + 1) + V_min;
   write(vector[i],' ');
  end;
 writeln;
 writeln('______________________________');
 Writeln;
 Arif(n,vector,arifmet,b);
  writeln('Sred. arifm = ', arifmet);
 writeln('Sorting between: ',  vector[n_min1], ' AND ', vector[n_min2]);
 writeln;
 writeln('______________________________');
 writeln;
 For i:=1 to n do
  begin
   write(vector[i]:3);
  end;
 writeln;
 writeln('______________________________');
 end;
  end.

то для чего делалась:
Создать процедуру, определяющую в целочисленном векторе vectorn два элемента, наиболее близкие к среднему арифметическому всех элементов вектора. Элементы, расположенные между ними, отсортировать по возрастанию.
 
Витёк, а что, хотел бы я знать, вот это художество означает? Если это процедура или функция, то где ее заголовок? И какую задачу оно решает?
Код:
begin
min1:=abs(vector[1] - arifmet);
 n_min1:=1;
 For i:=2 to n do
  begin
    shift:=abs(vector[i] - arifmet);
    if (shift < min1)
      then
        begin
          min2:=min1;
          n_min2:=n_min1;
          min1:=shift;
          n_min1:=i;
        end;
  end;
 For i:=1 to n do
   begin
     if ((vector[i] > min1) AND (vector[i] < min2))
       then
         min2:=vector[i];
   end;
              if (n_min1=(n_min2+1)) or (n_min1=(n_min2-1))
                then
                 writeln('there are no values between ', vector[n_min1] , ' AND', vector[n_min2] ,' to sort!' )
                else
                begin
                  begin
                    if n_min1>n_min2
                      then
                        begin
                        for i:=(n_min1-1) downto (n_min2+2) do
                          for j:=(n_min2+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                        end;
                    if n_min1<n_min2
                      then
                        for i:=(n_min2-1) downto (n_min1+2) do
                          for j:=(n_min1+1) to (i-1) do
                            if vector[j]>vector[j+1]
                              then
                                begin
                                  temp:=vector[j];
                                  vector[j]:=vector[j+1];
                                  vector[j+1]:=temp;
                                end;
                  end;
                  end;
 
это все сравнивается с арифметическим,и находит 2 числа близко рвные и сортирует между ними)когда ее писал онах нормально работала, домой принес не выдает такую ошибку
 
Назад
Сверху