Приветствую Вас Гость | RSS

Delphi заготовки

Суббота, 23.11.2024, 09:52
Главная » 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.
Просмотров: 2251 | Добавил: NetSoftWare | Теги: Одномерный массив, Формирование массива в заданных диа, Элементы кратные числу, Целочисленные массивы | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: