![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа №3
- •Новосибирск 2011
- •1. Цель работы:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •3. Алгоритм решения задачи:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •3. Алгоритм решения задачи:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
4. Текст программы решения задачи:
/* ) Получение N-го числа Фибоначи, т.е. числа из последовательности
0 1 1 2 3 5 8 13 21 34
ci= ci-1 + ci-2 (c1 = 0 c2 = 1 ) n=10 c=34
*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"russian");
//Объявление переменных
int c=0;
int cp=1; //сi-1
int cpp=0; //ci-2
int i=0;
int n=0;
//Ввод данных
printf("Введите номер элемента последовательности: ");
scanf("%d",&n);
//Нахождение n-ого члена последовательности
for (i=3; i<=n; i++)
{
c = cpp + cp;
cpp = cp;
cp = c;
}
printf("%d", c);
getchar();
getchar();
return 0;
}
5. Результаты работы программ:
2. 7):
Нахождение наибольшего общего делителя двух чисел N и M по рекуррентному соотношению
(N=23345 M=9135 => 1015 N=238 M=347 => 34)
Nk = Nk-2 - INT(Nk-2 / Nk-1) N k-1 k=2,3 ...
N0 = max(|N|, |M|) N1 = min(|N|, |M|)
Если Nk = 0 => НОД = Nk-1
3. После ввода данных, переменным N и M присваивается модуль их же значения, затем запускается цикл с предусловием, в ходе которого по формуле представленной в условии задачи, находится наибольший общий делитель.
4. Текст программы решения задачи:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"russian");
//Объявление переменных
int N = 0;
int M = 0;
int Npp = 0;// Nk-2 из формулы
int Np = 0; //Nk-1 из формулы
int i = 0;
//Ввод данных
printf("Введите N и M: ");
scanf("%d%d",&N,&M);
// модуль числа
N = N > 0? N : - N;
M = M > 0? M : - M;
// нахождение начальных значений
Npp = N > M? N : M;
Np = N < M? N : M;
// нахождение НОД
while ( N != 0)
{
N = Npp - (Npp / Np) * Np;
Npp = Np;
Np = N;
}
//вывод
printf("%d",Npp);
getchar();
getchar();
return 0;
}
5. Результаты работы программ:
2. 4_1: Найти функцию с точностью e , т.е. пока |fn+1-fn| < e .
ex = 1 + x +x2/2! + x3/3! + ...
3. Алгоритм решения задачи: После ввода данных, запускается цикл и выполняются вычисления по формуле, приведенной в условии задачи
4. Текст программы решения задачи:
/*Найти функцию с точностью e , т.е. пока |fn+1-fn| < e .
ex = 1 + x +x2/2! + x3/3! + ...
*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"russian");
//Объявление переменных
float argument = 0;
float error = 0;
float accuracy = 0;
float currentValue = 0;
float previousValue = 0;
float intermediateValue = 0;
int i = 0;
int j = 0;
//Ввод данных
printf( "Введите значение аргумента: ");
scanf( "%f", &argument);
printf( "Введите точность: ");
scanf( "%f", &accuracy);
//Эксопеннта в степени x
intermediateValue = argument;
previousValue = 1 + argument;
i = 3;
j = 2;
error = argument;
while ( error > accuracy )
{
intermediateValue = intermediateValue * argument;
currentValue = previousValue + intermediateValue / j;
error = currentValue >= previousValue ? currentValue - previousValue : previousValue - currentValue;
previousValue = currentValue;
j = j * i;
i = i + 1;
}
printf("e^x = %f", previousValue);
getchar();
getchar();
return 0;
}