В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.
Код процедуры:
procedure print_fib(n: integer);
var a, b, t: integer;
begin
a := 0;
b := 1;
while n > 0 do
begin
write(b, ' ');
b := a + b;
a := b - a;
n := n - 1;
end;
end;
Пример основной программы:
begin
print_fib(10)
end.
Вывод:
1 1 2 3 5 8 13 21 34 55
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
float A[10];
cout << "Заполните массив данными:" << endl;
for (int i = 0; i < 10; i++)
{
cout << "[" << i + 1 << "]: ";
cin >> A[i];
}
float max = A[0];
for (int i = 0; i < 10; i++)
{
if (A[i] > max)
{
max = A[i];
}
}
cout << "\nМаксимальное значение: " << max << endl;
float summ = 0;
for (int i = 0; i < 10; i++)
{
if ((A[i] + 1) == max)
{
summ += A[i];
}
}
cout << "\nСумма элементов массива отличающихся от максимального на единицу: " << summ << endl;
return 0;
}
Объяснение:
Ищем максимальное число в массиве и далее ищем сумму всех элементов массива, которые отличаются от максимального на единицу. Т.е ищем сумму элементов, которые меньше максимального на единицу