Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПрограммированиеCPP / ПрограммированиеCPP.pps
Скачиваний:
12
Добавлен:
14.05.2015
Размер:
750.08 Кб
Скачать

Методика решения задач

Успех в разработке программы зависит от двух основных факторов: соблюдения описан- ной выше методики и от опыта программиро- вания. Не следует игнорировать или недооце- нивать этапы проектирования программы (1 – 5), выполняемые вне компьютера. "Час,

потраченный на выбор алгоритма, стоит пяти часов программирования" – Д.Ван-Тассел. - Стиль, разработка, эффективность, отладка и испытание программ. - М., Мир, 1985.

Задача 2

Вычислить сумму

 

x

 

x2

 

x3

 

 

n 1 xn 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2!

3!

 

4! ( 1)

 

 

n!

 

 

 

 

 

Моделирование задачи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Параметр цикла i

 

1

 

 

 

 

2

 

 

 

3

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знак слагаемого Z

 

1

 

 

 

 

-1

 

 

 

1

 

-1

 

 

 

 

 

 

 

 

 

 

 

 

Числитель C

 

1

 

 

 

x = 2

 

x2 = 4

 

 

x3 = 8

Знаменатель F

 

1

 

 

1*2 = 2

 

 

2*3 = 6

 

6*4 = 24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Слагаемое Z*C/F

 

1

 

 

 

 

-1

 

 

 

0.(6)

 

-0.041(6)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сумма S

 

1

 

 

 

 

0

 

 

 

0.(6)

 

0.625

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача 2

 

 

 

 

Алгоритм решения задачи 2

 

 

 

Начало

N

4

 

 

 

 

 

 

 

 

 

N,X

X

2

 

 

 

 

S

0

 

 

 

 

 

 

 

 

 

S=0; Z=1; C=1; F=1

Z

1

 

 

 

 

C

1

 

 

 

 

 

 

 

 

 

i=1,N

F

1

 

 

 

 

 

i

1

2

3

4

5

F=F*i; S=S+Z*C/F;

F

1

2

6

24

 

Z=-Z; C=C*X

S

1

0

0.(6)

0.625

 

S

Z

-1

1

-1

1

 

C

2

4

8

16

 

Конец

S

 

 

 

 

0.625

Рис.4. Алгоритм решения

 

 

 

 

 

Задача 2

Код программы

#include <iostream> using namespace std; void main() {

double S, C, X; int Z, i, N, F; cin>>N>>X;

S=0; Z=1; C=1; F=1; for (i=1; i<=N; i++) {

F*=i;

S+=Z*C/F; Z=-Z; C*=X;

}

cout<<S<<endl;

}

Задача 3

Сколько членов последовательности

1,

1

,

1 ,

 

 

 

 

 

 

2

 

3

надо просуммировать для того, чтобы сумма превысила

значение S?

 

 

 

 

 

 

 

 

 

Моделирование задачи 3

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер цикла i

1

2

3

 

4

 

 

5

Сумма S1

1

1.5

1.833333

2.083333

 

 

2.283333

Задача 3

Начало

 

Алгоритм решения задачи 3

 

 

 

 

 

 

 

S

S

2.08

 

 

 

 

S1=0; N=0

S1

0

 

 

 

 

 

N

0

 

 

 

 

S1<S

-

 

 

 

 

 

S1<S

да

да

да

да

нет

+

N

1

2

3

4

 

N=N+1

 

S1=S1+1/N

S1

1

1.5

1.8(3)

2.08(3)

 

 

 

N

N

 

 

 

 

4

 

 

 

 

 

Конец

Рис. 5. Алгоритм. решения

Задача 3

Код программы:

#include <iostream> using namespace std;

void main() { double S,S1; int N; cin>>S; S1=0; N=0;

while (S1<S) S1+=1.0/++N; cout<<"N="<<N<<endl;

}

Задача 4

Последовательность значений Xi, Yi вычисляется по формулам:

 

 

Xi=0.3Xi-1+0.4Xi-2+0.2Yi-1;

 

 

 

 

 

Yi=0.2Yi-1+0.3Yi-2+0.4Xi-1,

i=2, 3, ...

 

 

 

N

 

 

 

 

 

 

 

Вычислить

( X i

Yi )

при X0=X1=1 и Y0=Y1=2.

 

 

i 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Моделирование задачи 4

 

i

 

0

 

 

1

2

 

3

4

 

X0

 

 

 

 

 

1

 

1

1.1

 

X1

 

 

 

 

1

1

 

1.1

1.01

 

X2

 

1

 

 

1

1.1

 

1.01

1.007

 

Y0

 

 

 

 

 

2

 

2

1.4

 

Y1

 

 

 

 

2

2

 

1.4

1.32

 

Y2

 

2

 

 

2

1.4

 

1.32

0.987

 

Cумма S

 

3

 

 

6

8.5

 

10.83

12.925

 

 

Задача 4

 

 

Начало

 

 

 

N

 

 

 

X1=1; X0=1; Y1=2; Y0=2;

 

S=X0+Y0+X1+Y1

 

+

N<2

-

 

 

 

-

N=0

 

 

i=2,N

 

 

 

 

+

 

 

 

 

 

 

 

S=X0+Y0

 

X2=0.3*X1+0.4*X0+0.2*Y1;

 

 

 

 

 

 

Y2=0.2*Y1+0.3*Y0+0.4*X1;

 

 

 

 

S=S+X2+Y2; X0=X1;

 

 

 

Y0=Y1; X1=X2; Y1=Y2

 

 

S

 

Рис.6. Алгоритм

 

 

 

 

 

 

Конец

решения

 

 

 

Задача 4

Код программы

#include <iostream> using namespace std; void main() {

double S,X0,X1,X2,Y0,Y1,Y2; int N,i;

cin>>N;

X1=1; X0=1; Y1=2; Y0=2; S=X0+Y0+X1+Y1;

if (N<2){

if (N==0) S=X0+Y0;

} else

for (i=2; i<=N; i++) {

X2=0.3*X1+0.4*X0+0.2*Y1;

Y2=0.2*Y1+0.3*Y0+0.4*X1;

S+=X2+Y2;

X0=X1; Y0=Y1; X1=X2; Y1=Y2;

}

cout<<"S="<<S;

}

Соседние файлы в папке ПрограммированиеCPP