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

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

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

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

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

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

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

ПРАКТИКУМ по

технологии программирования

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

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

2013

Рассматривается построение кодов программ на языке С++ различных математических и прикладных задач. При построении кодов внимание уделяется эффективности построения кодов.

Оглавление

1. Вычисление НОД алгоритмом Евклида 3

2. Нахождение НОД и НОК 4

3. Вычисление факториала 5

4. Вычисление факториала рекурсивно 6

5. Вычисление биноминального коэффициента 7

6. Разложение целого числа на сумму биноминальных коэффициентов 8

7. Сумма некоторых элементов массива 9

8. Модификация массива данных. Вариант 1. 10

9. Модификация массива данных. Вариант 2. 11

10. Работа с числами массива 12

11. Поиск совпадений чисел в массиве 13

12. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1. 14

13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2. 16

14. Программа проверки глубины вложения скобок 17

15. Формирование двумерного массива 18

16. Вычисление определителя матрицы второго порядка 19

17. Вычисление определителя матрицы 3 - го порядка 20

18. Подсчет количества цифр в целом числе 22

19. Подсчет количества символов в строке 23

20. Проверка целого числа на симметрию цифр 24

21. Проверка_1 строки на симметрию символов 25

22. Проверка_2 строки на симметрию символов 26

23. Вычисление чисел Фибоначчи до n 27

24. Распечатать числа кратные К в диапазоне от 1 до 100. 28

25. Заданная перестановка элементов массива местами 29

26. Найти числа близнецы в [a,b] 30

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);

}