Консультация № 191469
12.10.2017, 17:56
0.00 руб.
1 6 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Прикрепленные файлы:
349467d6b95af3bb6a876cf9b58d2dc941cc71e8.jpg

Обсуждение

давно
Студент
400828
51
13.10.2017, 13:49
общий
это ответ
Здравствуйте, svrvsvrv!
Вот возможный вариант решения.
Компилятор PascalABC.net. Этот код должен работать в любой версии языка Pascal.
Код:

const N=10;

function sq(number: integer): boolean;
var i: integer;
begin
sq:=false;
for i:=1 to round(sqrt(number)) do
if i*i = number then
begin
sq:=true;
break
end
end;

var a: array[1..N] of integer;
i, counter: integer;
begin
counter:=0;
writeln('Введите ', N, ' натуральных чисел:');
for i:=1 to n do
read(a[i]);
writeln;
for i:=1 to N do
if sq(a[i]) then
begin
write(a[i], ' ');
counter:=counter+1;
end;
if counter = 0 then
write('Квадраты целых чисел не найдены')
end.

5
Спасибо за консультацию!
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Старший Модератор
31795
6196
16.10.2017, 10:30
общий
Адресаты:

Достаточно:
[code lang=pascal]function sq(number: integer): boolean;
var i: integer;
begin
sq:=number=sqr(round(sqrt(number)));//false;
// for i:=1 to round(sqrt(number)) do
// if i*i = number then
// begin
// sq:=true;
// break
// end
end;[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399424
894
16.10.2017, 15:18
общий
Адресаты:
Спасибо за консультацию!
Скажите, пожалуйста, а можно ли решеть без boolean, каким-то другим способом?
давно
Студент
400828
51
16.10.2017, 17:26
общий
Адресаты:

Да, Вы правы.
Такой "Си-шный" подход трудно донести до новичка, ему переборный алгоритм должен быть понятнее, имхо.
Без логического условия затрудняюсь что-то придумать: надо ответить да/нет на вопрос квадрат, или нет.
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Старший Модератор
31795
6196
23.10.2017, 08:42
общий
Адресаты:
Цитата: svrvsvrv
а можно ли решеть без boolean, каким-то другим способом

Само условие вынести в строку if sq(a[ i ]) then и заменив функцию if i=sqr(round(sqrt(i))) then
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399424
894
23.10.2017, 13:08
общий
Адресаты:
Спасибо.
Форма ответа