Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 29.12.2020
Сообщений: 13
1

Вывести на экран числа от 1 до N "обратной елочкой"

12.01.2021, 12:49. Просмотров 1849. Ответов 7
Метки нет (Все метки)

Выведите на экран числа от 1 до N «обратной елочкой», т.е. в последней строке одно число, в предпоследней – два, и т.д

К примеру вводится число N=12
вывод должен выглядеть так:

11 12
7 8 9 10
4 5 6
2 3
1

Используя цикл for
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2021, 12:49
Ответы с готовыми решениями:

Выведите на экран числа от 1 до N «обратной елочкой», т.е. в последней строке одно число, в предпоследней – два, и т.д
Нужно, чтобы при выводе чисел на экран их количество в строке увеличивалось на 1, начиная с конца.

Выведите на экран строки (в последней строке n звездочек)
Условие: Выведите на экран строки (в последней строке n звездочек). Решить задачу с помощью...

С клавиатуры вводиться число n выведите следующую фигуру на последней строке n звездочек
С клавиатуры вводиться число n выведите следующую фигуру на последней строке n звездочек. Подсказка...

Даны два числа от -1000 до 1000, каждое число записано в отдельной строке. Выведите сумму этих чисел
Заранее благодарю за решение. Даны два числа от -1000 до 1000, каждое число записано в отдельной...

7
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,075
12.01.2021, 13:35 2
А может обратной елочкой при n=12 (где n это количество строк) наверное нужно так?
Код
65  66  67  68  69  70  71  72  73  74  75  76
  55  56  57  58  59  60  61  62  63  64  65
    46  47  48  49  50  51  52  53  54  55
      37  38  39  40  41  42  43  44  45
        29  30  31  32  33  34  35  36
          22  23  24  25  26  27  28
            16  17  18  19  20  21
              11  12  13  14  15
                 7   8   9  10
                   4   5   6
                     2   3
                       1
0
0 / 0 / 0
Регистрация: 29.12.2020
Сообщений: 13
12.01.2021, 13:41  [ТС] 3
Имеется ввиду, что количество выводимых чисел увеличивается на 1 , начиная с последней строки. То есть в последней строке 1 число, в предпоследней 2, в третьей с конца - 3 числа и т.д.
Приведу пример для n=23

22 23
16 17 18 19 20 21
11 12 13 14 15
7 8 9 10
4 5 6
2 3
1
Как можете видеть, кол-во чисел увеличивается с конца.
p.s. в первой строке выводится все оставшиеся числа, как в моем примере для n=23 , в первой строке 2 числа
0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,075
12.01.2021, 13:56 4
Цитата Сообщение от raverr Посмотреть сообщение
Имеется ввиду,
А Вы можете написать полное и точное условие, а не "имеется ввиду"?
0
4197 / 1996 / 2073
Регистрация: 10.12.2014
Сообщений: 7,632
12.01.2021, 13:59 5
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Line(l,j,n:Integer):String;
var s:String; k:Integer;
begin
  if j>n then Result:=''
  else
    begin
      s:=line(l+1,j+l+1,n);
      Write(s); for k:=j to j+l do if k<=n then Write(k:4); WriteLn;
      Result:=s+'  ';
    end;
end;
 
var n:Integer;
begin
  Read(n);
  Line(0,1,n);
end.
0
0 / 0 / 0
Регистрация: 29.12.2020
Сообщений: 13
12.01.2021, 14:22  [ТС] 6
Это то условие, что дал мне преподаватель, большего не дано.
0
Модератор
8338 / 4108 / 2849
Регистрация: 17.08.2012
Сообщений: 13,106
12.01.2021, 20:19 7
Лучший ответ Сообщение было отмечено raverr как решение

Решение

JuriiMW, проще без рекурсии.

Тут нужно немножко арифметикии.

raverr, ознакомьтесь: Википедия - Треугольное число
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  i, j, k, t, n: integer;
begin
  write('n = ');
  readln(n); //ввод числа (оно же первый текущий максимум)
  k := trunc((sqrt(8 * n - 7) - 1) / 2); //номер треугольного числа, предшествующего первому текущему максимуму
  t := k * (k + 1) div 2; //треугольное число, предшествующее первому текущему максимуму
  for i := k downto 0 do //цикл по номерам треугольного числа
    begin
      for j := t + 1 to n do write(j, ' '); //печать чисел от треугольного числа + 1 до текущего максимума
      writeln; //переход на новую строку
      n := t; //следующий максимум
      t := i * (i - 1) div 2 //следующее треугольное число, предшествующее максимуму
    end;
  readln
end.
Пояснение. Номер треугольного числа, меньшего n, получается из решения квадратного неравенства для треугольного числа, не большего n-1.

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{k(k+1)}{2}\leq n-1\,\Rightarrow \,k^2+k-2(n-1)\leq 0\,\Rightarrow \,k_{1,2}\leq \frac{-1\pm \sqrt{1+8(n-1)}}{2}<br />

Номер треугольного числа не может быть меньше 1. окончательно получаем:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
k=\left[ \frac{\sqrt{8n-7\,}-1}{2}\right]<br />

где квадратные скобки [ ] обозначают целую часть числа.
0
675 / 265 / 123
Регистрация: 23.03.2020
Сообщений: 723
25.01.2021, 16:59 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  res, stroka: string;
  line, j, c, n: integer;
begin
  res := '';  stroka := '';  line := 1;  j := 0;
  write('n = '); readln(n);
  for c := 1 to n do
   begin
    stroka := stroka + inttostr(c) + ' '; 
    j := j + 1;
    if j = line then 
     begin
       res := stroka + #13#10 + res;
       stroka := '';
       line := line + 1;
       j := 0;
     end;
   end;
  if stroka <> '' then Writeln(stroka);
  Write(res);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2021, 16:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Выведите все нечетные
Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Выведите...

в последней строке файла записаны два слова, переписать в выходной файл лишь те строки в которых есть хотя бы одно из этих слов
помогите пожалуйста с задачей: в последней строке файла записаны два слова, переписать в выходной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.