Pascal как найти все четные числа

Нахождение четных элементов массива

Итак формулировка задачи такова «найти все четные элементы массива, вывести на экран, и подсчитать их количество».
Для начала определим, что такое четное число вообще? правильно, четными числами называются числа, которые делятся на 2 без остатка (иногда еще говорят кратны 2).

Теперь определимся как это реализовать. В паскале есть такой замечательный оператор mod, который нам как раз и необходим. Сей оператор отвечает за деление с остатком, а если быть точнее, применив данный оператор, вы получаете остаток от деления. Например 11 разделить на 2. Использовав mod мы получим в ответе число 1.

11/2 = 5 (остаток 1)

Теперь как это все записать в паскале. Пусть переменная х — это остаток

x := 11 mod 5

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

if s[i] mod 2 = 0 then

Ну а теперь код всей задачи (как в помните нам еще было необходимо подсчитать количество четных чисел и вывести их всех на экран)

var i,x,y:integer;s:array [1..10] of integer;
begin
for i:=1 to 10 do
read(s[i]);
for i:=1 to 10 do
if s[i] mod 2=0 then begin
writeln (s[i]);
y:=y+1;
end;
writeln;
writeln(‘количество четных чисел = ‘,y)
end.

Darkcat112

Кот форума

9 / 9 / 5

Регистрация: 02.03.2020

Сообщений: 183

1

Вывести четные элементы

04.03.2020, 19:15. Показов 17181. Ответов 20

Метки pasc, pascal, pascal abc, pascal abc net, pascalabc, pascalabc.net, паскаль, паскаль abc.net (Все метки)


Студворк — интернет-сервис помощи студентам

Дан массив, состоящий из целых чисел. Напишите программу, которая выводит те элементы массива, которые являются чётными числами.
Входные данные

Сначала задано число N — количество элементов в массиве (1N100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел.
Выходные данные

Необходимо вывести все четные элементы массива (то есть те элементы, которые являются четными числами).

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
program chotnoe_ic_massiva;
var a:array of integer;
n,i:integer;
begin
  read(n);
  setlength(a,n);
  for i:=0 to n-1 do read(a[i]);
  i:=0;
  while i<=n-1 do begin
    write(a[i]:4);
    i:=i+2;
  end;
end.

Данная прога выводит чётные переменные из динамического массива (нужно подредактировать),а нужно числа(чётные)
Если сможете написать ещё и для нечётных будет вообще огонь(спасибо точно всем накинуну а за лучший ответ побороться придётся )



0



Пс

254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

04.03.2020, 21:33

2

Лучший ответ Сообщение было отмечено Darkcat112 как решение

Решение

1)Новый вариант:

Pascal
1
2
3
4
5
begin
  var a := ReadArrInteger(ReadInteger('Введите кол-во элементов массива:'));
  a.Where(i -> not Odd(i)).Println;//Четные
  a.Where(i -> Odd(i)).Println;//Нечетные
end.

2)Ваш,дополненный:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program chotnoe_ic_massiva;
 
var
  a: array of integer;
  n, i: integer;
 
begin
  read(n);
  setlength(a, n);
  for i := 0 to n - 1 do read(a[i]);
  write('Четные:');
  for i := 0 to n - 1 do 
    if not Odd(a[i])
      then write(a[i], ' ');
  writeln;
  write('Нечетные:');
  for i := 0 to n - 1 do 
    if Odd(a[i])
      then write(a[i], ' ');
end.



1



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

04.03.2020, 22:08

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const n=20;
var i:byte;
  a:array[1..n]of byte;
  
begin
  for i:=1 to n do begin
    a[i]:=random(76)+10;
    write(a[i]:3); end;
  writeln;
  write('Четные числа:');
  for i:=1 to n do
    if a[i] mod 2 = 0 then
      write(a[i]:3);
end.



0



254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

04.03.2020, 22:11

4

Лучший ответ Сообщение было отмечено Darkcat112 как решение

Решение

Andrew_97, Зачем вам статичный массив?

Добавлено через 50 секунд
Andrew_97, и по заданию элементы массива должен вводить сам пользователь



1



Кот форума

9 / 9 / 5

Регистрация: 02.03.2020

Сообщений: 183

05.03.2020, 19:31

 [ТС]

5

Пс, Спасибо что ответили(вижу вы зашди на мои темы),благодарю,но можете объяснить такую команду как Odd?
Я такую команду не встречал(но думаю как то связано с чёт и нечёт числами)



0



Пс

254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 19:54

6

Лучший ответ Сообщение было отмечено Darkcat112 как решение

Решение

Darkcat112, Прочитайте описание

Добавлено через 12 минут

Pascal
1
function Odd(i: integer) :=not i mod 2 = 0;



1



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 19:59

7

Pascal
1
function odd(x:longint):boolean;

Главное отличие процедуры от функции : 1)процедура должна быть использована как отдельный вид оператора;
2) функция обязательно должна быть встроена во что-то. Odd проверяет. является ли аргумент нечетным числом (результат равен True (правда), если проверяемое число нечетное, и False — в противном случае).

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const n=25;
var i:integer;
  a:array[1..n]of integer;
  
begin 
  for i:=1 to n do begin
    a[i]:=random(65)+35;
    write(a[i]:3); end;
  writeln;
  for i:=1 to n do
    if odd(a[i]) then
      write(a[i]:3);
end.

Если есть желание, то рекомендую вам ознакомиться с процедурами и функциями. Процедуры и функции (подпрограммы) облегчают жизнь программиста во многом и увеличивают ценность вашего кода.



0



254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 20:08

8

Andrew_97, «Функция обязательно должна быть встроена во что-то»
Это как?Можете примен привести?



1



Кот форума

9 / 9 / 5

Регистрация: 02.03.2020

Сообщений: 183

05.03.2020, 20:30

 [ТС]

9

Цитата
Сообщение от Пс
Посмотреть сообщение

Можете примен привести?

Наверное тут пример надо привести



0



254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 20:32

10

Darkcat112, Наверное.



1



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 20:34

11

Если мы хотим заполнить массив произвольным образом, то нужно воспользоваться функцией random. При каждом витке цикла [1..n] функция будет нам возвращать произвольное число, принадлежащее [25;54]. Например, заполняем массив произвольным образом числами [-25;25]. Всего чисел 51: до нуля 25 отрицательных, 0, 25 положительных. i-ому элементу массива мы должны присвоить одно из таких значений, где i принадлежит [1..n] : 1, 2, 3, … , 25. Каждый раз a[i] элементу массива будет выбрано произвольное число [-25;25]. Здесь функция встраивается в a[i]. Просто так, как отдельные команды — функции не используют, обязательно нужно пристроить их к чему-либо. В данном случае, к i элементу массива a[i].

Pascal
1
2
3
4
5
6
7
8
9
10
const n=25;
var i:integer;
  a:array[1..n]of integer;
  
begin
  // randomize;
  for i:=1 to n do begin
    a[i]:=random(30)+25;
    write(a[i]:3); end;    
end.



0



Пс

254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 20:38

12

Не используйте статичные массивы

Pascal
1
2
3
begin
   var a:=RandomArr(5,25,50)
end.



0



Кот форума

9 / 9 / 5

Регистрация: 02.03.2020

Сообщений: 183

05.03.2020, 20:40

 [ТС]

13

Цитата
Сообщение от Andrew_97
Посмотреть сообщение

Если мы хотим заполнить массив произвольным образом, то нужно воспользоваться функцией random.

Ключевое слово если…В условие сказано о динамическом массиве который был создан и надо было просто добавить условие)



0



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 20:44

14

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

Darkcat112,
Вот пример, как заполнить одномерный массив, содержащий 25 элементов, произвольным образом через подпрограмму (процедуру), числами [-25;25].

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const n=25;
type matrix=array[1..n]of integer;
var b:matrix;
 
procedure massiv(var a:matrix);
var i:integer;
begin
  for i:=1 to n do begin
    a[i]:=random(51)-25;
    write(a[i]:4); end;
end;
 
begin
  massiv(b);
end.



0



254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 20:46

15

Andrew_97, Нет смысла изучать статичные массивы,тем более в .Net .



0



60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 20:50

16

Пс, благодарю вас за совет, постараюсь познакомиться с динамическими массивами в ближайшее время.



0



254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 20:51

17

Andrew_97, Если будут вопросы,обращайтесь



0



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 21:01

18

Пс, интересный пример использования пользовательской функции (подпрограммы). Здесь узнаем, простое у нас число или нет. Как мы видим, функция встроена в условный оператор (if).

Pascal
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
var a:byte;
 
function prost(a:integer):boolean;
var i:integer;
  f:boolean;
  
begin
  if a<2 then
    f:=false
  else begin
    f:=true;
    i:=2;
    while (sqr(i)<=a) and f do
      if a mod i <> 0 then
        inc(i)
      else
        f:=false; end;
  prost:=f;
end;
 
begin
  write('Введите натуральное число > 2:');
  readln(a);
  if prost(a) then
    writeln('- это простое число')
  else
    writeln('- это составное число');
end.



0



Пс

254 / 147 / 69

Регистрация: 29.07.2018

Сообщений: 1,176

05.03.2020, 21:08

19

Andrew_97, Я знаю)
Можно еще и так сделать:

Pascal
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
var a:byte;
 
function prost(self:integer):boolean;extensionmethod;
var i:integer;
  f:boolean;
  
begin
  if self<2 then
    f:=false
  else begin
    f:=true;
    i:=2;
    while (sqr(i)<=self) and f do
      if self mod i <> 0 then
        inc(i)
      else
        f:=false; end;
  prost:=f;
end;
 
begin
  write('Введите натуральное число > 2:');
  readln(a);
  if a.prost then
    writeln('- это простое число')
  else
    writeln('- это составное число');
end.

Добавлено через 1 минуту
И еще,не обязательно использовать имя функции,для возвращения результата.Можно использовать result внутри тела функции



1



Andrew_97

60 / 41 / 23

Регистрация: 09.02.2020

Сообщений: 232

05.03.2020, 21:14

20

Пс, или я ошибаюсь?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
begin
  if a<2 then
    f:=false
  else begin
    f:=true;
    i:=2;
    while (sqr(i)<=a) and f do
      if a mod i <> 0 then
        inc(i)
      else
        f:=false; end;
  result:=f;
end;



0



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

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

Пример объявления массива целых чисел в разделе констант:

const
int_num = (1,5,8,2,44,7,3,66,4,7,34,7896,23463456,23,1,85456,44354,9);

Пример объявления массива целых чисел в разделе переменных:

var

int_number: array[1..1000] of integer;

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

int_number[587]:= 24545;

Но если Вы хотите скопировать все значения массива number_1 в массив number_0, то можно записать так:

number_0:= number_1; {number_0[1]:=number_1[1], number_0[2]:=number_1[2], ...}

Естественно для такой операции элементы массивы в Паскале должны иметь одинаковый тип.

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

Например, цикл «for»:

for i:= 1 to 1000 do
begin
int_number[i]:=random(9); {Записываем случайное число}
end;

Например, цикл «while»:

while i<=1000 do
begin
i:=i+1; {Увеличиваем счетчик на единицу}
int_nember[i]:=random(9); {Записываем случайное число}
end;

Массивы могут быть многомерными.
Пример двумерного массива (матрица):

var
mat_num: array[1..100, 1..100] of real;

Чтобы присвоить значения такому массиву необходимо уже два цикла, один будет вложен в другой:

for i1:=1 to 100 do
begin
for i2:=1 to 100 do
begin
mat_num[i1,i2]:=random(87)+sin(i1)*pi;
end;
end;

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


PROGRAM Chetnye_chisla; {Имя программы}
uses Crt; {Подключаем модуль Crt, необходимо для функции clrscr}
var {Раздел объявления переменных}
i,j: integer; {i- наши числа j- индекс массива}
ostatok: real; {Для проверки наличия остатка от деления}
ch_chisla: array[1..50] of integer; {Массив, в котором будут хранится четные числа}
BEGIN {Начало выполнения программы}
clrscr; {Для начала очищаем экран}
for i:=1 to 100 do {Начало цикла}
begin
ostatok:= i mod 2; {Определяем четность, делим число на 2}
if ostatok=0 then {Если нет остатка от деления, значить число четное}
begin
j:=j+1; {Увеличиваем индекс цикла на единицу}
ch_chisla[j]:=i; {Записываем четное число в массив}
write(i,' '); {Выводим на экран четное число и пробел}
end;
end;
readln; {Нужно чтобы увидеть результат - компьютер будет ждать нажатия "Enter"}
END. {Конец программы}

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

program _;
var
c:array[1..100] of integer;
a,b,i:integer;
begin
writeln('введите а и b');
readln(a,b);
writeln('введите числа входящие в последовательность (от a до b)')
for i:=a to b do
begin
read(c[i]);
end;
writeln('Все четные числа:');
for i:=a to b do
if not odd(c[i]) then write(c[i],'  ');
end.

Похожие записи/страницы:

  • Из четырех заданных чисел, четные сложить, а нечетные вычесть» дело в том что, четные числа складывает, а нечетные…
  • Дан одномерный числовой массив. Все числа, имеющие четные цифры на четных позициях, увеличить в k раз, а все остальные…
  • Написать программу, вычисляющую среднее арифметическое последовательности положительных чисел. Числа вводятся с…
  • Пусть вводится последовательность из целых чисел, оканчивающаяся нулем. Найти 2 наибольших числа последовательности -…
  • Дана последовательность К чисел. определить, сколько чисел этой последовательности содержит в своей записи все цифры…
  • Написать программу, в одномерном массиве чётные числа переместились в начало массива, а не чётные в конец-…
  • Вывести четные числа среди положительных элементов массива — Pascal(Паскаль)
  • Найти среди последовательности n чисел чётные числа после первой единицы — Pascal(Паскаль)

Формулировка задачи:

Всем привет! Помогите пожалуйста.
Нужно вывести все четные цифры из числа
Например дано число 123456 соответственно нужно вывести из него четные числа 2,4,6
Заранее спасибо за помощь!

Код к задаче: «Вывести все четные цифры из числа»

textual

Var n:integer;
Begin
    write('Введите число: ');readln(n);
    While n>0 do
    Begin
      if n mod 10 mod 2 = 0 then writeln(n mod 10);
      n:=n div 10;
    End;
    readln;
End.

Полезно ли:

13   голосов , оценка 3.923 из 5

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