Массивы. Найдите число с наибольшем количеством цифр - 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.
Объяснение кода листинга программы
- Функция prime() проверяет, является ли число простым. Она принимает целое число n в качестве параметра и возвращает булево значение - true, если число простое, и false в противном случае.
- Константа m равна 10.
- Переменная a представляет собой массив целых чисел размером m.
- Переменные i, j, k, n и nm используются для обработки чисел.
- В цикле for i от 1 до m происходит следующее:
- Выводится значение a[i].
- Переменная k инициализируется значением a[i].
- Переменная n инициализируется результатом деления k на 10.
- Если k больше 0, то цикл продолжается, увеличивая n на единицу и деля k на 10.
- Если n больше nm, то nm устанавливается равным n, и j устанавливается равным i.
- В конце выводится сообщение, содержащее наибольшее количество цифр в числе a[j].
- Если функция prime(a[j]) возвращает true, то выводится сообщение о том, что число a[j] является простым.
- Если функция prime(a[j]) возвращает false, то выводится сообщение о том, что число a[j] является составным.
- Вычисляется число k, которое является palindrome (зеркальным числом) для a[j].
- Программа завершается с помощью функции readln().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д