Вывести из массива числа, которые находятся в степени 2 и 3 - Turbo Pascal
Формулировка задачи:
Дан массив размером N.
Нужно вывести из массива числа которые находиться в степени 2 и 3;
_____________________
N = 6
X = {
4
, 6,9
, 7, 2, 3 } Ответ. 4 , 9 ____________________ N = 8 X = { 2, 1, 6, 7,16
,36
,8
,9
} Ответ. 16 , 36, 8, 9Решение задачи: «Вывести из массива числа, которые находятся в степени 2 и 3»
textual
Листинг программы
- const m = 100;
- var i, j, n, q, c: longint;
- x: array [1..m] of longint;
- f, t: boolean;
- begin
- repeat
- write('n в диапазоне [1..', m, ']; n = ');
- readln(n)
- until n in [1..100];
- writeln('Введите числа:');
- for i := 1 to n do
- begin
- write('x[', i, '] = ');
- readln(x[i])
- end;
- f := false;
- writeln('Полные квадраты и полные кубы:');
- for i := 1 to n do
- begin
- q := 0;
- c := 0;
- if x[i] > 0
- then begin
- q := trunc(sqrt(x[i]));
- c := trunc(exp(ln(x[i] / 3)))
- end
- else if x[i] < 0
- then c := trunc(-exp(ln(-x[i] / 3)));
- writeln(x[i], ' ', q, ' ', ' ', c);
- t := false;
- for j := 0 to 1 do t := t or (sqr(q + j) = x[i]) or (sqr(c + j) * (c + j) = x[i]);
- f := f or t;
- if t then writeln(x[i], ' ')
- end;
- if not f then write('Не найдены');
- readln
- end.
Объяснение кода листинга программы
- Объявляются переменные: m, i, j, n, q, c: longint; var f, t: boolean;
- Создается массив x[1..m] of longint;
- Выводится сообщение для ввода чисел от 1 до m;
- Числа вводятся пользователем, каждое число выводится в отдельной строке;
- Записывается значение каждого числа в массив x[i];
- Переменная f устанавливается в false;
- Выводится сообщение для ввода чисел, которые являются полными квадратами и полными кубами;
- Числа вводятся пользователем, каждое число выводится в отдельной строке;
- Для каждого числа i выполняется цикл:
- вычисляется квадратный корень числа x[i] и записывается в переменную q;
- вычисляется экспонента числа x[i] / 3 и записывается в переменную c;
- проверяется, является ли число x[i] положительным; если нет, то вычисляется отрицательная экспонента числа -x[i] / 3 и записывается в переменную c;
- выводится число x[i], его квадратный корень q, его куб c;
- переменная t устанавливается в true;
- для каждого j от 0 до 1 выполняется проверка: если sqr(q + j) = x[i], или sqr(c + j) * (c + j) = x[i], то устанавливается значение переменной t в true;
- если значение переменной t равно true, то выводится число x[i];
- Если значение переменной f равно false, выводится сообщение
Не найдены
. - Выводится сообщение
Введено чисел:
, и выводится количество введенных чисел. - Выводится сообщение
Полные квадраты и полные кубы:
, и выводится количество введенных чисел. - Выводится сообщение
Не найдены
, и выводится количество введенных чисел. - Выводится сообщение
Введено чисел:
, и выводится количество введенных чисел. - Выводится сообщение
Полные квадраты и полные кубы:
, и выводится количество введенных чисел. - Выводится сообщение
Не найдены
, и выводится количество введенных чисел. - Выводится сообщение
Введено чисел:
, и выводится количество введенных чисел. - Выводится сообщение
Полные квадраты и полные кубы:
, и выводится количество введенных чисел. - Выводится сообщение
Не найдены
, и выводится количество введенных чисел. - Выводится сообщение
Введено чисел:
, и выводится количество введенных чисел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д