• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить задачу в Паскале

Статус
В этой теме нельзя размещать новые ответы.

vasya111

Ученик
Регистрация
31 Янв 2012
Сообщения
2
Реакции
0
Баллы
0
Помогите решить задачу в Паскале

Даны натуральное число n и целые числа a1, a2...an. Найти количество чисел a1(i = 1, 2, ..., n), являющихся полными квадратами.(Определить функцию, позволяющую распознавать полные квадраты).
 
Даны натуральное число n и целые числа a1, a2...an. Найти количество чисел a1(i = 1, 2, ..., n), являющихся полными квадратами.(Определить функцию, позволяющую распознавать полные квадраты).
Да пожалуйста - без проблем:
Код:
Const
 N=80;

Var
 A:Array[1..N] of LongInt;
 i,N1:Byte;

Function SQ_YN(M:LongInt):Boolean;
Begin
 SQ_YN:=M=Sqr(Trunc(Sqrt(M)));
End;

Begin
 Randomize;
 For i:=1 to N do A[i]:=Random(100);
 Writeln('Initial array:');
 For i:=1 to N do write(A[i]:8);
 Writeln;
 Writeln;
 N1:=0;
 For i:=1 to N do
  If SQ_YN(A[i]) then
   begin
    Inc(N1);
    Write(A[i]:8);
   end;
 Writeln;
 Writeln(N1,' numbers');
 Readln;
End.
 
Спасибо большое, но можно ли как-то обойтись без вот этого отрезка:
Function SQ_YN(M:LongInt):Boolean;
Begin
SQ_YN:=M=Sqr(Trunc(Sqrt(M)));
End;

Или может быть его заменить как то можно?
 
Спасибо большое, но можно ли как-то обойтись без вот этого отрезка:
Function SQ_YN(M:LongInt):Boolean;
Begin
SQ_YN:=M=Sqr(Trunc(Sqrt(M)));
End;

Или может быть его заменить как то можно?
Здрасьте, я ваша тётя! Вам, кажется, нужна "функция, позволяющая распознавать полные квадраты" - так это она и есть. Если непонятно - объясняю:
Берется число (М). Из него извлекается квадратный корень (Sqrt(M)). Результат (вещественный) округляется путём отбрасывания дробной части (Trunc(Sqrt(M))). То, что получилось, возводится в квадрат (Sqr(Trunc(Sqrt(M)))) и сравнивается с исходным числом. Если число М - полный квадрат, то результатом сравнения будет совпадение и булева функция SQ_YN получит значение TRUE, в противном случае - FALSE. Вот и всё.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху