Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Касаткин С., Раткевич И., Травова Н. - Лаборато...doc
Скачиваний:
24
Добавлен:
22.11.2019
Размер:
1.01 Mб
Скачать
  1. Программа, которая проверяет, является ли число палиндромом

Палиндромом называется симметричное число, например 121, 2332 и т.д.

Для того чтобы проверить, является ли число симметричным, разберем копию числа на цифры, вычисляя остаток от деления на 10, и из цифр соберем перевернутое число, используя схему Горнера для вычисления значения многочлена. Если исходное и перевернутое числа равны, значит введенное число является палиндромом.

Пример: Перевернем число 123

Частное от деле­ния на 10

Остаток от деле­ния на 10

123

3

12

2

1

1

Вычисление значения перевернутого числа по схеме Горнера (берем начальное зна­чение m, равное 0, затем повторяем сле­дующие действия: то, что получилось рань­ше умножаем на 10 и добавляем следующую цифру):

m = ((0*10+3)*10+2)*10+1 = 321

#include<iostream>

#include <math.h>

#include <conio.h>

#include <windows.h>

using namespace std;

int main()

{

//Настройки шрифтов и региональных стандартов

if(SetConsoleCP(1251)==0

{

cerr<<"Fialed to set codepage!"<<endl;

//если не удалось установить кодовую страницу, вывод сообщения об ошибке

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

long n, m, copyn;

short c;

cout<< "Введите натуральное число ";

cin>> n;

copyn = n; // берем копию исходного числа

m=0;

do // повторяем нижеследующие действия:

{

c = copyn % 10; // получаем последнюю цифру числа

m = m * 10 + c; // добавляем цифру в схему Горнера

copyn /= 10; // делим число нацело на 10

} while (copyn); // пока число не равно 0

if (n==m) cout<< n << " - палиндром\n";

else cout<< n << " - не палиндром\n"; /* если исходное и перевернутое числа равны, значит введенное число – палиндром*/

_getch();

return 0;

}

Часть 2 Программы, использующие рекуррентные соотношения

Рекуррентными называются соотношения, используемые для вычисления последовательности значений некоторой величины, причем следующее значение этой величины вычисляется через предыдущее: .

Наберите одну из трех нижеследующих программ (комментарии набивать не нуж­но), подберите тестовые исходные дан­ные и выполните программу в поша­го­вом режиме. Остальные программы внимательно просмотрите и запомните реализован­ные в них алгоритмы.

  1. Программа, которая находит числа Фибоначчи в заданном диапазоне.

Числа Фибоначчи вычисляются по следующему правилу:

F1 = 1, F2 = 1, Fi = Fi-1 + Fi-2.

Обозначим Fi, Fi-1 и Fi-2 как F1, F2 и F3.

Начнем с того, что присвоим начальные значения, равные 1, F2 и F3, а дальше будем повторять следующие действия: F1 = F2; F2 = F3; F3 = F1 + F2. При этом тройка чисел будет смещаться по числовой оси вправо пока не выйдет за правую границу за­дан­ного отрезка.

Вычисление чисел Фибоначчи начинается c двух единиц, но выводить будем только те числа, которые попадают в заданный диапазон.

#include<iostream>

#include <math.h>

#include <conio.h>

#include <windows.h>

using namespace std;

int main()

{

//Настройки шрифтов и региональных стандартов

if(SetConsoleCP(1251)==0

{

cerr<<"Fialed to set codepage!"<<endl; //если не удалось установить кодовую страницу, вывод сообщения об ошибке

}

if(SetConsoleOutputCP(1251)==0) //тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

long a, b, f1, f2 = 1, f3 = 1;

cout<< "Задайте границы отрезка \n";

cin>> a >> b;

cout<< "Числа Фибоначчи на этом отрезке:\n";

while (f2 <= b) // вычисляем, пока не вышли за правую границу отрезка

{

if (f2 >= a) cout<< f2 << " ";

// выводим, если число не меньше левой границы отрезка

f1 = f2;

f2 = f3;

f3 = f1 + f2;

}

cout<< endl;

_getch();

return 0;

}