1

(14 відповідей, залишених у Pascal/Delphi)

А як можна визначити обсяг використаної оперативної пам'яті?

2

(14 відповідей, залишених у Pascal/Delphi)

Закачала останній PascalABC.NET. Були проблеми з random при підключеному System. Та все ж знайшла рішення.
Все працює, час рахує. Дякую!)

3

(14 відповідей, залишених у Pascal/Delphi)

а яку версію порадите?

4

(14 відповідей, залишених у Pascal/Delphi)

У мене PascalABC версія 3.0.1.35.
Цього разу ругається на невідомий ідентифікатор GetTime в 10 рядку.

Uses crt;
const n=100;
var  before, after: longint;
     a: array[1..n] of integer;
     i,j,k,tmp:integer;

function fGetTime: LongInt;
var hr, min, sec, sec_100: word;
begin
  GetTime(hr, min, sec, sec_100);
  fGetTime := longint(hr)*360000 + longint(min)*6000 + sec*100 + sec_100;
end;

begin
     for i:=1 to n do
         a[i]:=random(30);
     writeln('масив');
     for i:=1 to n do
         write(a[i],' ');
     writeln;
   
     before := fGetTime;

     for i:=2 to n do
         begin
         tmp:=a[i];
         j:=1;
         while tmp>a[j] do
               j:=j+1;
         for k:=i-1 downto j do
             a[k+1]:=a[k];
         a[j]:=tmp;
         end;
         
     after := fGetTime;
     writeln( (after - before) / 100:0:2 )
     writeln('відсортований масив');
     for i:=1 to n do
         write(a[i],' ');
end.

5

(14 відповідей, залишених у Pascal/Delphi)

Невідоме ім'я типу DateTime.
Що значить "бібліотека .NET"? Мені треба щось докачати?

6

(14 відповідей, залишених у Pascal/Delphi)

Я порівнюю методи сортування масивів. Для цього потрібно дізнатися за який проміжок часу програма сортує масив. Шукала в гуглі та точної інформації таки не знайшла. Працюю на PascalABC. Наскільки я зрозуміла використовується модуль Utils та DateTime. Та не ясно мені як записати це в програмі. Як надати змінній значення часу?

7

(19 відповідей, залишених у Pascal/Delphi)

Візьму на замітку)

8

(19 відповідей, залишених у Pascal/Delphi)

Ясно, дякую. І програма виходить набагато коротша)

9

(19 відповідей, залишених у Pascal/Delphi)

hars14 написав:

Вчора не було часу передивитись програму,глянув тільки чі працює, а сьогодні дивлюсь і виникло питання:

f:=1;
for i:=1 to n do
    if f=1
       then

для чого ми присвоюємо f значення 1?

Змінна f - це прапорець, який вказує на виконання умов 0<a(i)<P. Початково f=1, що дозволяє при першій перевірці умови піти по +, інакше переривається цикл. Коли умова виконується, то змінна f=1, якщо хоча б одна з них не виконується, то присвоюється значення 0, що перериває цикл.

Отже, при останній перевірці, коли f=1 (умова виконується), ми міняємо місцями перший та останній елемент масиву, та в іншому випадку робимо всі елементи масиву від'ємними.

if f=1
   then begin
        buf:=a[1];
        a[1]:=a[n];
        a[n]:=buf;
        end
   else for i:=1 to n do
        a[i]:=-abs(a[i]);

10

(10 відповідей, залишених у Pascal/Delphi)

Я згодна, так воно в житті. Та все ж треба вірити, що добро обов'язково повернеться ще більшим добром)

11

(10 відповідей, залишених у Pascal/Delphi)

Окей, а підсказувати ж можна?)

12

(10 відповідей, залишених у Pascal/Delphi)

Я Вам щиро вдячна! :-*

koala написав:

Але більше так не робіть, добре?

І що саме не робити? *SCRATCH*

13

(19 відповідей, залишених у Pascal/Delphi)

Здається так

program z1;
const n=10;
var a: array [1..n] of integer;
    buf,i,P:integer;
    f:byte;
begin
writeln('Введіть елементи масиву');
for i:=1 to n do
    begin
    write('a[',i,']=');
    readln(a[i]);
    end;
