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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 20:32   #1
Foxx
Форумчанин
 
Регистрация: 23.07.2009
Сообщений: 181
По умолчанию Ошибка в программе

Здравствуйте! Ниже приведен код программы. Возникает ошибка.
Код:
program Work_4;

{$APPTYPE CONSOLE}

  type vector=array[1..100] of integer;
  var vr,n,i,a,b:integer;
               h:vector;
             dev:text;
            name:string;
              ga:real;

procedure part_1(vr,n,a,b:integer; var h:vector);
  var i:integer;
begin
  if vr<>1 then randomize;
  for i:=1 to n do h[i]:=a+round((b-a)*random(100)/100);
end;

procedure part_2(n:integer; h:vector; var ga:real);
  var i,k:integer;
        s:real;
begin
  s:=0;
  k:=0;
  for i:=1 to n  div 4 do
   If ((a/2<=h[i]) and (h[i]<=b/2)) and (h[i]<>0) then
    begin
    s:=s+1/h[i];
    k:=k+1;
    end;
  if k>0 then
   if s<>0 then ga:=k/s
           else ga:=0
         else ga:=0;
end;

procedure part_3(n,a,b:integer; h:vector);
  var i,k,m:integer;
begin
  m:=-maxint; { Наибольшее значение переменной целого типа в Паскале = 32767 }
  k:=0;
  i:=2*n div 3+1;
  while i<=n do
   begin
    if abs(h[i])<m then
     begin
     m:=abs(h[i]);
     k:=i;
     end;
    i:=i+2;
   end;
  if k>0 then
   begin
   writeln(dev,'Наименьшее по модулю значение M = ',m:3);
   write(dev,'имеют H[',k:2,'] = ',h[k]:2);
   i:=k+1;
   while i<=n do
    begin
    if abs(h[i])=m then write(dev,'    H[',i:2,'] = ',h[i]:2);
    i:=i+2;
    end;
   writeln(dev);
   end
         else writeln(dev,'Нет нужных элементов');
end;

procedure part_4(n:integer; var h:vector);
  var i,j,k,buf:integer;
begin
  for i:=1 to n div 3-1 do
   if h[i]<0 then
    begin
    k:=i;
    for j:=i+1 to n div 3  do
     if h[j]<0 then
      if h[k]<h[j] then k:=j;
    buf:=h[i];
    h[i]:=h[k];
    h[k]:=buf;
    end;
end;

begin
  writeln('для вывода на экран введите con');
  writeln('для вывода на принтер введите prn');
  write('для вывода в файл введите его адрес: ');
  readln(name);
  assign(dev,name);
  rewrite(dev);
  write('введите вариант расчета Vr => ');
  readln(vr);
  if vr=0 then
   begin
   n:=20; a:=-3; b:=4;
   h[1] := 1; h[2] := 0; h[3] :=-3; h[4] := 2; h[5] := 0;
   h[6] :=-3; h[7] := 4; h[8] := 3; h[9] := 2; h[10]:= 0;
   h[11]:= 0; h[12]:= 4; h[13]:= 0; h[14]:=-2; h[15]:=-1;
   h[16]:=-1; h[17]:= 1; h[18]:= 4; h[19]:= 2; h[20]:= 3;
   end
          else
   begin
   write('Введите n,a,b => '); readln(n,a,b);
   part_1(Vr,n,a,b,h);
   end;
  writeln(dev,'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  writeln(dev,'Исходный массив:');
  for i:=1 to n do
   begin
   write(dev,h[i]:3);
   if i = n div 2 then writeln(dev);
   end;
  writeln(dev);
  writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  part_2(n,h,ga);
  writeln(dev,'Среднегармоническое Ga=',Ga:7:4);
  writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  part_3(n,a,b,h);
  writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  part_4(n,h);
  writeln(dev,'Упорядоченный массив:');
  for i:=1 to n do
   begin
   write(dev,h[i]:3);
   if i = n div 2 then writeln(dev);
   end;
  writeln(dev);
  writeln(dev,'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  close(dev);
end.
Вложения
Тип файла: rar прога.rar (85.3 Кб, 9 просмотров)
Foxx вне форума Ответить с цитированием
Старый 18.12.2011, 23:10   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Ошибки не возникает.
Прик вне форума Ответить с цитированием
Старый 18.12.2011, 23:14   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас какие то проблемы с доступом к файлу exe проекта, может он запущен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 00:48   #4
Foxx
Форумчанин
 
Регистрация: 23.07.2009
Сообщений: 181
По умолчанию

Разобрался. Все работает. Только вот русские буквы не правильно отображаются. Такое возникает также при копировании текста программы с Pascal ABC в Word при раскладке клавиатуры английской.
Изображения
Тип файла: jpg програ.jpg (17.7 Кб, 149 просмотров)
Foxx вне форума Ответить с цитированием
Старый 19.12.2011, 00:54   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

про русский язык в консоли говорилось тысячи раз.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в программе arthur_king Общие вопросы C/C++ 1 05.12.2011 16:32
Ошибка в программе C Renat21 Общие вопросы C/C++ 6 02.04.2011 18:00
Ошибка в программе Rusl_v Общие вопросы C/C++ 4 17.12.2010 16:24
Ошибка в программе larin1974 Помощь студентам 7 06.03.2010 20:44
Ошибка в программе на С++ Vikelf Помощь студентам 3 15.05.2009 15:05