Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИКУМ_1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
129.02 Кб
Скачать

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

Самарский государственный архитектурно-строительный университет

Факультет информационных технологий

Кафедра прикладной математики и вычислительной техники

ПРАКТИКУМ ПО ОСНОВАМ ПРОГРАММИРОВАНИЯ

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ ПО ОРГАНИЗАЦИИ САМОСТОЯТЕЛЬНОЙ РАБОТЫ СТУДЕНТОВ

О.В. Прохорова

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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]