Главная » 2012»Апрель»11 » В новом массиве найти номер и значение минимального элемента.
19:49
В новом массиве найти номер и значение минимального элемента.
{ Сформировать линейный массив из 30 случайных чисел в интервале от -16 до 16. 1.Найти среднее арифметическое положительных элементов. 2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив. 3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран } uses crt; const MaxNcount=1000; // размер массива type TarrayInt=array [1..MaxNcount] of integer;
var a,b:TArrayInt; // массив элементов Acount:integer; // размер массива А Bcount:integer; // размер массива B
//1) заполнение массива случайными числами из заданного интервала; procedure CreateArray(var a:TArrayInt;Ncount:integer); var i:integer; begin randomize;// инициализация for i:=1 to ncount-1 do a[i]:=-16+random(16+16); end;
Function ShowArray(const a:TArrayInt;Ncount:integer):string; var s:string; i:integer; begin s:=''; for i:=1 to ncount-1 do if s='' then s:=s+inttostr(a[i]) else s:=s+','+inttostr(a[i]); result:=s; end; //1.Найти среднее арифметическое положительных элементов. Function GetAVGElementWhereElementPlus(var a:TArrayInt;Ncount:integer):real; var x,s,s1:integer; begin result:=0; s:=0; // считаем сумму s1:=0; // считаем кол-во элементов for x:=1 to Acount do if a[x]>0 then begin s:=s+a[x]; s1:=s1+1; end; if s1>0 then result:=s/s1; end;
//2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив. procedure CreateNewMassivWhereElementMod3(a:TArrayInt;acount:integer;var b:TArrayInt; var bcount:integer); var x:integer; begin bcount:=1; for x:=1 to Acount do begin if (a[x] mod 3)=0 then begin // Все элементы, кратные 3 bcount:=bcount+1; a[x]:=a[x]*2; //заменить удвоенным значением этих элементов b[bcount-1]:=a[x]; // и скопировать в новый массив. end; end; end; //3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран
Function GetFirstIndexMinElementFromArray(a:TArrayInt;acount:integer):integer; var x:integer; begin result:=1; for x:=1 to Acount do begin if a[result]>a[x] then result:=x; end; end;
Function ListIndexsMinElement(a:TArrayInt;acount:integer):string; var x:integer; minValue:integer; begin minValue:=a[GetFirstIndexMinElementFromArray(a,acount)]; result:=''; for X:=1 to acount do if a[x]=minValue then result:=result+inttostr(x)+#13+#10; end;
var MinIndex:integer;
begin clrscr; acount:=30; // Сформировать линейный массив из 30 случайных чисел в интервале от -16 до 16. CreateArray(a,acount); Writeln('Исходный массив '); Writeln(ShowArray(a,acount)); // 1.Найти среднее арифметическое положительных элементов. Writeln('среднее арифметическое положительных элементов', GetAVGElementWhereElementPlus(a,acount):8:3);
// 2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив. CreateNewMassivWhereElementMod3(a,acount,b,bcount); Writeln('Новый массив'); Writeln(ShowArray(b,bcount)); //3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран MinIndex:=GetFirstIndexMinElementFromArray(b,bcount); Writeln(' номер минимального элемента ',MinIndex); Writeln(' значение минимального элемента ',b[MinIndex]); // Writeln(ListIndexsMinElement(b,bcount)); // если минимальных номеров несколько end.