Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_programmirovanie / Praktikum_programmirovanie.doc
Скачиваний:
65
Добавлен:
30.03.2015
Размер:
15.88 Mб
Скачать

Лабораторная работа №3

Использование операторов цикла языка С++

Оператор цикла while

С помощью данного оператора реализуется цикл, который выполняется до тех пор, пока истинно условие цикла. Синтаксис данного оператора следующий:

while(условие)

{

тело цикла

}

Выполнение оператора начинается с вычисления выражения. Если оно истинно (не равно false), выполняется оператор цикла. Если при первой проверке выражение равно false, цикл не выполнится ни разу.

Оператор цикла for

Работа оператора цикла for подобна оператору while с той лишь разницей, что оператор for подразумевает изменение значения некоторой переменной и проверки ее на истинность. Работа данного оператора продолжается до тех пор, пока истинно условие цикла. Синтаксис оператора for следующий:

for(инициализация счетчика; условие; изменение значения счетчика)

{

тело цикла

}

Пример (оператор, вычисляющий сумму чисел от 1 до 100):

for (int i = 1, s = 0; i<=100; i++) s = s + 1;

i – счетчик.

Оператор цикла do while

Все представленные выше операторы циклов, так или иначе, проверяют условие перед выполнением цикла, благодаря чему существует вероятность, что операторы внутри цикла никогда не будут выполнены. Такие циклы называют циклы с предусловием. Однако бывают ситуации, когда целесообразно выполнять проверку условия после того, как будут выполнены операторы, стоящие внутри цикла. Это достигается путем использования операторов do while, которые реализуют цикл с постусловием. Цикл с постусловием имеет вид:

do оператор while выражение;

Задание

Решить указанные в варианте задачи, используя основные операторы языка С++. При решении задачи, использовать все типы циклов (for, while, do while). Количество чисел n и сами числа вводятся с клавиатуры.

Вариант

Задача 1

Задача 2

Задача 3

1

1

40

41

2

2

39

42

3

3

38

43

4

4

37

44

5

5

36

45

6

6

35

46

7

7

34

47

8

8

33

48

9

9

32

49

10

10

31

50

11

11

30

51

12

12

29

52

13

13

28

53

14

14

27

54

15

15

26

55

16

16

25

56

17

17

24

57

18

18

23

58

19

19

22

59

20

20

21

60

Задачи

  1. Дана последовательность из n целых чисел. Найти среднее арифметическое этой последовательности.

  2. Дана последовательность из n целых чисел. Найти сумму четных элементов этой последовательности.

  3. Дана последовательность из n целых чисел. Найти сумму элементов с четными номерами из этой последовательности.

  4. Дана последовательность из n целых чисел. Найти сумму нечетных элементов этой последовательности.

  5. Дана последовательность из n целых чисел. Найти сумму элементов с нечетными номерами из этой последовательности.

  6. Дана последовательность из n целых чисел. Найти минимальный элемент в этой последовательности.

  7. Дана последовательность из n целых чисел. Найти номер максимального элемента в этой последовательности.

  8. Дана последовательность из n целых чисел. Найти номер минимального элемента в этой последовательности.

  9. Дана последовательность из n целых чисел. Найти максимальный элемент в этой последовательности.

  10. Дана последовательность из n целых чисел. Найти сумму минимального и максимального элементов в этой последовательности.

  11. Дана последовательность из n целых чисел. Найти разность минимального и максимального элементов в этой последовательности.

  12. Дана последовательность из n целых чисел. Найти количество нечетных элементов этой последовательности.

  13. Дана последовательность из n целых чисел. Найти количество четных элементов этой последовательности.

  14. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу К.

  15. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных ее первому элементу.

  16. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.

  17. Дана последовательность из n целых чисел. Определить, каких чисел в этой последовательности больше: положительных или отрицательных.

  18. Дана последовательность целых чисел, за которой следует 0. Найти среднее арифметическое этой последовательности.

  19. Дана последовательность целых чисел, за которой следует 0. Найти сумму четных элементов этой последовательности.

  20. Дана последовательность целых чисел, за которой следует 0. Найти сумму элементов с четными номерами из этой последовательности.

  21. Дана последовательность целых чисел, за которой следует 0. Найти сумму нечетных элементов этой последовательности.

  22. Дана последовательность целых чисел, за которой следует 0. Найти сумму элементов с нечетными номерами из этой последовательности.

  23. Дана последовательность целых чисел, за которой следует 0. Найти минимальный элемент в этой последовательности.

  24. Дана последовательность целых чисел, за которой следует 0. Найти номер максимального элемента в этой последовательности.

  25. Дана последовательность целых чисел, за которой следует 0. Найти номер минимального элемента в этой последовательности.

  26. Дана последовательность целых чисел, за которой следует 0. Найти максимальный элемент в этой последовательности.

  27. Дана последовательность целых чисел, за которой следует 0. Найти сумму минимального и максимального элементов в этой последовательности.

  28. Дана последовательность целых чисел, за которой следует 0. Найти разность минимального и максимального элементов в этой последовательности.

  29. Дана последовательность целых чисел, за которой следует 0. Найти количество нечетных элементов этой последовательности.

  30. Дана последовательность целых чисел, за которой следует 0. Найти количество четных элементов этой последовательности.

  31. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу К.

  32. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных ее первому элементу.

  33. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.

  34. Дана последовательность целых чисел, за которой следует 0. Определить, каких чисел в этой последовательности больше: положительных или отрицательных.

  35. , всего n слагаемых;

  36. S=1+3+5+7+ …, всего n слагаемых;

  37. S=1+2-3+4+5-6+7+8-9+…, всего n слагаемых;

  38. S=15+17-19+21+23-25+…, всего n слагаемых;

  39. Дана последовательность из n чисел. Найти их среднее геометрическое.

  40. Найти первое отрицательное число последовательности u=cos(ctg(n)), где n=1,2,3….

  41. Определить является ли число k степенью 3.

  42. Определить является ли число k простым.

  43. Дана последовательность из 100 чисел. Найти номер первого отрицательного числа.

  44. Найти количество цифр в десятичном числе k.

  45. Найти сумму цифр в десятичном числе k.

  46. Сформировать n чисел Фибоначчи (a1=1, a2=1,ai=ai-1+ai-2).

  47. Сформировать все числа Фибоначчи не превышающие заданное число Q.

  48. S = 1+x/1! + x2/2! + …. + xn/n!

  49. .

  50. .

  51. .

  52. S = x- x2/2 + x3/3 - … + (-1)n-1xn/n .

  53. .

  54. , где n>2.

  55. S = x + x3/3! + x5/5! + … + x2m-1/(2m-1)!

  56. S = 1 + x2/2! + x4/4! + … + x2m/(2m)!

Пример выполнения задания

Вычислить сумму ряда (разложение в ряд Тейлора sin(x)) . Значение x и k вводятся с клавиатуры. Сравнить полученную сумму с точным значением sin(x).

Анализ задачи

Сумма ряда имеет следующие особенности:

k=1, слагаемое y=x, сумма S=S+y=x

k=2, слагаемое y=-x3/3! = -x3/(1∙2∙3)= -x2∙k-1/(2∙k-1), сумма S=S+y=

k=3, слагаемое y=x5/5! = x3/(1∙2∙3∙4∙5)= x2∙k-1/(2∙k-1), сумма S=S+y=

и т.д.

  • Для каждого четного k слагаемое суммы у имеет знак минус

  • Для каждого k необходимо вычислять факториал числа (2∙k-1)! = 1∙2∙3∙ … ∙(2∙k-1).

Факториал вычисляется в цикле с параметром for. Параметр i инициализируется в цикле for (int i=2…). Цикл выполняется до тех пор, пока параметр i не станет равным k (i<=k). Запись i++ в скобках означает, что каждый раз после того как fact умножается на i, переменная i увеличивается на единицу. Переменная fact для каждого k сбрасывается до 1.

Сумма ряда вычисляется в цикле с предусловием while. До начала цикла сумме ряда S присваивается значение х. Цикл while начинается с k=2 (int k=2). Сначала вычисляется факториал, затем проверяется четность k. Если k четное (if (k%2)), то перед слагаемым y ставится знак «минус». После чего полученное слагаемое прибавляется к сумме S и параметр k увеличивается на единицу. Цикл прекращает свою работу, как только перестает выполняться условие (k<=n).

Полученное значение суммы и точное значение Sin(x) выводится на экран.

Пример программы

#include <iostream.h>

#include <conio.h>

#include <math.h>

int main()

{

double x, s,y;

int k=2,n,fact;

cout<<"Input x = ";

cin>> x;

cout<<"Input n = ";

cin>> n;

s=x;

while (k<=n)

{

fact=1;

for (int i=2;i<=2*k-1;i++) fact=fact*i;

if (k%2) y=pow(x,(2*k-1))/fact;

else y=-pow(x,(2*k-1))/fact;

s=s+y;

k=k+1;

}

cout<<"The sum is equal "<<s;

cout<<"\nExact value sin("<<x<<") = "<<sin(x);

getch();

Схема алгоритма программы

Тот же самый пример, но с реализацией цикла с постусловием do while

#include <iostream.h>

#include <conio.h>

#include <math.h>

int main()

{

double x, s,y;

int k=2,n,fact;

cout<<"Input x = ";

cin>> x;

cout<<"Input n = ";

cin>> n;

s=x;

do

{

fact=1;

for (int i=2;i<=2*k-1;i++) fact=fact*i;

if (k%2) y=pow(x,(2*k-1))/fact;

else y=-pow(x,(2*k-1))/fact;

s=s+y;

k=k+1;

}

while (k<=n);

cout<<"The sum is equal "<<s;

cout<<"\nExact value sin("<<x<<") = "<<sin(x);

getch();

}