write('Введіть P: ');
readln(P);
f:=1;
for i:=1 to n do
    if f=1
       then
       if i mod 2 =0
          then if (a[i]>0) and (a[i]<P)
                  then f:=1
                  else f:=0
          else
       else break;
if f=1
   then begin
        buf:=a[1];
        a[1]:=a[n];
        a[n]:=buf;
        end
   else for i:=1 to n do
        a[i]:=-abs(a[i]);
for i:=1 to n do
    writeln(a[i]);
end.

14

(10 відповідей, залишених у Pascal/Delphi)

За допомогою вищих сил, вдалося роздобути, зрозуміти та відредагувати код. Та все ж виводить сполучення в порядку спадання.

program z1;
const
  m = 10;
var
  a: array [1..m] of integer; 
  b: array [1..100] of byte;
  n, NN, r, i, j, k,fr,fch,fzn: integer;
  c: real;
Procedure Swapb(i, k: byte);
var
  x : byte;
begin
  x    := b[i];
  b[i] := b[k];
  b[k] := x;
end;
Procedure Writeb;
var
  i, j : byte;
begin
  j := 1;
  for i := 1 to NN do
    if b[i] = 0 then
      Inc(j)
    else
      write(a[j]);
  writeln;
end;
begin
  repeat
    write('n = ');
    readln(n);
    if (n < 2) or (n > m) then writeln('n за межами 2..', m, ', повторити.')
  until (n >= 2) and (n <= m);
  repeat
    write('r = ');
    readln(r);
    if (r < 1) then writeln('r має бути натуральним числом, повторити.')
  until (r >= 1);
       fch:=1;
     for i:=2 to (n+r-1) do
        fch:=fch*i;
     fr:=1;
     for i:=2 to r do
        fr:=fr*i;
     fzn:=1;
     for i:=2 to (n-1) do
        fzn:=fzn*i;
     c:=fch/(fr*fzn);
     writeln('Кількість сполучень - ',c);
  NN := n-1+r; 
  for i:=1 to n do a[i]:=i; 
  for i:=1 to n-1 do b[i]:=0; 
  for i:=n to n+r-1 do b[i]:=1;
  WriteB;
  while (true) do
  begin
    i:=NN;
    while (i>0) and (b[i] >= b[i+1]) do i:=i-1;
    if i=0 then exit;
    for j:=i+1 to NN do
      if (b[j]>b[i]) then k:=j;
    SwapB(i,k);
    for j:=i+1 to (i+ ((NN+1-i) div 2)) do
      SwapB(j,NN+i+1-j);
    WriteB;
  end;
  readln
end.

Змінювала в процедурі значення 0 на 1. В деяких випадках виводить в порядку зростання, в інших - взагалі не вірні сполучення...

Procedure Writeb;
var
  i, j : byte;
begin
  j := 1;
  for i := 1 to NN do
    if b[i] = 1 then
      Inc(j)
    else
      write(a[j]);
  writeln;
end;

Можливо знаєте як вивести в порядку зростання? Буду вельми вдячна)

15

(10 відповідей, залишених у Pascal/Delphi)

Ось мій код (можливо трохи неграмотний та я тільки вчуся):

program math;
uses crt;
var n,r,fr,fch,fzn,i: integer;
    c: real;
begin
     writeln('Vvedit n ta r');
     readln(n,r);
     fch:=1;
     for i:=2 to (n+r-1) do
        fch:=fch*i;
     fr:=1;
     for i:=2 to r do
        fr:=fr*i;
     fzn:=1;
     for i:=2 to (n-1) do
        fzn:=fzn*i;
     c:=fch/(fr*fzn);
     writeln('Kilkist spoluchen - ',c);
end.

Кількість сполучень я знаходжу по формулі, тому й немає лічильника сполучень

16

(10 відповідей, залишених у Pascal/Delphi)

Умова:
Задано натуральні числа n i r. Навести в лексикографічному порядку (в порядку зростання) всі r-сполучення з повтореннями з елементів множини {1, 2,..., n} та визначити їх кількість.

В режимі діалогу вводяться числа n i r (n i r не більше 10). Моя програма кількість сполучень рахує. Питання у виведенні кортежів.
Наприклад, при значеннях n=3, r=2 має вивести:
11
12
13
22
23
33
Отож, допоможіть, будь ласка, з виведенням елементів. Поясніть хоча б принцип