bchukhraev79
?>

Нужна реализация на pascal и vba! в заданном одномерном массиве целого типа найти и напечатать совершенные числа, или сообщить, что таких нет. использовать процедуру нахождения совершенного числа. (совершенным называется число, которое равно сумме своих делителей (конечно, за исключением себя самого например, число 6 –совершенной, т.к. 6=1+2+3)

Информатика

Ответы

larson96
Программа для решения задачи и пример её работы - в прилагаемом файле.
Aleksei1463
// PascalABC.NET 3.0, сборка 1088
const
  nn=100;

function sov(n:integer):boolean;
var
  i,s:integer;
begin
  s:=0;
  for i:=1 to n div 2 do
    if n mod i = 0 then s:=s+i;
  sov:=(s=n)
end;

var
  a:array[1..nn] of integer;
  i,n,k:integer;
begin
  Write('Введите количество элементов в массиве (1-100): ');
  Read(n);
  Randomize;
  Writeln('*** Сформированный массив ***');
  for i:=1 to n do begin
    a[i]:=Random(1000)+1;
    Write(a[i],' ')
    end;
  Writeln;
  Writeln('*** Найденные совершенные числа ***');
  k:=0;
  for i:=1 to n do
    if sov(a[i]) then begin Write(a[i],' '); Inc(k) end;
  if k=0 then Writeln('... к сожалению, не нашли ни одного')
end.

Тестовое решение:
Введите количество элементов в массиве (1-100): 100
*** Сформированный массив ***
890 171 531 345 764 347 433 602 368 51 490 271 310 249 96 365 751 521 951 501 646 467 24 698 23 580 902 950 154 607 263 333 625 92 454 302 661 323 806 761 989 645 606 739 87 151 231 804 990 496 422 805 982 664 178 424 148 833 322 184 446 484 449 761 789 158 647 219 796 794 704 429 715 190 513 1 861 285 612 872 349 99 960 659 185 458 352 961 914 31 155 828 1 622 316 505 197 845 951 930
*** Найденные совершенные числа ***
496

VBA Excel 2003
Function Sov(n As Integer) As Boolean
    Dim i As Integer, s As Integer
    s = 0
    For i = 1 To n / 2
        If n Mod i = 0 Then s = s + i
    Next i
    Sov = (s = n)
End Function

Sub main()
    Dim n As Integer, i As Integer, k As Integer
    Cells.Clear
    n = Val(InputBox("Введите количество элементов в массиве: "))
    ReDim a(1 To n) As Integer
    Randomize Timer
    Cells(1, 1).Value = "*** Сформированный массив ***"
    For i = 1 To n
        a(i) = Int(1000 * Rnd) + 1
        Cells(i + 1, 1).Value = a(i)
    Next i
    k = 0
    Cells(1, 5).Value = "*** Найденные совершенные числа ***"
    For i = 1 To n
        If Sov(a(i)) Then
            Cells(k + 2, 5) = a(i)
            k = k + 1
        End If
    Next i
    If k = 0 Then
        Cells(1, 5).Value = ""
        MsgBox "Совершенных чисел не найдено"
    End If
End Sub
dmtr77
Узнаем количество символов данной статьи. Для этого умножим 40*32*16.

Пока мы просто составили выражение, перемножать не будем.

Каждый символ кодируется 8 битами, следовательно информационный объём статьи будет равен 8*40*32*16.

Перемножать пока, опять же, не будем. Чтобы ответ не был таким большим и пугающим, переведём всё а килобайты. Для этого полученное ранее выражение разделим на 8 (чтобы перевести в байты), затем на 1024 (чтобы перевести в килобайты).

Получаем выражение:
(8*40*32*16)/(8*1024)

Восьмёрки в числителе и знаменателе сокращаем. Получается:
(40*32*16)/1024

Сократим числитель и знаменатель на 32. Получаем:
(40*16)/32

16 и 32 тоже можно сократить до 1 и 2:
40/2=20

ответ: 20 килобайтов.
grekova5
Компьютер моей мечты - такой, который обладает гигантской пропускной в плане взаимодействия с пользователем. Лично я набираю этот текст на клавиатуре примерно на 1/20 от той скорости, с которой я бы его читал, а читаю этот текст я примерно на 1/3 от скорости моего мышления. Это крайне медленно. Прорывной компьютер должен быть на прямое считывание наших мыслей, никаких клавиатур, мышей и микрофонов. Естественно, у него должна быть нерушимая защита от взлома. И еще кое-что - на нем должна быть программа мощного ИИ для значительного усиления моих творческих, познавательных и коммуникативных Только делать ИИ умнее меня не стоит, ибо могут проявиться некоторые "непредсказуемые последствия". Хоть сейчас все это и кажется фантастикой, но примерно через 40-50 лет и прямая связь с мозгом, и ИИ уровня человека (или чуть повыше) вполне могут стать обыденностью, как это сейчас и произошло с Айфонами и интернетом.

Воот. Мне определенно следует меньше читать Тима Урбана...

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Нужна реализация на pascal и vba! в заданном одномерном массиве целого типа найти и напечатать совершенные числа, или сообщить, что таких нет. использовать процедуру нахождения совершенного числа. (совершенным называется число, которое равно сумме своих делителей (конечно, за исключением себя самого например, число 6 –совершенной, т.к. 6=1+2+3)
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

alexeytikhonov
temik10808564
deshkina82
teashop
volna22051964
smokestylemos
Tselyaritskaya Yurevich
Jannadon77
zuelv
Arutyunovich
morozovalexander90
alex091177443
GoncharenkoKuzmin
lazu8375
endyurans2ooo
▲