Паскаль как найти количество четных чисел

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

Итак формулировка задачи такова «найти все четные элементы массива, вывести на экран, и подсчитать их количество».
Для начала определим, что такое четное число вообще? правильно, четными числами называются числа, которые делятся на 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.

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

 Подсчет количества четных элементов в массиве.


program massiv7;
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]:= +10+random (91);
write (A[i]:5)
end;
writeln;
k:=0;
for i:=1 to N do
if a[i] mod 2=0 then
begin
k:=k+1
end;
writeln (‘Количество четных элементов =  ’,k:5);
readln
end.

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

В строке №13 заполняем массив случайными числами в диапазоне от +10 до +100 (включая 100).

В строке №17 переменной для хранения количества четных чисел присваиваем первоначальное значение равное 0.

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

kolichestvo chetnihkh ehlementov massiva

kolichestvo chetnihkh ehlementov massiva.


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

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

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


Иван 123

1

как найти количество четных чисел в массиве

11.03.2010, 20:49. Показов 25159. Ответов 2


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

Подскажите ,как найти количество четных чисел в массиве

Ngx1

2 / 2 / 4

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

Сообщений: 9

11.03.2010, 23:50

2

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

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program aa;
var i,n : integer;
A :Array[1..3] OF INteger;
begin
n:=0;
For i:=1 To 3 Do begin
Readln(a[i]);
end;
For i:=1 To 3 Do begin
If a[i] mod 2 =0 Then n:=n+1
end;
writeln('Kol-vo 4etHbIX elementoB  :',n);
Readln;
End.



0



Inadequate

Retired

7726 / 2558 / 671

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

Сообщений: 5,100

12.03.2010, 08:02

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const
  N = 10;
var
  i,c: integer;
  a: array [1..N] of integer;
begin
  Randomize;
  c := 0;
  for i := 1 to N do
  begin
    a[i] := Random(8) - 4;
    if a[i] mod 2 = 0 then
      Inc(c);
    Write(a[i], ' ');
  end;
  WriteLn('Result: ', c);
  ReadLn
end.



0



var n,i,k,a:integer;
begin
writeln('введите количество чисел');
readln(n);
a:=0;
for i:=1 to n do begin
                 writeln('введите ',i:1,'-е число');
                 readln(a);
                 if a mod 2=0 then k:=k+1;
                 end;
writeln('кол-во четных чисел ',k);
readln;
end.

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

  • Написать программу включив подсчет общего количества вводимых чисел, исключая ноль; подсчет четных чисел -…
  • Ввести с клавиатуры n чисел. Определить количество нечетных – Pascal (Паскаль)
  • Написать программу для наглядного представления подсчета четных и нечетных чисел. В цикле вводить целые числа x . На…
  • Создать файл abcd.dat, содержащий элементы типа integer. Из компонентов данного файла сформировать массивы четных и…
  • Подсчитать количество четных элементов массива, заданного датчиком случайных чисел – Pascal(Паскаль)
  • Дано натуральное число:а)сколько чётных цифр в данном целом числе;б)верно ли, что в данном числе встречаются цифры А и В…
  • Дан массив, содержащий 10 чисел. Вычислить сумму четных элементов. Ввести с клавиатуры х. Определить количество…
  • Посчитать количество парных чисел из 21 что вводит пользователь – Pascal(Паскаль)

Раздел:
Задачи /
Простейшие /

Найти количество четных чисел в массиве

Основы программирования 2.0

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать.
Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь.
Подробнее…

Условие задачи 2.74

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

Сегодня я покажу вам, как из простой задачи сделать сложную )))

На самом деле, конечно, усложнение будет кажущимся. Ну да, я буду
использовать константы,
пользовательские типы данных и
функции, хотя для такой задачи можно было бы обойтись и без них.

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

Само решение я описывать не буду. Опытные и так поймут, а новичкам будет
полезно разобраться самим (если что – в примерах программ есть
комментарии). А расскажу только о том, для чего я использовал те или иные ходы. Итак…

Для чего используются константы, я уже говорил не раз. Но не грех и повторить. Если одно и то же постоянное значение имеется в программе в нескольких местах, то в случае его замены на другое, вам придётся менять это значение во всех участках программы. А это, во-первых, займёт больше времени, а во-вторых, где-то это значение можно просто пропустить. Если же вы используете константу, то при замене значения вам надо будет изменить его только в одном месте программы. Кроме того, давая константам осмысленные имена, вы будет понимать, для чего используется это значение, найдя имя константы в вашей программе из миллиона строк.

Зачем использовать пользовательский тип данных?

Тоже две причины.

Во-первых, в Паскале вы не можете в объявлении функции в качестве
параметра использовать массив. То есть вот так:

function GetIndexMaxValue(M : array[1..MAX_INDEX] of WORD) : WORD;

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

type TMas = array[1..MAX_INDEX] of WORD;

а потом уже можно объявить функцию, например, вот так:

function GetIndexMaxValue(M : TMas) : WORD;

Ну а почему бы тогда не использовать массив как глобальную переменную и не париться?

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

Представьте, что у вас объявлен массив с элементами типа
BYTE, и вы работаете с ним в нескольких
функциях. Да так работаете, что приходится в функциях создавать
локальные переменные – массивы с элементами типа BYTE. Это уже сильно
неудобно. Но ещё веселее будет, если вам вдруг потребуется изменить тип
элементов (например, WORD вместо BYTE). Надеюсь, вы понимаете, к чему я
клоню. И это вторая причина применять пользовательский тип данных для
массива.

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

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

Ну вот как-то так. А теперь примеры программ на
Паскале и
С++.

Решение задачи 2.74 на Паскале

 
program mytask;

