Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка С++.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
749.57 Кб
Скачать

Практическое задание

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

Методические указания

  1. Разработать алгоритм решения задачи, используя механизм вложенных циклов.

  2. Границу внешнего цикла задать как константу.

  3. Проверить работоспособность алгоритма на константе большей размерности, чем приведена в условии задачи.

Варианты заданий

1 вариант

1

2 2

3 3 3

4 4 4 4

5 5 5 5 5

2 вариант

5 5 5 5 5

6 6 6 6

7 7 7

8 8

9

3 вариант

0

1 0

2 1 0

3 2 1 0

4 3 2 1 0

4 вариант

6 5 4 3 2

5 4 3 2

4 3 2

3 2

2

5 вариант

5 0 0 0 0 0

4 0 0 0 0

3 0 0 0

2 0 0

1 0

1

6 вариант

5 4 3 2 1 0

5 4 3 2 0

5 4 3 0

5 4 0

5 0

7 вариант

1 1 2 3 4 5

2 1 2 3 4

3 1 2 3

4 1 2

5 1

8 вариант

5 1 2 3 4 5

4 1 2 3 4

3 1 2 3

2 1 2

1

9 вариант

1 1

2 1 2

3 1 2 3

4 1 2 3 4

5 1 2 3 4 5

10 вариант

1 1 1 2 1 3 1 4

2 1 2 2 2 3

3 1 3 2

4 1

5

11 вариант

5 5 5 5 5

1 1 1 1

0 0 0 0

5 5 5 5

1 1 1

0 0 0

5 5 5

1 1

0 0

5 5

1

0

5

12 вариант

1

0

2 2

0 0

3 3 3

0 0 0

4 4 4 4

0 0 0 0

5 5 5 5 5

0 0 0 0 0

Программирование разветвляющихся и циклических алгоритмов Примеры задач

Пример 1

Разберем пример перевода блок-схемы в код языка Паскаль. Пусть дана следующая блок-схема:

  1. Определим вид алгоритма: 3 блок – содержит проверку условия, следовательно алгоритм является разветвленным, оператор 7 содержит проверку условия, после чего есть возвратная стрелка на оператор 3, следовательно алгоритм содержит цикл.

  2. Параметром цикла является переменная Т. В блоке 2 определяется ее начальное значение (Т=1), в блоке 6 – дается приращение (+1), в блоке 7 – проверка на выход из цикла (≤10). По данному представлению делаем вывод о том, что для кодирования данного вида цикла используем оператор FOR-TO.

  3. Для проверки условия блока 3 используем условный оператор IF, причем, блок 4 выполняется только если условие 3 выполнено, а блок 5 должен выполнится в любом случае, делаем вывод, что для кодирования используем форму оператора IF-THEN.

  4. Итак, имеем следующую программу:

//---------------------------------------------------------------------------

#include <vcl.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

int c =2, b =0,t = 1;

for (t; t <= 10; t++)

{

if (c % 3 == 0)

{

b += 2 * t;

b++;

c++;

}

else

{

b++;

c++;

}

}

printf ("t = %2d b = %2d c = %2d",t,b,c);

getch();

return 0;

}

//---------------------------------------------------------------------------

Результат работы программы:

T=10 B=40 C=12

Пример 2

Вычислить приближенно значение бесконечной суммы с заданной точностью ε. Определить, за сколько шагов были произведены вычисления. Получить результат для разных степеней точности.

Примечание: Точность считается достигнутой, если очередное слагаемое оказалось по модулю меньше, чем ε.

//---------------------------------------------------------------------------

#include <vcl.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

do

{

printf("\nVvrdite pogreshnost'\n");

float eps =0.0;

scanf ("%f", &eps);

printf("Vvedite argument\n");

float x = 0.0;

scanf ("%f", &x);

int k = 0;

float a = -1;

float summa = a, fact =1.0;

while (fabs(a) > eps)

{

k++;

fact = 1;

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

a = 1;

for (int i = 1; i <= 4*k; a *= (x/3), i++);

a /= fact;

if ((k+1) % 2 != 0)

{

a = -a;

}

summa += a;

}

printf ("Resultat = %10.5f poluchen za %3d shaga (ov)\n", summa,k);

}

while (getch() != 27);

return 0;

}

//---------------------------------------------------------------------------

Результат работы программы:

Введите погрешность

0.001

Введите аргумент

2

Результат= 0.90285 получен за 3 шаг.

Введите погрешность

0.01

Введите аргумент

2

Результат= 0.90286 получен за 2 шаг.

Введите погрешность

0.1

Введите аргумент

2

Результат= 0.90123 получен за 1 шаг.