Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2017, 23:13   #1
0525
 
Регистрация: 09.11.2017
Сообщений: 9
По умолчанию [Pascal ABC.NET] Функция

Я что-то запутался в этих функциях. Мне нужно, чтобы функция считала количество элементов кратных 3, как это сделать?
Код:
Var A:Array[1..100] of integer;
 i,k,n:byte;
Begin
 write('Введите размерность массива: ');
  readln(n);
   k:=0;
    For i:=1 to n do
   Begin
  A[i]:=random(30);
 write(A[i],' ');
if (A[i] mod 3 = 0) 
 then inc(k);
  End;
   if k>0 then writeln('Количество элементов кратных 3 : ',k)
  else writeln('Таких элементов нету!');
End.
0525 вне форума Ответить с цитированием
Старый 05.12.2017, 07:38   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:

Type 
  TArray: Array[1..100] of byte;

{Функция счёта.
Входные параметры:
@AArray - массив элементов
@ADim - размер массива
Выход: количество элементов, кратных трём}

function GetCount(AArray: TArray; ADim: byte): integer;
var
  bIndex: byte;
  bRes: byte;
begin
  bRes := 0;
  For bIndex := 1 to ADim do
    if AArray[bIndex] mod 3 = 0 then
      inc(bRes);
  GetCount := bRes;
end;

{Основная программа}
Var 
  A: TArray;
  i, k, n: byte;
Begin

 {Добавим защиту от ввода некорректного n}
 Repeat
   write('Введите размерность массива (n<=100): ');
   readln(n);
 Until n <= 100;

 {Формируем массив}
 Randomize; {Инициализация генератора случайных чисел - нужна перед вызовом рандома, иначе получится фигня, а не нормальное распределение}
 For i:=1 to n do
 Begin
    A[i]:=random(30);
   write(A[i],' ');
 End;
 {Здесь вызываем функцию, передавая ей на вход массив А и значение переменной n}
 k := GetCount(A, n);
 if k > 0 then writeln('Количество элементов кратных 3 : ', k)
 else writeln('Таких элементов нету!');
End.
Можно избавиться от k, если записать сразу так:

Код:
 if GetCount(A, n) > 0 then writeln('Количество элементов кратных 3 : ', GetCount(A, n))
 else writeln('Таких элементов нету!');
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 05.12.2017 в 11:32.
Sciv вне форума Ответить с цитированием
Старый 05.12.2017, 09:56   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Можно избавиться от k, если записать сразу так:
не надо в данном случае избавляться от k: два вызова функции явно менее эффективно и хуже, чем один вызов + несколько байт под переменную.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.12.2017, 11:29   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не надо в данном случае избавляться от k
Согласен, не надо.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.12.2017, 16:37   #5
0525
 
Регистрация: 09.11.2017
Сообщений: 9
По умолчанию

Спасибо большое!
0525 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascal abc.net алексей костиков Помощь студентам 0 12.10.2017 20:02
Pascal ABC.NET gogomon93 Помощь студентам 4 01.12.2013 17:56
Pascal ABC Net sarkisova_elena Паскаль, Turbo Pascal, PascalABC.NET 2 07.02.2012 00:40
Pascal ABC.NET BuTaJI Помощь студентам 1 26.04.2011 20:10
Pascal ABC .NET no4_sniper Паскаль, Turbo Pascal, PascalABC.NET 0 17.10.2009 00:21