//****************************************************************
// КОНСТАНТЫ
//****************************************************************
const
  MAX_INDEX = 20;
  MAX_VALUE = 500;

//****************************************************************
// ТИПЫ ДАННЫХ
//****************************************************************
type TMas = array[1..MAX_INDEX] of WORD;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  i      : WORD;
  MaxA   : WORD;
  A      : TMas;

//****************************************************************
// ФУНКЦИИ И ПРОЦЕДУРЫ
//****************************************************************

//****************************************************************
// Функция ищет наибольший элемент массива.
// ВХОД  : массив для поиска
// ВЫХОД : индекс элемента с наибольшим значением
//****************************************************************
function GetIndexMaxValue(M : TMas) : WORD;
var i, MaxWord, MaxM : WORD;
begin
  MaxM := 0;
  MaxWord := Low(MaxWord);
  //Найти наибольший элемент в массиве
  for i := 1 to MAX_INDEX do
    if M[i] > MaxWord then
      begin
        MaxWord := M[i];
        MaxM := i;
      end;
  Result := MaxM;
end;

//****************************************************************
// Функция подсчитывает количество чётных чисел в массиве до 
// указанного элемента.
// ВХОД  : М - массив для поиска,
//         N - индекс элемента, до которого выполняется поиск
// ВЫХОД : количество чётных чисел до элемента с индексом N
//****************************************************************
function GetNumOdd(M : TMas; N : WORD) : WORD;
var i, NumOdd : WORD;
begin
  Result := 0;
  //Если просматривать массив не далее 1-го элемента
  if N < 2 then
    begin
      if (not Odd(M[1])) then Result := 1;
      Exit;
    end;
  NumOdd := 0;
  for i := 1 to N-1 do
    if (not Odd(M[i])) then Inc(NumOdd);
  Result := NumOdd;
end;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Randomize;
// Заполнить массив случайными числами
  for i := 1 to MAX_INDEX do
    A[i] := Random(MAX_VALUE);

// Вывести массив на экран (значения с индексами)
  for i := 1 to MAX_INDEX do
    Write('[', i, ']', A[i], ' ');

// Вычислить и вывести результат
  MaxA := GetIndexMaxValue(A);
  WriteLn(#10#13, 'The index of the largest element: ', MaxA);
  WriteLn('Number of even numbers: ', GetNumOdd(A, MaxA));

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.  

Решение задачи 2.74 на С++

#include <cstdlib>
#include <iostream>

//****************************************************************
// КОНСТАНТЫ
//****************************************************************
const int MAX_INDEX = 20;
const int MAX_VALUE = 500;

//****************************************************************
// ТИПЫ ДАННЫХ
//****************************************************************
typedef unsigned short int TMas[MAX_INDEX-1];    

using namespace std;

unsigned short int i;
unsigned short int MaxA;
TMas A; 

//****************************************************************
// ФУНКЦИИ И ПРОЦЕДУРЫ
//****************************************************************

//****************************************************************
// Функция ищет наибольший элемент массива.
// ВХОД  : массив для поиска
// ВЫХОД : индекс элемента с наибольшим значением
//****************************************************************
unsigned short int GetIndexMaxValue(TMas M)
{
  unsigned short int i, MaxWord, MaxM;

  MaxM = 0;
  MaxWord = 0;
  //Найти наибольший элемент в массиве
  for (i = 0; i < MAX_INDEX; i++)
    if (M[i] > MaxWord)
    {
      MaxWord = M[i];
      MaxM = i;
    }
  return(MaxM);
} 

//****************************************************************
// Функция подсчитывает количество чётных чисел в массиве до 
// указанного элемента.
// ВХОД  : М - массив для поиска,
//         N - индекс элемента, до которого выполняется поиск
// ВЫХОД : количество чётных чисел до элемента с индексом N
//****************************************************************
unsigned short int GetNumOdd(TMas M, unsigned short int N)
{
  unsigned short int i, NumOdd;
  NumOdd = 0;
  //Если просматривать массив не далее 1-го элемента
  if (N < 1)
  {
    if ((M[0] % 2) == 0) return(1);
    else return(0);
  }
  
  for (i = 0; i < N; i++)
    if ((M[i] % 2) == 0) NumOdd++;
  
  return(NumOdd);    
}       

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  srand(time(0));      //Запустить генератор случайных чисел
  
// Заполнить массив случайными числами
  for (i = 0; i < MAX_INDEX; i++)
    A[i] = rand() % MAX_VALUE;

// Вывести массив на экран (значения с индексами)
  for (i = 0; i < MAX_INDEX; i++)
    cout << "[" << i << "]" << A[i] << " ";

// Вычислить и вывести результат
  MaxA = GetIndexMaxValue(A);
  cout << endl << "The index of the largest element: " << MaxA << endl;
  cout << "Number of even numbers: " << GetNumOdd(A, MaxA) << endl; 
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

Найти количество четных чисел в массиве

ПРИМЕЧАНИЕ
Небольшое пояснение всё-таки дам. В функции GetNumOdd на первый взгляд
слишком много лишнего. Но это связано с тем, что по условию задачи
нам надо вывести чётные элементы до положения
первого наибольшего элемента. То есть если наибольший элемент будет
также чётным, то его учитывать не надо. Решение, которое я применил,
не является самым изящным и самым простым. Можно было добиться того же итога более красиво. Если хотите – попробуйте. Можете считать это домашним заданием )))

ПРИМЕЧАНИЕ
Обратите внимание, что в примере на С++ индексация массива начинается с 0, поэтому исходный код не вполне соответствует примеру на Паскале.

ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги
“Основы программирования” и
“Основы С++”.

Как стать программистом 2.0

Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки…
Подробнее…

Помощь в технических вопросах

Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение – ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации.
Подробнее…

Добавить комментарий