Массивы. Найдите число с наибольшем количеством цифр - Turbo Pascal

Узнай цену своей работы

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

помогите написать прогу.Буду очень признателен)) Дан одномерный массив натуральных чисел. найдите число с наибольшем количеством цифр. Если оно является простым числом, то выведите цифру стоящую в середине этого числа(для числа с нечетным кол-вом чисел), или две в середине(для четных).Если оно не простое найти его перевертыш.

Решение задачи: «Массивы. Найдите число с наибольшем количеством цифр»

textual
Листинг программы
function prime(n: integer): boolean;
var i: integer;
begin
if n < 2
  then prime := false
  else begin
    prime := true;
    for i := 2 to trunc(sqrt(n)) do
    if n mod i = 0
      then begin
        prime := false;
        break
      end
  end
end;
 
const m = 10;
var a: array [1..m] of integer;
    i, j, k, n, nm: integer;
    b: boolean;
 
begin
  nm := 0;
  j :=0;
  writeln('Source array:');
  for i := 1 to m do
    begin
      write('a[', i, '] = ');
      readln(a[i]);
      k := a[i];
      n := 0;
      while k > 0 do
        begin
          inc(n);
          k := k div 10
        end;
      if n > nm
        then begin
          nm := n;
          j := i
        end;
    end;
  writeln('Element a[', j, '] = ', a[j], ' contains max digits = ', nm);
  b := prime(a[j]);
  if b
    then begin
      writeln('and it''s prime number.');
      k := 1;
      for i := 1 to nm div 2 do k := 10 * k;
      if odd(nm)
        then writeln('Middle digit: ', a[j] div k mod 10)
        else writeln('Middle digits: ', a[j] div (k div 10) mod 100)
    end
    else begin
      writeln('and it''s composite number.');
      k := 0;
      nm := a[j];
      while nm > 0 do
        begin
          k := 10 * k + nm mod 10;
          nm := nm div 10
        end;
      writeln('Palindrome of a[', j, '] is ', k)
    end;
  readln
end.

Объяснение кода листинга программы

  1. Функция prime() проверяет, является ли число простым. Она принимает целое число n в качестве параметра и возвращает булево значение - true, если число простое, и false в противном случае.
  2. Константа m равна 10.
  3. Переменная a представляет собой массив целых чисел размером m.
  4. Переменные i, j, k, n и nm используются для обработки чисел.
  5. В цикле for i от 1 до m происходит следующее:
    • Выводится значение a[i].
    • Переменная k инициализируется значением a[i].
    • Переменная n инициализируется результатом деления k на 10.
    • Если k больше 0, то цикл продолжается, увеличивая n на единицу и деля k на 10.
    • Если n больше nm, то nm устанавливается равным n, и j устанавливается равным i.
  6. В конце выводится сообщение, содержащее наибольшее количество цифр в числе a[j].
  7. Если функция prime(a[j]) возвращает true, то выводится сообщение о том, что число a[j] является простым.
  8. Если функция prime(a[j]) возвращает false, то выводится сообщение о том, что число a[j] является составным.
  9. Вычисляется число k, которое является palindrome (зеркальным числом) для a[j].
  10. Программа завершается с помощью функции readln().

ИИ поможет Вам:


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

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы