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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 19:40   #1
merch
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию [Pascal] Поиск минимума в одномерном массиве

Доброго времени суток!

Стояла такая задача:

Заданы два массива X=(2.5,2.88,3.01,3.1) и Y=(1.85,2.8,3.5,3.08,2.9).

Нужно выявить из каждого массива минимальный элемент *вроде вышло* и присвоить его к заданной переменной ( в данном случае C и D)

НЕ получается присвоить найденные минимумы к константам...

Вот моя программа:

Код:
program lab_4;
uses crt;
const
    n=4;
    k=5;
type
   TArray = array[1..n] of real;
   TArray1 = array[1..k] of real;
var
  i:integer;

{Êîïèðîâàíèå êîíñòàíòíîãî ìàññèâà â ïåðåìåííûé - 1}
procedure ArrayCopy_A(theFromArray: TArray; var theToArray: TArray);
var
   i: integer;
begin
   for i:= 1 to 4 do
      theToArray[i]:= theFromArray[i];
end;
{-----------------------------------------------}

{Êîïèðîâàíèå êîíñòàíòíîãî ìàññèâà â ïåðåìåííûé - 2}
procedure ArrayCopy_B(theFromArray: TArray1; var theToArray: TArray1);
var
   i: integer;
begin
   for i:= 1 to 5 do
      theToArray[i]:= theFromArray[i];
end;
{-----------------------------------------------}

{function FindMinElement(i,arr:integer):integer;}

const
   arr:TArray=(2.5,2.88,3.01,3.1);
   arr2:TArray1=(1.85,2.8,3.5,3.08,2.9);
   min=1;

var
   arr1: TArray;
   c,d:integer;
   arr3: TArray1;

begin
ArrayCopy_A(arr, arr1);


for i:=1 to n-1 do
if arr1[i]<arr1[min] then
arr1[i]:=min;

writeln(arr1[min]);
arr1[min]:=c;


begin
ArrayCopy_B(arr2, arr3);


for i:=1 to n-1 do
if arr3[i]<arr3[min] then
arr3[i]:=min;

writeln(arr3[min]);
arr3[min]:=d;
end;

writeln('   c=',c);
writeln('   d=',d);

end.
ПОдскажите как можно поступить, или упростить программу, например свести весь процесс нахождения минимума в один function.
merch вне форума Ответить с цитированием
Старый 17.05.2011, 20:37   #2
merch
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

Всё, сам сделал, получилось так :

Код:
program lab_4;
uses crt;
const
    n=4;
    k=5;
    h=0.5;
type
   TArray = array[1..n] of real;
   TArray1 = array[1..k] of real;
var
  i:integer;
  c,z,x,min,d:real;

{copy - 1}
procedure ArrayCopy_A(theFromArray: TArray; var theToArray: TArray);
var
   i: integer;
begin
   for i:= 1 to 4 do
      theToArray[i]:= theFromArray[i];
end;
{-----------------------------------------------}

{copy - 2}
procedure ArrayCopy_B(theFromArray: TArray1; var theToArray: TArray1);
var
   i: integer;
begin
   for i:= 1 to 5 do
      theToArray[i]:= theFromArray[i];
end;
{-----------------------------------------------}

const
   arr:TArray=(2.5,2.88,3.01,3.1);
   arr2:TArray1=(1.85,2.8,3.5,3.08,2.9);


var
arr1: TArray;
arr3: TArray1;

begin

ArrayCopy_A(arr, arr1);

writeln('    Naimenshie elementi massivov X and Y');
min:=arr1[1];

begin
for i:=1 to n do
if min>arr1[i] then
min:=arr1[i];
c:=min;
end;
write('                c=',c);



begin
ArrayCopy_B(arr2, arr3);

min:=arr3[1];
for i:=1 to k do
begin
if min>arr3[i] then
min:=arr3[i];
d:=min;
end;
writeln('   d=',d);


begin
    x:=0;
     writeln('                  ');
      writeln('                  ');
       writeln('     Znachenia funkcii Z (shag h=0.5)            ');
repeat
x:=x+h;


Z:=c*(x*x)+d;



write('     ',z);

until
x=2;


end;
end;
end.
И всё же если есть идеи как упростить, поделитесь пожалуста.
merch вне форума Ответить с цитированием
Старый 18.05.2011, 05:42   #3
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Либо задача в первом посте не полная (судя по вашему коду), либо, если вы это делали не сами, то значит над вами поиздевались...
Код:
uses crt;
const X:array [1..4] of real = (2.5,2.88,3.01,3.1);
      Y:array [1..5] of real = (1.85,2.8,3.5,3.08,2.9);
var i:integer;
    C,D:real;
begin
     clrscr;
{поиск минимального элемента в массиве X}
     C:=X[1];
     for i:=2 to 4 do
     if X[i]<C then C:=X[i];

{поиск минимального элемента в массиве Y}
     D:=Y[1];
     for i:=2 to 5 do
     if Y[i]<D then D:=Y[i];

{показываем массивы и значения переменных C и D}
     write('X=(');
     for i:=1 to 3 do write(X[i]:0:2,',');
     writeln(X[4]:0:2,')');

     writeln('C=',C:0:2);

     write('Y=(');
     for i:=1 to 4 do write(Y[i]:0:2,',');
     writeln(Y[5]:0:2,')');

     writeln('D=',D:0:2);
     readln;
end.
ПС: запись D:0:2 обозначает, что вещественное число из переменной D будет выведено на экран в нулевой позиции с двумя числами после запятой (это чтобы вещественные числа не выводились в виде 1.8500000000E+00).
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 18.05.2011, 08:57   #4
merch
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

Первый вариант делал сам, там действительно недоделано, остановился на втором варианте. Вообще у меня камнем приткновения были проблемы с вычислениями минимума в массиве. Ну никак не хотел параметр min(real) присваиваться к какой то из констант массива... поэтому и приходилось идти через дебри, и копировать сначало константный массив в переменный и уже там пытаться творить. ВЫшло конечно, но не очень рационально. Спасибо за твой вариант
merch вне форума Ответить с цитированием
Старый 18.05.2011, 09:00   #5
merch
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

и еще раз повторюсь, можно ли уписать процесс нахождения минимума в единую функцию (не процедуру) для обоих массивов. PS так же разные по величине массивы, никак не соображу как быть
merch вне форума Ответить с цитированием
Старый 18.05.2011, 09:17   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от merch Посмотреть сообщение
и еще раз повторюсь, можно ли уписать процесс нахождения минимума в единую функцию (не процедуру) для обоих массивов. PS так же разные по величине массивы, никак не соображу как быть
можно:
Код:
function findMin(m : array of real):real;
var t:real;
begin
     t:=m[1];
     for i:=2 to high(m) do
     if m[i]<t then t:=m[i];
     findMin := t;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 18.05.2011, 11:58   #7
merch
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

что то в abc High не определяется как встроенная функ-я, печаль. Ладно, все равно спасибо, буду думать
merch вне форума Ответить с цитированием
Старый 19.05.2011, 02:35   #8
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от merch Посмотреть сообщение
что то в abc High не определяется как встроенная функ-я, печаль. Ладно, все равно спасибо, буду думать
я на турбо писал - все ок , хорошо сделайте так:

Код:
function findMin(m : array of real; size:integer):real;
var t:real;
begin
     t:=m[1];
     for i:=2 to size do
     if m[i]<t then t:=m[i];
     findMin := t;
end;
где size - Это размер массива.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.

Последний раз редактировалось Sparkman; 19.05.2011 в 05:32.
Sparkman вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск минимума/максимума в массиве gwarthy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.01.2010 22:27
Поиск минимума в массиве. Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 17.09.2009 19:39
Помогите ПЛИЗ доделать задачу "поиск мах эл. в одномерном массиве" JNN Общие вопросы C/C++ 3 04.06.2009 09:23
Програма на Pascal: нахождение минимума с помощью процедуры в 2мерном массиве. Нужна помощь. Lopirion Помощь студентам 2 28.12.2008 21:23
Поиск в одномерном массиве Joxter Помощь студентам 6 13.12.2008 14:19