Операция с массивом в Pascal
Часть кода, что сумел сделать:
Код:
program lab5;
const
m = 20;
var
arr: array[1..m] of integer;
max_num, min_num: integer;
max_index, min_index, f1: byte;
i: byte;
begin
{------------ В в о д м а с с и в а ----------------------------}
randomize;
for i := 1 to m do
begin
arr[i]:=-25+random(50);
write(arr[i]:3);
end; //Вводим рандомный массив
{------------- Проверка наличия отрицательных элементов -----------}
f1:=0; // Изначально счетчик = 0, так как мы еще ничего не нашли
for i:=1 to m do
if arr[i]<0 then // Проверяем каждый элемент на отрицательность
inc(f1); // Если нашли отрицательный - увеличиваем счетчик на единицу
writeln('');
writeln('Количество отрицательных элементов=',f1);
if f1>0 then
Begin
writeln('B массиве есть отрицательный элемент, данные верны');
{----------- М а к с и м а л ь н о е з н а ч е н и е ----------}
max_index := 1;
max_num := arr[1];
for i := 2 to m do
if arr[i] > max_num then begin
max_index := i;
max_num := arr[i];
end;
writeln;
writeln('Максимальное значение : ', max_num, ' | Позиция: ', max_index);
{----------- М и н и м а л ь н о е з н а ч е н и е ------------}
min_index := 1;
min_num := arr[1];
for i := 2 to m do
if arr[i] < min_num then begin
min_index := i;
min_num := arr[i];
end;
writeln;
writeln('Минимальное значение: ', min_num, ' | Позиция: ', min_index);
writeln ();
readln
end
else writeln('B массиве нет отрицательных элементов, введите данные заново')
end.
const
m = 20;
var
arr: array[1..m] of integer;
max_num, min_num: integer;
max_index, min_index, f1: byte;
i: byte;
begin
{------------ В в о д м а с с и в а ----------------------------}
randomize;
for i := 1 to m do
begin
arr[i]:=-25+random(50);
write(arr[i]:3);
end; //Вводим рандомный массив
{------------- Проверка наличия отрицательных элементов -----------}
f1:=0; // Изначально счетчик = 0, так как мы еще ничего не нашли
for i:=1 to m do
if arr[i]<0 then // Проверяем каждый элемент на отрицательность
inc(f1); // Если нашли отрицательный - увеличиваем счетчик на единицу
writeln('');
writeln('Количество отрицательных элементов=',f1);
if f1>0 then
Begin
writeln('B массиве есть отрицательный элемент, данные верны');
{----------- М а к с и м а л ь н о е з н а ч е н и е ----------}
max_index := 1;
max_num := arr[1];
for i := 2 to m do
if arr[i] > max_num then begin
max_index := i;
max_num := arr[i];
end;
writeln;
writeln('Максимальное значение : ', max_num, ' | Позиция: ', max_index);
{----------- М и н и м а л ь н о е з н а ч е н и е ------------}
min_index := 1;
min_num := arr[1];
for i := 2 to m do
if arr[i] < min_num then begin
min_index := i;
min_num := arr[i];
end;
writeln;
writeln('Минимальное значение: ', min_num, ' | Позиция: ', min_index);
writeln ();
readln
end
else writeln('B массиве нет отрицательных элементов, введите данные заново')
end.
Процедуры и функции использовать нельзя.
Увы, с массивами у меня пока не очень, поэтому и прошу помощи
, то необходимости выводить кол-во отрицательных нет.
Один из вариантов решения задачи:
Код:
program xlx;
var
x,y : array[1..100] of integer;
i,j,n,min,max : byte;
tmp : integer;
b : boolean;
begin
randomize;
write('n = ');
readln(n); //вводим размер массива х
min := 1;
max := 1;
b := false; //флаг наличия отрицательных элементов
for i := 1 to n do
begin
x[i] := random(100)-50; //вводим рандомные значения для элементов х
writeln('a[',i,'] = ',x[i]); //выводим элемент х
if(x[i] < x[min]) then min := i; //сравниваем элемент с минимумом
if(x[i] > x[max]) then max := i; //сравниваем элемент с максимумом
if(x[i] < 0) then b := true; //проверяем элемент на отрицательность
end;
writeln('max = ',x[max],'; indexofmax = ',max); //вывод максимума и его индекса
writeln('min = ',x[min],'; indexofmin = ',min); //вывод минимума и его индекса
if((not b) or (min = max)) //если нет отрицательных элементов или все элементы равны
then //выводим сообщение и закрываем программу
begin
writeln('have no negative elements or all elements are equal');
readln;
halt;
end;
if(min > max) //для удобства в следующем цикле
then
begin
tmp := min;
min := max;
max := tmp;
end;
writeln;
j := 1;
for i := min to max do //заполняем массив y отрицательными элементами х между минимумом и максимумом
if(x[i] < 0)
then
begin
y[j] := x[i]; //копирование значения
inc(j); //переход к следующему элементу y
end;
dec(j); //возвращаемся к кол-ву элементов y
for i := 1 to j-1 do //сортировка массива y
for n := i+1 to j do
if(y[i] < y[n])
then
begin
tmp := y[i];
y[i] := y[n];
y[n] := tmp;
end;
writeln('size of y = ',j);
for i := 1 to j do
writeln('y[',i,'] = ',y[i]);
readln;
end.
var
x,y : array[1..100] of integer;
i,j,n,min,max : byte;
tmp : integer;
b : boolean;
begin
randomize;
write('n = ');
readln(n); //вводим размер массива х
min := 1;
max := 1;
b := false; //флаг наличия отрицательных элементов
for i := 1 to n do
begin
x[i] := random(100)-50; //вводим рандомные значения для элементов х
writeln('a[',i,'] = ',x[i]); //выводим элемент х
if(x[i] < x[min]) then min := i; //сравниваем элемент с минимумом
if(x[i] > x[max]) then max := i; //сравниваем элемент с максимумом
if(x[i] < 0) then b := true; //проверяем элемент на отрицательность
end;
writeln('max = ',x[max],'; indexofmax = ',max); //вывод максимума и его индекса
writeln('min = ',x[min],'; indexofmin = ',min); //вывод минимума и его индекса
if((not b) or (min = max)) //если нет отрицательных элементов или все элементы равны
then //выводим сообщение и закрываем программу
begin
writeln('have no negative elements or all elements are equal');
readln;
halt;
end;
if(min > max) //для удобства в следующем цикле
then
begin
tmp := min;
min := max;
max := tmp;
end;
writeln;
j := 1;
for i := min to max do //заполняем массив y отрицательными элементами х между минимумом и максимумом
if(x[i] < 0)
then
begin
y[j] := x[i]; //копирование значения
inc(j); //переход к следующему элементу y
end;
dec(j); //возвращаемся к кол-ву элементов y
for i := 1 to j-1 do //сортировка массива y
for n := i+1 to j do
if(y[i] < y[n])
then
begin
tmp := y[i];
y[i] := y[n];
y[n] := tmp;
end;
writeln('size of y = ',j);
for i := 1 to j do
writeln('y[',i,'] = ',y[i]);
readln;
end.
Не сразу понял, но.. Можно обойтись без b : boolean, а вместо проверки всех элементов на отрицательность, проверить является ли отрицательным x[min]. Удачного познавания)
Огромное спасибо. Буду разбирать и познавать массивы... еще раз спасибо)