20.12.2012, 13:18 | #1 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Ошибки в программе
Код:
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 два элемента, наиболее близкие к среднему арифметическому всех элементов вектора. Элементы, расположенные между ними, отсортировать по возрастанию. |
20.12.2012, 13:18 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Моя рекомендация - обратите внимание на похожие темы Ошибка в программе Документация по программе |
20.12.2012, 14:22 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Витёк, а что, хотел бы я знать, вот это художество означает? Если это процедура или функция, то где ее заголовок? И какую задачу оно решает?
Код:
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; |
21.12.2012, 03:11 | #3 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
это все сравнивается с арифметическим,и находит 2 числа близко рвные и сортирует между ними)когда ее писал онах нормально работала, домой принес не выдает такую ошибку
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|