Составить программу на языке ! числа люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно сумме двух предыдущих. составить программу, которая находит сумму первых k чисел люка (k – задается пользователем). определить количество первых чисел люка, таких, что значение ихсуммы не превышает диапазона типа int (long int). вывести в виде таблицы данное значение суммы и три предыдущих значения суммы (с соответствующими количествами чисел люка).

Rorshach Rorshach    3   11.06.2019 21:30    14

Ответы
shkiper15555 shkiper15555  02.10.2020 00:20
Переделал ваш код с паскаля
#include <iostream>

using namespace std;

int main()
{
long int f[100];
long int k, i, s;
cin>>(k);
f[1] = 1;
f[2] = 3;
if (k > 0) s = 1;
if (k > 1) s = 4;

for (int i = 3;i<=k;i++)
{
f[i] = f[i - 1] + f[i - 2];
s = f[i] + s;
}
cout<<s;
return 0;
ПОКАЗАТЬ ОТВЕТЫ
tatyankabalash tatyankabalash  20.01.2024 11:28
Хорошо, вот программа на языке C++, которая решает задачу:

```cpp
#include
using namespace std;

int main() {
int k;
cout << "Введите значение k: ";
cin >> k;

long int prev_prev_sum = 0; // значение предпредыдущей суммы (начальное значение - 0)
long int prev_sum = 1; // значение предыдущей суммы (начальное значение - 1)
long int current_sum = 1; // значение текущей суммы (начальное значение - 1)

cout << " Сумма | Предыдущие суммы" << endl;
cout << "---------|-----------------" << endl;

int count = 1; // счетчик количества чисел люка, значение суммы которых не превышает диапазона типа int
cout << current_sum << " | -" << endl;
for (int i = 2; i <= k; i++) {
long int new_sum = current_sum + prev_sum; // вычисление новой суммы
if (new_sum > INT_MAX) { // проверка, превышает ли новая сумма диапазон типа int
break;
}

cout << new_sum << " | " << prev_sum << ", " << prev_prev_sum << ", " << current_sum << endl;

count++;
prev_prev_sum = prev_sum;
prev_sum = current_sum;
current_sum = new_sum;
}

cout << "Количество чисел люка, чья сумма не превышает диапазон типа int: " << count << endl;

return 0;
}
```

Давай разберем эту программу по шагам:

1. Мы объявляем переменную `k`, которая представляет собой количество первых чисел люка, сумма которых нужно найти. Это значение вводится пользователем с помощью `cin`.

2. Мы объявляем и инициализируем переменные `prev_prev_sum`, `prev_sum` и `current_sum`. `prev_prev_sum` и `prev_sum` представляют собой предыдущие суммы чисел люка, а `current_sum` представляет собой текущую сумму чисел люка. Начальные значения `prev_prev_sum` и `current_sum` равны 0, а значение `prev_sum` равно 1.

3. Мы выводим заголовок для таблицы результатов.

4. Мы выводим первую сумму чисел люка и предыдущие суммы в виде первой строки таблицы.

5. Мы запускаем цикл `for`, который выполняется от `i = 2` до `i <= k`. В каждой итерации цикла мы вычисляем новую сумму чисел люка (`new_sum`) путем сложения текущей суммы (`current_sum`) и предыдущей суммы (`prev_sum`).

6. Мы проверяем, превышает ли новая сумма `new_sum` диапазон типа `int`. Если это так, мы выходим из цикла с помощью ключевого слова `break`.

7. Мы выводим новую сумму и предыдущие суммы в виде строки таблицы.

8. Мы увеличиваем значение счетчика `count` и обновляем значения `prev_prev_sum`, `prev_sum` и `current_sum` для следующей итерации цикла.

9. Мы выводим количество чисел люка, чья сумма не превышает диапазон типа `int`.

Эта программа составляет таблицу со значениями сумм чисел люка и возвращает общее количество чисел люка, сумма которых не превышает диапазон типа `int`. Значения сумм выводятся вместе с предыдущими значениями сумм для наглядности.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика