Advertisement
Guest User

Untitled

a guest
Mar 17th, 2025
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.38 KB | None | 0 0
  1. Да, конечно. Вот решение с использованием только оператора WHILE:
  2.  
  3. ```pascal
  4. program PowersOfTwo;
  5. var
  6.   n, i: integer;
  7.   number: longint;
  8. begin
  9.   writeln('Введите число n (n > 0):');
  10.   readln(n);
  11.  
  12.   number := 1;
  13.   i := 0;
  14.  
  15.   while n > 0 do
  16.   begin
  17.     while i <= n-1 do
  18.     begin
  19.       write(number, ' ');
  20.       number := number * 2;
  21.       i := i + 1;
  22.     end;
  23.     n := 0;
  24.   end;
  25.  
  26.   readln;
  27. end.
  28. ```
  29.  
  30. Или можно ещё проще, используя всего один цикл WHILE:
  31.  
  32. ```pascal
  33. program PowersOfTwo;
  34. var
  35.   n: integer;
  36.   number: longint;
  37. begin
  38.   writeln('Введите число n (n > 0):');
  39.   readln(n);
  40.  
  41.   number := 1;
  42.  
  43.   while n > 0 do
  44.   begin
  45.     write(number, ' ');
  46.     number := number * 2;
  47.     n := n - 1;
  48.   end;
  49.  
  50.   readln;
  51. end.
  52. ```
  53.  
  54. Второй вариант даже лучше, так как:
  55. 1. Код стал короче и понятнее
  56. 2. Не требуется дополнительная переменная i для счётчика
  57. 3. Используем n как счётчик, уменьшая его значение в цикле
  58. 4. Программа всё так же выведет все степени двойки от 2⁰ до 2ⁿ⁻¹
  59.  
  60. При вводе n = 4 результат будет тот же:
  61. 1 2 4 8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement