
- •Оглавление
- •1. Вычисление нод алгоритмом Евклида
- •2. Нахождение нод и нок
- •3. Вычисление факториала
- •4. Вычисление факториала рекурсивно
- •5. Вычисление биноминального коэффициента
- •7. Разложение целого числа на сумму биноминальных коэффициентов
- •8. Сумма некоторых элементов массива
- •9. Модификация массива данных. Вариант 1.
- •10. Модификация массива данных. Вариант 2.
- •11. Работа с числами массива
- •12. Поиск совпадений чисел в массиве
- •13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1.
- •14. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2.
- •15. Подсчет количества цифр в целом числе
- •16. Проверка целого числа на симметрию цифр. Вариант 1.
- •17. Проверка целого числа n на симметрию цифр Вариант 2.
Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Самарский государственный архитектурно-строительный университет Факультет информационных технологий Кафедра прикладной математики и вычислительной техники
|
ПРАКТИКУМ ПО ОСНОВАМ ПРОГРАММИРОВАНИЯ |
УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ ПО ОРГАНИЗАЦИИ САМОСТОЯТЕЛЬНОЙ РАБОТЫ СТУДЕНТОВ |
|
О.В. Прохорова |
2013 |
Рассматривается построение кодов программ на языке С++ различных математических и прикладных задач. При построении кодов внимание уделяется эффективности построения кодов. |
Оглавление
1. Вычисление НОД алгоритмом Евклида 3
2. Нахождение НОД и НОК 4
3. Вычисление факториала 5
4. Вычисление факториала рекурсивно 6
5. Вычисление биноминального коэффициента 7
6. Поиск всех совершенных чисел < n 8
7. Разложение целого числа на сумму биноминальных коэффициентов 9
8. Сумма некоторых элементов массива 10
9. Модификация массива данных. Вариант 1. 11
10. Модификация массива данных. Вариант 2. 12
11. Работа с числами массива 13
12. Поиск совпадений чисел в массиве 14
13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1. 15
14. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2. 17
15. Подсчет количества цифр в целом числе 18
16. Проверка целого числа на симметрию цифр. Вариант 1. 19
17. Проверка целого числа n на симметрию цифр Вариант 2. 20
18.Поиск всех простых чисел <=n 21
1. Вычисление нод алгоритмом Евклида
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
void main ()
{
int m,n,r;
cout<<"Enter number m>n ";
cin>>m;
cout<<"Enter number n<m ";
cin>>n;
r=m%n; /* остаток от деления */
while( r>0 )
{
m=n;
n=r;
r=m%n;
}
cout<<" \n NOD = "<<n;
_getch();
}
2. Нахождение нод и нок
/* Даны натуральные числа m, n. Найти наибольший их делитель и наименьшее общее кратное */
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int n,m,max,min,nok,nod=1,i;
cout<<"Enter n = ";
cin>>n;
cout<<"\n Enter m = ";
cin>>m;
max=n>m?n:m;
min=n<m?n:m;
// Поиск НОД (наибольшего общего делителя)
for(i=1;i<=min;i++)
if((m%i==0)&&(n%i==0))nod=i;
cout<<" \n NOD = "<<nod<<"\n";
// Поиск НОK
for(i=max;i<=m*n;i++)
if((i%m==0)&&(i%n==0))
{
nok=i;
break; // выход из внутреннего цикла
}
cout<<" \n NOK = "<<nok<<"\n";
getch();
return 0;
}
3. Вычисление факториала
// Вычисление факториала n!
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int n,i=1,fact=1;
cout<<"Enter n = ";
cin>>n;
// через оператор for
for(i=1;i<=n;i++) fact=fact*i;
cout<<" \n n! = "<<fact<<"\n";
// через оператор while
fact=i=1;
while(i<=n)
{
fact=fact*i;
i++;
}
cout<<" \n n! = "<<fact<<"\n";
getch();
return 0;
}
4. Вычисление факториала рекурсивно
// Вычисление факториала n! рекурсивно
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int fact(int i); // объявление функции
int main()
{
int n;
cout<<"Enter n = ";
cin>>n;
cout<<" \n n! = "<<fact(n)<<"\n";
getch();
return 0;
}
int fact(int i)
{
if(i<=1) return 1;
return i*fact(i-1);
}
5. Вычисление биноминального коэффициента
// Нахождение биноминального коэффициента P(n,k)
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int fact(int i);
int _tmain(int argc, _TCHAR* argv[])
{
int n,k;
cout<<"Enter n >k ";
cin>>n;
cout<<"\n Enter k <n ";
cin>>k;
cout<<" \n P(n,k) = "<<fact(n)/(fact(k)*fact(n-k))<<"\n";
getch();
return 0;
}
int fact(int i)
{
if(i<=1) return 1;
return i*fact(i-1);
}
6. Поиск всех совершенных чисел < n
/* Получить все совершенные числа < n, т.е. равные сумме всех своих делителей, кроме самого числа */
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int n,i,j,sum;
cout<<"Enter n\n";
cin>>n;
for(i=1;i<=n;i++) // цикл по числам до n
{
sum=0;
for(j=1;j<i;j++) //цикл поиска делителей числа i
if(i%j==0) sum=sum+j;
if(sum==i) cout<<"\n совершенное число = "<<i;
}
getch();
return 0;
}