Как найти отрицательные элементы массива паскаль

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
procedure Vvod(var v:mas;var x:byte);
var i:byte;
begin
repeat
write('Размер массива =');
readln(x);
until x in [1..nmax];
writeln('Введите ',x,' элементов массива:');
for i:=1 to x do
 begin
  write('el[',i,']=');
  readln(v[i]);
 end;
write('Нажмите Enter...');
readln;
end;
procedure Vyvod(var v:mas;x:byte);
var i:byte;
begin
for i:=1 to x do
write(v[i],' ');
writeln;
writeln;
write('Нажмите Enter...');
readln;
end;
procedure PervOtr(v:mas;x:byte; var p:integer;var i1:byte);
var i:byte;
begin
i1:=0;
for i:=x downto 1 do
if v[i]<0 then
  begin
   p:=v[i];
   i1:=i;
  end;
if i1=0 then writeln('В масиве нет отрицательных элементов')
else writeln('Первый отрицательный элемент=',p,' его номер=',i1);
write('Нажмите Enter...');
readln;
end;
procedure Summa(v:mas;x:byte;var sm:integer);
var i:byte;
begin
sm:=0;
for i:=1 to x do
if v[i]<0 then sm:=sm+v[i];
writeln('Сумма отрицательных=',sm);
write('Нажмите Enter...');
readln;
end;
procedure Zamena(var v:mas;x:byte;sm:integer;i1:byte);
var i:byte;
begin
for i:=1 to i1-1 do
v[i]:=sm;
Vyvod(v,x);
end;
var a:mas;
    n,ip:byte;
    p,sm:integer;
    c:char;
begin
clrscr;
repeat
clrscr;
writeln('Выберите действие:');
writeln('1-ввод массива');
writeln('2-вывод массива');
writeln('3-первый отрицательный элемент');
writeln('4-сумма отрицательных');
writeln('5-замена элементов до первого отрицательного суммой');
writeln('другое - выход');
readln(c);
case c of
'1':Vvod(a,n);
'2':begin
    writeln('Исходный массив:');
    Vyvod(a,n);
    end;
'3':PervOtr(a,n,p,ip);
'4':Summa(a,n,sm);
'5':begin
    writeln('Массив после замены элементов:');
    Zamena(a,n,sm,ip);
    end;
else exit;
end;
until not(c in ['1'..'5']);
end.

Урок 23. Поиск элемента в массиве

Просмотров 3.1к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»

На этом уроке рассмотрим алгоритмы поиска элемента в одномерном массиве. Эти алгоритмы очень похожи на обработку последовательностей (поиск, выборка и т.д.).

Отличие заключается в том, что в массиве одновременно доступны все его компоненты. Такой доступ называется параллельным.

Рассмотрим несколько примеров.

Пример 1. Найти номера четных элементов.

Решение.

Для нахождения четных элементов необходимо просмотреть весь массив, и если будут попадаться четные элементы, то нужно выводить их на экран. Напишем процедуру, которая принимает в качестве входного параметра массив и выводит на экран нужные элементы.

Procedure Solve(m : myarray);
Var i: Integer;
Begin
   For i:=1 To n Do 
      If m[i] Mod 2 = 0 Then Write(i:5);{если элемент четный, то вывести на экран}
End;

Пример 2. Есть ли отрицательный элемент в массиве?

Решение.

Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип.

Начинаем с первого элемента (i = 1).

Пока не просмотрен последний (i<=n) и не найден отрицательный (m [i]>=0), будем переходить к следующему (inc (i)).

Таким образом, мы закончим просмотр в одном из двух случаев:

  • первый — просмотрели все элементы и не нашли отрицательный, тогда i>n;
  • второй — нашли нужный, при этом i<=n.

Напишем функцию, значение которой истина (True), если такой элемент есть, и ложь (False), если его нет.

Function Controll (m: myarray): Boolean;
Var i : Integer;
Begin
   i := 1;
   While (i<=n) And (m[i]>0) Do Inc(i);
   Control1:=(i<=n)
End;

Пример 3. Найти номер последнего отрицательного элемента массива.

Решение.

Последний отрицательный — это первый отрицательный элемент, если начать просмотр с конца.

Если очередной элемент не является отрицательным, то нужно уменьшать значение текущего индекса, пока он не станет меньше номера первого элемента или не будет найден отрицательный элемент.

Таким образом, можно модифицировать предыдущую функцию. Но поскольку надо найти номер элемента, тип результата будем целым.

Договоримся, что если такого элемента нет, то значение функции будет равно 0.

Function Control2 (m: myarray): Integer;
Var i : Integer;
Begin
   i:=n;
   While (i>=1) And (m[i]>0) Do Des(i);
   If i<1 Then Control2:=0
          Else Control2:=i;
End;

Вы рассмотрели алгоритмы на поиск и выборку элементов в массиве.

На следующем уроке продолжим знакомиться с алгоритмами  обработки одномерных массивов.

Напишем программу, которая определяет наличие в массиве отрицательных чисел.

 Определение наличия в массиве отрицательных чисел.


program massiv8;
uses crt;
const N=10;
type x=array [1..N] of integer;
var a:x;
i:integer;
k:integer;
begin
clrscr;
randomize;
for i:=1 to N do
begin
a[i]:= -100+random (201);
write (A[i]:5)
end;
writeln;
k:=0;
for i:=1 to N do
if a[i] <0 then="" li="">
inc (k);
if k>0 then
begin
writeln ('В массиве есть отрицательные элементы');
writeln ('Количество отрицательных элементов = ',k:5);
end
else
writeln ('В массиве нет отрицательных элементов');
readln
end.


В строке №7 записываем переменную для хранения количества отрицательных элементов.

Строка №13-№14 генерируем случайные числа и выводи их на экран.

В строке №17 присваиваем «K» первоначальное значение равное 0.

В строке №19 записываем условие: если значение элемента массива (т.е. если сгенерированное число) меньше 0, тогда увеличиваем переменную «K» на единицу (строка №20).

В строке №21 записываем условие: если K>0 (т.е. если количество отрицательных чисел больше 0), тогда выводим на экран 2 сообщения (строка №23 и №24). В обратном случае (строка №26), выводим другое сообщение (строка №27).

nakhozhdenie otricateljnihkh ehlementov massiva

nakhozhdenie otricateljnihkh ehlementov massiva.


Предыдущая статья : Подсчет количества четных элементов в массиве.

Оглавление : Уроки Паскаль. Массивы.

Следующая статья : Нахождение номера отрицательного элемента в массиве.


Поиск элемента в массиве паскаль

Комментарии :  0        Просмотры :  18224

Поиск элемента в массиве паскаль

Мы знаем , что массив содержит в себе упорядоченные элементы данных , которые имеют свои значения и адреса.

Во многих задачах нам потребуется обрабатывать подобные массивы. Например : ( поиск наибольшего элемента , наименьшего элемента и т.п ). Алгоритм поиска элемента в массиве мы разберем в данном уроке.

Поиск максимального элемента в массиве

Чтобы разобраться в том , как осуществляется поиск элемента в массиве паскаль , мы разберем такую задачу :

Условие : С клавиатуры вводятся 5 целых чисел , требуется найти наибольший элемент ( наибольшее число ) и вывести его на экран.

Решение :

Код

program mypascal;
var
a: array[1..5] of integer;
i,max:integer;
begin

for i:= 1 to 5 do
read(a[i]);

max:= a[1];

for i:= 2 to 5 do
if ( a[i] > max ) then
max:= a[i];

writeln(max);

end.

Разбор :

В блоке var объявляем массив «а». Диапазон индексов от 1 до 5 , так как максимальное количество введенных чисел = 5 ( исходя из условия задачи ). Тип переменных integer ( вводятся целые числа ).

Также нам понадобятся ещё две переменные «i» и «max». Переменная i будет играть роль счетчика для цикла , а переменная max будет хранить в себе максимальное значение элемента в массиве.

В начале программы создаем цикл , который будет заносить значения вводимые с клавиатуры в наш массив.

Далее присваиваем переменной max значения первого элемента массива. Возможно у вас возникает вопрос для чего это делается ? ведь первый элемент массива может и не быть наибольшим , более того , он может быть наименьшим. Это делается для того , чтобы иметь «точку отправления» , с которой мы будем сравнивать все остальные элементы в массиве.

В следующем цикле мы будем проверять все элементы в массиве ( из условия 5 ). Проверять нужно все элементы массива , так как мы не знаем где находится наибольший. Но начинать мы будем со 2 , так как первый элемент уже занесен в максимум и сравнивать одинаковые числа не имеет смысла.

Представим , что мы заполнили наш массив так : 4 17 -5 0 8 , тогда переменная max = 4 ( так как a[1] = 4 ).

Сравнение элементов
Во время сравнения двух элементов max и a[i] выполняется условие ( a[i] > max ). Если условие истинно ( какой-либо элемент массива больше max ) , то переменной max присваивается значение этого элемента ( a[i] ).

Второй элемент массива больше переменной max , поэтому max присваивается значение 17.

Сравнение элементов
При дальнейших сравнениях в массиве , не найдены элементы большие 17 , поэтому max остается неизменным.

В конце программы выводим max на экран ( 17 ).

Поиск минимального элемента в массиве

Условие : С клавиатуры вводятся 5 целых чисел , требуется найти наименьший элемент ( наименьшее число ) и вывести его на экран.

Решение :

Код

program mypascal;
var
a: array[1..5] of integer;
i,min:integer;
begin

for i:= 1 to 5 do
read(a[i]);

min:= a[1];

for i:= 2 to 5 do
if ( a[i] < min ) then
min:= a[i];

writeln(min);

end.

алгоритм поиска минимального элемента массива почти полностью аналогичен алгоритму поиска максимального. Отличие заключается только в условии внутри второго цикла.

Поиск отрицательного элемента массива

Условие : С клавиатуры вводятся 5 целых чисел , требуется найти первый отрицательный элемент и вывести его на экран. Если отрицательных элементов нет , то ничего не выводить.

Решение :

Код

program mypascal;
var
a: array[1..5] of integer;
i:integer;
begin

for i:= 1 to 5 do
read(a[i]);

for i:= 1 to 5 do
if ( a[i] < 0 ) then
begin
writeln(a[i]);
break;
end;

end.

Разбор : В данной задаче мы будем сравнивать элементы массива с 0. Если элемент меньше 0 ( отрицательный ) , то выводим его на экран. Главное заметить , что нам нужен только первый отрицательный элемент ( выводить остальные не надо ) , поэтому после нахождения мы будем выходить из массива командой break. Поиск отрицательного

Комментарии :  0        Просмотры :  18224

  • 1
  • 2
  • 3
  • 4
  • 5

Навигация

Личный кабинет

Поиск

Популярные

Обсуждаемые

Скачать паскаль

RSS лента

Подписаться на rss

Подпишитесь на нашу ленту новостей rss и вы всегда сможете быть в курсе обновлений на нашем сайте.

Решение задач

Если вас интересует решение какой-либо задачи , то вы можете опубликовать
её условие на нашем сайте или форуме. И в скором времени другие пользователи помогут вам.

Опубликовать на сайте

Опубликовать на форуме

Опрос

Program print;
Uses crt;
Const
     n=5;
Var
a: array[1..n] of integer;
i,null,s:integer;
Begin
s:=0;
Writeln('Введите элементы массива:');
For i:=1 to n do
begin
Readln(a[i]);
end;
ClrScr; 
Writeln('Элементы вашего массива:');
For i:=1 to n do
Writeln('a[',i,'] = ' ,a[i]);
Writeln('<br>');
Writeln;
Writeln('Номера отрицательных элементов:');
For i:=1 to n do
    IF a[i]<0 then
    begin
         null:=i;
         s:=s+1;
         Writeln(i);
    end;
Writeln('Всего отрицательных элементов: ' ,s);
end.

Понравилась статья? Поделить с друзьями:
  • Как найти фейков по своим фото
  • Как вконтакте по иду найти человека
  • Как найти дело умершего человека
  • Как найти величину интервала в моде
  • Как найти значок по описанию